Google Fit SessionsApi не возвращает все сеансы за временной диапазон

Как-то зашел в тупик с Google Fit Android SDK. В настоящее время я создаю приложение, которое считывает, отображает и обрабатывает данные из Google Fit, чтобы дать пользователям представление об их поведении на тренировках.

Моя ситуация такова: раньше я тестировал на Google Pixel - все было нормально и все (более 20) сеансов получил от Google Fit. Неделю назад я перешел на HTC10 - на этом устройстве я получаю только 4 (!) Сеанса от Google Fit - то же приложение, тот же код, та же учетная запись Google Fit (в приложении Google Fit я все еще могу видеть все тренировки и занятия). Сеансы, которые я пытаюсь прочитать, были созданы не в моем приложении, а в самом приложении Google Fit. Но все же на старом телефоне я их мог прочитать, на новом не могу.

Позвольте мне вставить код для большей ясности.

Настройка GoogleApiClient

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))

После подключения подписываюсь на несколько 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()

Чтение сессий:

       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
       }

Любая помощь будет оценена.


person damian    schedule 02.10.2017    source источник
comment
каково поведение на другом устройстве, кроме Google Pixel и HTC?   -  person AADProgramming    schedule 26.10.2017
comment
Я еще не тестировал его на третьем устройстве, так как я бы ожидал, что данные будут согласованы на двух устройствах в любом случае ..   -  person damian    schedule 27.10.2017


Ответы (1)


API Google fit возвращает данные только из локального кеша, он будет возвращать данные между двумя датами, которые вы запрашиваете и которые доступны в приложении Google-Fit.

person Manu    schedule 27.10.2017
comment
Это то, для чего enableServerQueries() - теперь использовать только локальный кеш, но также и данные из Google Fit API. - person damian; 27.10.2017