Планирование и проверка типов данных Health Connect

Health Connect хранит и структурирует данные о здоровье и фитнесе. Он также учитывает, как измеряются различные типы данных. К этим типам данных относятся измерения сердечного ритма, выполненные сразу, подсчет шагов с течением времени, а также данные о сне, полученные во время сеансов.

Прежде всего важно понять, какие типы данных и разрешения предлагает Health Connect, чтобы вы могли спланировать требования своего приложения. При этом вам необходимо просмотреть типы данных, прежде чем вы сможете окончательно определить свои требования.

Категории типов данных

Health Connect поддерживает типы данных, которые используются в большинстве приложений для здоровья и фитнеса, чтобы обеспечить максимальное разнообразие. Health Connect стремится предложить комплексный просмотр и хранение данных о здоровье и фитнесе. Эти типы данных делятся на следующие категории:

  • Активность. Здесь фиксируются любые действия пользователя. Это может включать в себя оздоровительные и фитнес-мероприятия, такие как бег и плавание.
  • Измерение тела: сюда фиксируются общие данные, относящиеся к телу, такие как вес пользователя и уровень его основного обмена.
  • Отслеживание цикла: фиксирует менструальные циклы и связанные с ними данные, такие как двоичный результат теста на овуляцию.
  • Питание: здесь фиксируются типы данных об гидратации и питании. Первый показывает, сколько воды пользователь потребляет за один напиток. Последний включает необязательные поля, такие как калории, сахар и магний.
  • Сон: здесь собираются данные об интервалах, связанные с продолжительностью и типом сна пользователя.
  • Vitals: собирает важную информацию об общем состоянии здоровья пользователя. Он включает в себя такие данные, как температура тела, уровень глюкозы в крови, артериальное давление и насыщение крови кислородом.

Формат типа данных

Типы данных в Health Connect хранятся в объектах, которые являются подклассами Record .

Для каждого типа данных существуют связанные поля, которые являются либо общими, например time и zoneOffset , либо конкретными, например title , count и percentage . Некоторые поля используют простые типы, такие как long, double или string, тогда как другие используют сложные типы, такие как перечисления и классы, такие как Instant и ZoneOffset . Атрибуты этих полей могут быть обязательными или необязательными. Некоторые атрибуты доступны только для чтения, а некоторые атрибуты привязаны к определенному диапазону значений.

Полный список доступных типов данных и их полей см. в классах Jetpack .

Дополнительные атрибуты данных

Данные в Health Connect API также включают атрибуты метаданных , описанные в следующем списке:

  • Health Connect ID: каждой точке данных при создании присваивается уникальный идентификатор (UID). Это полезно для стандартных операций чтения и записи. Дополнительную информацию см. в разделе «Идентификатор Health Connect» .
  • Время последнего изменения: это отметка времени последнего экземпляра обновления записи. Он автоматически генерируется при первом создании записи или при каждом обновлении.
  • Источник данных: Health Connect хранит информацию о приложении, из которого поступили данные. Он содержит имя пакета этого источника, которое автоматически добавляется при создании.
  • Устройство: Health Connect хранит информацию об устройстве, с которого поступили данные. Он содержит производителя и модель устройства, значение которого вы указываете вручную.
  • Идентификатор клиента: Health Connect предоставляет идентификаторы клиента, чтобы клиентские приложения могли обращаться к данным, используя свои собственные идентификаторы, что помогает разрешать конфликты и упрощает синхронизацию. Это подается в запись вручную.
  • Версия записи клиента. Наряду с идентификатором клиента Health Connect обеспечивает управление версиями, помогающее отслеживать изменения во время синхронизации данных. Это подается в запись вручную.
  • Метод записи: Health Connect позволяет понять, как записываются данные. Эти методы включают в себя пассивную запись данных приложениями (автоматически), а также активную или ручную запись данных пользователями.

Идентификатор Health Connect

Health Connect присваивает уникальные идентификаторы (UID) вновь вставленным объектам данных, которые идентифицируют объекты данных и отличают их от других. Идентификаторы Health Connect полезны в запросах на чтение или запись. Идентификаторы Health Connect не идентичны идентификаторам клиентов. Клиентское приложение назначает идентификаторы клиента, а Health Connect назначает исключительно идентификаторы Health Connect.

