Health Connect по-прежнему предоставляет данные там, где их не должно быть.
я пытаюсь собрать данные с 1 апреля 2023 г. по 30 апреля 2023 г., сегодня 20 апреля 2023 г., но Health Connect по-прежнему предоставляет данные за > 20 апреля 2023 г., вот так
я не знаю, откуда берутся данные, я просто синхронизирую данные Google Fit с Health Connect, когда я проверяю Health Connect, данных за > 20 апреля 2023 года нет, тот же случай, если, например, у меня нет данных за февраль, но Health Connect все еще предоставляет данные, я думаю, это значение по умолчанию? это мой код
override suspend fun getMonthlyHistoriesCalorie(parameter: GetMonthlyHistoriesCalorieParameter): GetMonthlyHistoriesCalorieResponse {
val result = mutableListOf<Double>()
if (isHealthConnectSDKAvailable(context)) {
val healthConnectClient = HealthConnectClient.getOrCreate(context)
val response = healthConnectClient.aggregateGroupByPeriod(
AggregateGroupByPeriodRequest(
metrics = setOf(TotalCaloriesBurnedRecord.ENERGY_TOTAL),
timeRangeFilter = TimeRangeFilter.between(
startTime = LocalDateTime.ofInstant(parameter.startDate, ZoneId.systemDefault()),
endTime = LocalDateTime.ofInstant(parameter.endDate, ZoneId.systemDefault())
),
timeRangeSlicer = Period.ofDays(1)
)
)
for (monthlyResult in response) {
val totalCalorieBurned =
monthlyResult.result[TotalCaloriesBurnedRecord.ENERGY_TOTAL]?.inKilocalories
if (totalCalorieBurned != null) {
result.add(totalCalorieBurned)
}
}
}
return GetMonthlyHistoriesCalorieResponse(
histories = result,
period = DateTimeFormatter.ofPattern("MMMM yyyy").withZone(ZoneId.systemDefault())
.format(parameter.endDate),
total = result.sum()
)
}
это происходит только с типом данных TotalCalorieBurned и использованием агрегата. Другой пример: когда я установил дату на декабрь 2022 года (здесь нет данных) и проверяю данные в приложении Health Connect с той же датой, данных нет.
но когда я краснею в своем приложении, данные о здоровье подключаются
моя версия Health Connectandroidx.health.connect:connect-client:1.0.0-alpha11
1 ответ
я обнаружил проблему: когда я проверил «dataOrigins», я обнаружил неизвестное происхождение данных с именем пакета __platform
я решаю эту проблему, отфильтровав данные следующим образом
for (dataOrigins in weeklyResult.result.dataOrigins){
if (dataOrigins.packageName == DataOrigins.GoogleFit.packageName)
// code here
}