Android Health Connect дает очень странные ответыAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Health Connect дает очень странные ответы

Сообщение Anonymous »

Я начал изучать кроличью нору Android Health Connect, и все шло отлично, пока не начало давать странные результаты. В настоящее время я использую последнюю версию кандидата на выпуск 1.1.0-rc02 и могу нормально подключаться и запрашивать результаты.
Проблема в том, что когда я использую AggregateRequest, я получаю огромные числа, тогда как если я меняю его на ReadRecordsRequest, я вообще не получаю никаких результатов.
Вот что я имею в виду в коде.

Код: Выделить всё

suspend fun readCaloriesBurned(start: Instant, end: Instant): Energy {
val request = AggregateRequest(
metrics = setOf(TotalCaloriesBurnedRecord.ENERGY_TOTAL),
timeRangeFilter = TimeRangeFilter.between(start, end)
)
val response = healthConnectClient.aggregate(request)
Timber.d(response.toString())
return response[TotalCaloriesBurnedRecord.ENERGY_TOTAL] ?: Energy.calories(0.0)
}
Теперь, когда я запускаю это, я вижу это в консоли...

Код: Выделить всё

AggregationResult(longValues={}, doubleValues={TotalCaloriesBurned_energy_total=1632.6842894415279}, dataOrigins=[])
Показывает, что за этот период времени было сожжено в общей сложности 1632 ккал (что абсолютно неверно).
Теперь, если я изменю этот запрос (сохраню те же даты начала и окончания, но изменю тип запроса), я получу совершенно другой результат...

Код: Выделить всё

suspend fun readCaloriesBurned(start: Instant, end: Instant): Energy {
val request = ReadRecordsRequest(
recordType = TotalCaloriesBurnedRecord::class,
timeRangeFilter = TimeRangeFilter.between(start, end)
)
val response = healthConnectClient.readRecords(request)
Timber.d("How many records are there? ${response.records.size}")
Timber.d(response.records.toString())
return Energy.calories(0.0)
}
Теперь, если я запущу это, в консоли я увижу...

Код: Выделить всё

How many records are there? 0
[]
Таким образом, при составлении агрегата за сегодняшний день (с начала дня по текущий момент) говорится, что я сжег в общей сложности более 1 миллиона калорий, однако при выполнении запроса на чтение записей сообщается, что за тот же период времени (начало дня и текущий момент) записей вообще нет.
Я пытаюсь выяснить, как я могу это согласовать. Нужно ли мне полностью отказаться от совокупных запросов и буквально только forEach в запросе на чтение записей? Почему в совокупном запросе указано, что я сжег более миллиона калорий, а в запросе записей указано, что записей нет?

Подробнее здесь: https://stackoverflow.com/questions/796 ... -responses
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»