При работе с идентификаторами Health Connect помните следующие примечания:

  • Сеансы имеют один идентификатор Health Connect, но данные внутри сеансов имеют свои собственные идентификаторы Health Connect.
  • Идентификаторы Health Connect не привязаны к временным меткам.
  • В некоторых случаях использования может потребоваться сохранение определенного идентификатора Health Connect во время рабочего процесса. Например, для получения и показа пользователю только что зарегистрированной записи данных требуется определенный идентификатор.

Время в Health Connect

Все данные, записываемые в Health Connect, должны содержать информацию о смещении зоны. Указание смещения зоны позволяет приложениям считывать данные для их представления в гражданском времени. Гражданское время — это время, которое является местным и актуальным для пользователя, но не обязательно соответствует всемирному координированному времени (UTC).

В редких случаях смещение зоны может быть недоступно. Когда это происходит в Android 14 (уровень API 34), Health Connect устанавливает смещение зоны на основе часового пояса системы по умолчанию для устройства. В версиях Android 13 и более ранних версиях (уровень API 33 и более ранние) можно писать в Health Connect без указания какой-либо информации о смещении зоны, чего следует избегать, когда это возможно.

Настройка времени и зоны

Указание информации о смещении зоны во время записи данных предоставляет информацию о часовом поясе при чтении данных в Health Connect. Однако в определенных ситуациях это может оказаться невозможным, например, когда смещение зоны не указано. Ваше приложение должно быть подготовлено к работе с обоими типами данных таким образом, чтобы это соответствовало вашим конкретным обстоятельствам.

Разрешения

Прежде чем запрашивать какие-либо разрешения, ваше приложение должно сначала объявить их в манифесте. В следующих таблицах представлено полное сопоставление типов данных и их разрешений.

Для 1.0.0-альфа10 и выше

