Почему Google Fit не возвращает все веса?

Я использую приложение для Android, которое извлекает вес пользователя для заданного диапазона времени. Пользователь может вручную синхронизировать его для заданного дня, и он будет использовать мм/дд/гггг 00:00:00 и мм/дд/гггг 23:59:59:999. В большинстве случаев это работает правильно, однако у меня есть рабочий процесс, который, кажется, нарушает его. У меня есть весы Wi-Fi, на которых я буду взвешиваться, а затем я синхронизирую эти веса с MyFitnessPal. Затем я синхронизирую MyFitnessPal с Google Fit. Кажется, эта интеграция работает, так как мой вес правильно отображается в Google Fit. Однако MyFitnessPal, похоже, сохраняет только дату взвешивания, а не время. Когда я запускаю процесс ручной синхронизации для этого приложения для Android в тот же день, когда произошло взвешивание, он не возвращает вес.

Я пытался получить данные как с Android, так и с Google API Explorer. Я могу получить прошлые веса, изменив startTimeMillis, но я не могу получить вес на текущую дату. Это как если бы вес на телефоне не синхронизировался с хранилищем данных Google Fit, но даже если бы это было так, я бы ожидал, что приложение для Android получит вес.

Java-код:

DataReadRequest.Builder()
        .aggregate(DataType.TYPE_WEIGHT, DataType.AGGREGATE_WEIGHT_SUMMARY)
        .bucketByTime(1, TimeUnit.DAYS)
        .setTimeRange(startMillis, endMillis, TimeUnit.MILLISECONDS)
        .enableServerQueries()
        .build()

Вызов проводника API:

{
 "aggregateBy": [
  {
   "dataSourceId": "derived:com.google.weight:com.google.android.gms:merge_weight"
  }
 ],
 "endTimeMillis": "1560488399999",
 "startTimeMillis": "1560402000000"
}

Мои результаты из API Explorer здесь:

{
 "bucket": [
  {
   "startTimeMillis": "1560402000000",
   "endTimeMillis": "1560488399999",
   "dataset": [
    {
     "dataSourceId": "derived:com.google.weight:com.google.android.gms:merge_weight",
     "point": [
     ]
    }
   ]
  }
 ]
}

Я ожидаю, что вес будет указан, поскольку существует вес для этого свойства startTimeMillis (1560402000000 миллисекунд, начиная с четверга, 13 июня, 00:00 по местному времени) в моем приложение Google Fit. Дата для указанного веса — четверг, 13 июня, 00:00, однако API Explorer ничего не вернул.


person Lance    schedule 13.06.2019    source источник


Ответы (1)


Это возвращает максимальное, минимальное и среднее значение. Если вам нужно вернуть их все, тогда пользователь "read(DataType.TYPE_WEIGHT)" вместо "агрегат"

person omzer    schedule 30.03.2020