2017-10-02 26 views
9

Bằng cách nào đó, tôi đã gặp phải một kết thúc chết với SDK Android của Google Fit. Hiện tại tôi đang xây dựng một ứng dụng đọc, hiển thị và xử lý dữ liệu từ Google Fit để cung cấp cho người dùng thông tin chi tiết về hành vi tập luyện của họ.Phiên Google FitApi không trả lại tất cả các phiên trong phạm vi thời gian

Tình huống của tôi như sau: Tôi đã từng thử nghiệm trên Google Pixel - mọi thứ đều ổn và tôi đã nhận được tất cả (hơn 20) phiên từ Google Fit. Cách đây một tuần, tôi đã chuyển sang HTC10 - trên thiết bị này, tôi chỉ nhận được 4 (!) Phiên từ Google Fit - cùng một ứng dụng, cùng mã, cùng một tài khoản Google Fit (trong ứng dụng Google Fit Tôi vẫn có thể thấy tất cả các bài tập và phiên). Các phiên tôi đang cố gắng đọc không được tạo bằng ứng dụng của tôi, mà thay vào đó là với chính ứng dụng Google Fit. Nhưng vẫn còn, trên điện thoại cũ tôi có thể đọc chúng, trên cái mới tôi không thể.

Hãy để tôi dán một số mã để làm rõ thêm.

GoogleApiClient Set-Up

googleApiClient = GoogleApiClient.Builder(context) 
    .addApi(Fitness.HISTORY_API) 
    .addApi(Fitness.SESSIONS_API) 
    .addApi(Fitness.RECORDING_API) 
    .addApi(Fitness.GOALS_API) 
    .addScope(Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) 
    .addScope(Scope(Scopes.FITNESS_BODY_READ_WRITE)) 

Sau khi kết nối, tôi đăng ký vào nhiều RecordingApis (TYPE_WORKOUT_EXERCISE, TYPE_WEIGHT, TYPE_CALORIES_EXPENDED)

SessionReadRequest:

val sessionRequest = SessionReadRequest.Builder() 
       .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS) 
       .read(DataType.TYPE_WORKOUT_EXERCISE) 
       .readSessionsFromAllApps() 
       .enableServerQueries() 
       .build() 

Reading theo buổi:

 Fitness.SessionsApi.readSession(googleApiClient, sessionRequest) 
     .setResultCallback { result -> 
      Timber.d("Sessions result: %s", result.status) 
       Timber.d("Got %d sessions", result.sessions.size) // returns only 4! for 2014-NOW timerange 
     } 

Mọi trợ giúp sẽ được đánh giá cao.

+0

hành vi trên thiết bị khác bên cạnh Google Pixel và HTC là gì? – AADProgramming

+0

Chưa thử nghiệm trên thiết bị thứ ba, vì tôi mong đợi dữ liệu nhất quán trên hai thiết bị .. – damian

Trả lời

0

Google fit api chỉ trả về dữ liệu từ bộ nhớ cache cục bộ, nó sẽ trả về dữ liệu giữa hai ngày bạn yêu cầu và có sẵn trong ứng dụng Google Fit.

+0

Đó là những gì 'enableServerQueries()' là cho - bây giờ chỉ sử dụng bộ nhớ cache cục bộ mà còn dữ liệu từ API Google Fit. – damian

Các vấn đề liên quan