Тип класса записи Чтение и написание декларации о разрешении
АктивныеКалорииСожжено android.permission.health.READ_ACTIVE_CALORIES_BURNED
android.permission.health.WRITE_ACTIVE_CALORIES_BURNED
БазальнаяТемпература Тела android.permission.health.READ_BASAL_BODY_TEMPERATURE
android.permission.health.WRITE_BASAL_BODY_TEMPERATURE
Базальная скорость метаболизма android.permission.health.READ_BASAL_METABOLIC_RATE
android.permission.health.WRITE_BASAL_METABOLIC_RATE
КровьГлюкоза android.permission.health.READ_BLOOD_GLUCOSE
android.permission.health.WRITE_BLOOD_GLUCOSE
Артериальное давление android.permission.health.READ_BLOOD_PRESSURE
android.permission.health.WRITE_BLOOD_PRESSURE
ТелоЖир android.permission.health.READ_BODY_FAT
android.permission.health.WRITE_BODY_FAT
Температура тела android.permission.health.READ_BODY_TEMPERATURE
android.permission.health.WRITE_BODY_TEMPERATURE
ТелоВодаМасса android.permission.health.READ_BODY_WATER_MASS
android.permission.health.WRITE_BODY_WATER_MASS
костная масса android.permission.health.READ_BONE_MASS
android.permission.health.WRITE_BONE_MASS
ЦервикальнаяСлизь android.permission.health.READ_CERVICAL_MUCUS
android.permission.health.WRITE_CERVICAL_MUCUS
ВелоспортПедалиКаденция android.permission.health.READ_EXERCISE
android.permission.health.WRITE_EXERCISE
Расстояние android.permission.health.READ_DISTANCE
android.permission.health.WRITE_DISTANCE
Высота получена android.permission.health.READ_ELEVATION_GAINED
android.permission.health.WRITE_ELEVATION_GAINED
Сеанс упражнений android.permission.health.READ_EXERCISE
android.permission.health.WRITE_EXERCISE
ПолыПоднялись android.permission.health.READ_FLOORS_CLIMBED
android.permission.health.WRITE_FLOORS_CLIMBED
Частота сердечных сокращений android.permission.health.READ_HEART_RATE
android.permission.health.WRITE_HEART_RATE
Частота сердечных сокращенийВариабельностьRmssd android.permission.health.READ_HEART_RATE_VARIABILITY
android.permission.health.WRITE_HEART_RATE_VARIABILITY
Высота android.permission.health.READ_HEIGHT
android.permission.health.WRITE_HEIGHT
Увлажнение android.permission.health.READ_HYDRATION
android.permission.health.WRITE_HYDRATION
Межменструальноекровотечение android.permission.health.READ_INTERMENSTRUAL_BLEEDING
android.permission.health.WRITE_INTERMENSTRUAL_BLEEDING
СухойТелоМасса android.permission.health.READ_LEAN_BODY_MASS
android.permission.health.WRITE_LEAN_BODY_MASS
МенструацияПоток android.permission.health.READ_MENSTRUATION
android.permission.health.WRITE_MENSTRUATION
МенструацияПериод android.permission.health.READ_MENSTRUATION
android.permission.health.WRITE_MENSTRUATION
Питание android.permission.health.READ_NUTRITION
android.permission.health.WRITE_NUTRITION
Тест на овуляцию android.permission.health.READ_OVULATION_TEST
android.permission.health.WRITE_OVULATION_TEST
Насыщение кислородом android.permission.health.READ_OXYGEN_SATURATION
android.permission.health.WRITE_OXYGEN_SATURATION
ЗапланированноеУпражнение android.permission.health.READ_PLANNED_EXERCISE
android.permission.health.WRITE_PLANNED_EXERCISE
Власть android.permission.health.READ_POWER
android.permission.health.WRITE_POWER
Частота дыхания android.permission.health.READ_RESPIRATORY_RATE
android.permission.health.WRITE_RESPIRATORY_RATE
Пульс в покое android.permission.health.READ_RESTING_HEART_RATE
android.permission.health.WRITE_RESTING_HEART_RATE
Сексуальная активность android.permission.health.READ_SEXUAL_ACTIVITY
android.permission.health.WRITE_SEXUAL_ACTIVITY
Температура кожи androidx.health.permission.SkinTemperature.READ
androidx.health.permission.SkinTemperature.WRITE
SleepSession android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP
Скорость android.permission.health.READ_SPEED
android.permission.health.WRITE_SPEED
ШагиКаденция android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS
Шаги android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS
Всего калорий сожжено android.permission.health.READ_TOTAL_CALORIES_BURNED
android.permission.health.WRITE_TOTAL_CALORIES_BURNED
Vo2Макс android.permission.health.READ_VO2_MAX
android.permission.health.WRITE_VO2_MAX
Масса android.permission.health.READ_WEIGHT
android.permission.health.WRITE_WEIGHT
Инвалидная КоляскаТолкает android.permission.health.READ_WHEELCHAIR_PUSHES
android.permission.health.WRITE_WHEELCHAIR_PUSHES

Для 1.0.0-alpha09 и ниже

