Уровни глюкозы равны 0 при добавлении ручного ввода в Android Health Connect.Android

Форум для тех, кто программирует под Android
Anonymous
Уровни глюкозы равны 0 при добавлении ручного ввода в Android Health Connect.

Сообщение Anonymous »

Я пытаюсь научиться синхронизировать информацию с Android Health Connect, и мне казалось, что все идет хорошо, но всякий раз, когда я получаю записи, которые ввожу вручную, уровень всегда равен 0,0, и я не могу понять, почему.
Я постараюсь максимально упростить свой код, поскольку я использую специальные перечисления MealType и MealRelation, а затем перед сохранением правильно привожу их к эквиваленту здоровья Android.
/>Мой HealthConnectManager:

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

class HealthConnectManager(private val context: Context) {
val healthConnectClient by lazy { HealthConnectClient.getOrCreate(context) }

// Checking availability and permissions (they're all good)
suspend fun insertReading(glucose: Double, type: LocalMealType, relation: MealRelation) {
val record = BloodGlucoseRecord(
time = Instant.now(),
zoneOffset = ZoneOffset.UTC,
level = BloodGlucose.milligramsPerDeciliter(glucose),
metadata = Metadata.manualEntry(clientRecordId = UUID.randomUUID().toString()),
mealType = Utils.getSavableMealType(type),
relationToMeal = Utils.getSavableRelation(relation),
)
healthConnectClient.insertRecords(listOf(record))
}

suspend inline fun  readData(
timeFilter: TimeRangeFilter,
dataOriginFilter: Set = setOf(),
): List {
val request = ReadRecordsRequest(
recordType = T::class,
dataOriginFilter = dataOriginFilter,
timeRangeFilter = timeFilter,
)
return healthConnectClient.readRecords(request).records
}
}
Для ясности, вот преобразования Utils для моих LocalMealType и MealRelation

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

enum class LocalMealType {
Unknown, Breakfast, Lunch, Dinner, Snack
}

enum class MealRelation {
Fasting, Unknown, General, AfterMeal, BeforeMeal
}

object Utils {
fun getSavableMealType(type: LocalMealType): Int {
return when (type) {
LocalMealType.Unknown -> MealType.MEAL_TYPE_UNKNOWN
LocalMealType.Breakfast -> MealType.MEAL_TYPE_BREAKFAST
LocalMealType.Lunch -> MealType.MEAL_TYPE_LUNCH
LocalMealType.Dinner -> MealType.MEAL_TYPE_DINNER
LocalMealType.Snack -> MealType.MEAL_TYPE_SNACK
}
}

fun getSavableRelation(type: MealRelation): Int {
return when (type) {
MealRelation.Fasting -> RELATION_TO_MEAL_FASTING
MealRelation.Unknown -> RELATION_TO_MEAL_UNKNOWN
MealRelation.General -> RELATION_TO_MEAL_GENERAL
MealRelation.AfterMeal -> RELATION_TO_MEAL_AFTER_MEAL
MealRelation.BeforeMeal -> RELATION_TO_MEAL_BEFORE_MEAL
}
}

// I do the same for converting the entries to my enums
}
Я делаю это, чтобы пользователям было проще выбирать тип еды и связь с ней.
Итак, теперь в моей HomeViewModel я просто вызываю функцию менеджеров InsertReading и передаю ей значения. Я жестко запрограммировал значения в следующей части просто для простоты...

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

fun writeNewEntry(value: Double, type: LocalMealType, relation: MealRelation) {
viewModelScope.launch {
tryWithPermissionsCheck {
manager.insertReading(86.0, LocalMealType.Lunch, MealRelation.BeforeMeal)
}
}
}
Все работает, запись добавляется в Android Health Connect. Однако, когда я загружаю приложение в следующий раз и получаю все показания от Android Health Connect, все уровни равны 0,0.
Я добавил функцию ведения журнала в менеджере readData, чтобы увидеть показания до того, как пользовательский интерфейс получит их, и он показывает все правильно, за исключением уровня 0,0. Вот что я вижу в logcat
Что читаете?

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

BloodGlucoseRecord(time=2026-04-0tT22:05:15.759Z, zoneOffset=Z, level=0.0 mmol/L, mealType=2, relationToMeal=3, metadata=Metadata(id=...)
Я пробовал разные типы еды и соотношения, просто чтобы убедиться, и даже пробовал понизить уровень с 86 до 40. Я вижу все показания в logcat, с правильным типом еды, соотношением еды, временными метками, все правильно, за исключением того, что уровень всегда 0,0.
Я надеюсь, что это просто какая-то глупая ошибка, которую я совершаю, и кто-то сразу увидит, как я уже сказал, я не очень знаком с этим Android Health Connect и пытаюсь изучить его сейчас. Спасибо за любую помощь, я ценю это.

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