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
}
Другие вопросы по тегам