Тип класса записи Чтение и запись декларации о разрешении
АктивныеКалорииСожжено androidx.health.permission.ActiveCaloriesBurned.READ
androidx.health.permission.ActiveCaloriesBurned.WRITE
БазальнаяТемпература Тела androidx.health.permission.BasalBodyTemperature.READ
androidx.health.permission.BasalBodyTemperature.WRITE
Базальная скорость метаболизма androidx.health.permission.BasalMetabolicRate.READ
androidx.health.permission.BasalMetabolicRate.WRITE
КровьГлюкоза androidx.health.permission.BloodGlucose.READ
androidx.health.permission.BloodGlucose.WRITE
Артериальное давление androidx.health.permission.BloodPressure.READ
androidx.health.permission.BloodPressure.WRITE
ТелоЖир androidx.health.permission.BodyFat.READ
androidx.health.permission.BodyFat.WRITE
Температура тела androidx.health.permission.BodyTemperature.READ
androidx.health.permission.BodyTemperature.WRITE
ТелоВодаМасса androidx.health.permission.BodyWaterMass.READ
androidx.health.permission.BodyWaterMass.WRITE
костная масса androidx.health.permission.BoneMass.READ
androidx.health.permission.BoneMass.WRITE
ЦервикальнаяСлизь androidx.health.permission.CervicalMucus.READ
androidx.health.permission.CervicalMucus.WRITE
ВелоспортПедалиКаденция androidx.health.permission.CyclingPedalingCadence.READ
androidx.health.permission.CyclingPedalingCadence.WRITE
Расстояние androidx.health.permission.Distance.READ
androidx.health.permission.Distance.WRITE
Высота получена androidx.health.permission.ElevationGained.READ
androidx.health.permission.ElevationGained.WRITE
Сеанс упражнений androidx.health.permission.ExercisionSession.READ
androidx.health.permission.ExercisionSession.WRITE
ПолыПоднялись androidx.health.permission.FloorsClimbed.READ
androidx.health.permission.FloorsClimbed.WRITE
Частота сердечных сокращений androidx.health.permission.HeartRate.READ
androidx.health.permission.HeartRate.WRITE
Частота сердечных сокращенийВариабельностьRmssd androidx.health.permission.HeartRateVariabilityRmssd.READ
androidx.health.permission.HeartRateVariabilityRmssd.WRITE
Высота androidx.health.permission.Height.READ
androidx.health.permission.Height.WRITE
Увлажнение androidx.health.permission.Hydration.READ
androidx.health.permission.Hydration.WRITE
Межменструальноекровотечение androidx.health.permission.IntermenstrualBleeding.READ
androidx.health.permission.IntermenstrualBleeding.WRITE
СухойТелоМасса androidx.health.permission.LeanBodyMass.READ
androidx.health.permission.LeanBodyMass.WRITE
МенструацияПоток androidx.health.permission.MenstruationFlow.READ
androidx.health.permission.MenstruationFlow.WRITE
Питание androidx.health.permission.Nutrition.READ
androidx.health.permission.Nutrition.WRITE
Тест на овуляцию androidx.health.permission.OvulationTest.READ
androidx.health.permission.OvulationTest.WRITE
Насыщение кислородом androidx.health.permission.OxygenSaturation.READ
androidx.health.permission.OxygenSaturation.WRITE
Власть androidx.health.permission.Power.READ
androidx.health.permission.Power.WRITE
Частота дыхания androidx.health.permission.RespiratoryRate.READ
androidx.health.permission.RespiratoryRate.WRITE
Пульс в покое androidx.health.permission.RestingHeartRate.READ
androidx.health.permission.RestingHeartRate.WRITE
Сексуальная активность androidx.health.permission.SexualActivity.READ
androidx.health.permission.SexualActivity.WRITE
SleepSession androidx.health.permission.SleepSession.READ
androidx.health.permission.SleepSession.WRITE
Скорость androidx.health.permission.Speed.READ
androidx.health.permission.Speed.WRITE
ШагиКаденция androidx.health.permission.StepsCadence.READ
androidx.health.permission.StepsCadence.WRITE
Шаги androidx.health.permission.Steps.READ
androidx.health.permission.Steps.WRITE
Всего калорий сожжено androidx.health.permission.TotalCaloriesBurned.READ
androidx.health.permission.TotalCaloriesBurned.WRITE
Vo2Макс androidx.health.permission.Vo2Max.READ
androidx.health.permission.Vo2Max.WRITE
Масса androidx.health.permission.Weight.READ
androidx.health.permission.Weight.WRITE
Инвалидная КоляскаТолкает androidx.health.permission.WheelchairPushes.READ
androidx.health.permission.WheelchairPushes.WRITE

Просмотрите типы данных и разрешения

Теперь, когда у вас запланированы типы данных и разрешения, вы можете реализовать их во время разработки .

Просматривая свое приложение перед загрузкой его в Play Store, дважды проверьте список типов данных и разрешений, которые требуются вашему приложению. Это позволит вам точно указать использование данных вашим приложением .

Готовясь опубликовать свое приложение в Play Store, объявите доступ к типам данных Health Connect , которые использует ваше приложение. В противном случае пользователям может быть предложено сообщение об ошибке, в котором ваше приложение не может получить доступ к типам данных Health Connect, поскольку они требуют специального разрешения.