Планирование и проверка типов данных 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 .

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

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

  • Идентификатор Health Connect: Каждой точке данных при создании присваивается уникальный идентификатор (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, должны содержать информацию о смещении часового пояса. Указание смещения часового пояса позволяет приложениям считывать данные и отображать их в гражданском времени. Гражданское время — это местное время, актуальное для пользователя, но не обязательно в формате UTC.

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

Настройка времени и пояса

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

Разрешения

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

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

Ссылка на разрешение Прочитать декларацию о разрешении
Фоновые чтения android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND
История гласит android.permission.health.READ_HEALTH_DATA_HISTORY

Тип класса записи Декларация о разрешении на чтение и запись
АктивныеСожженныеКалории 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
BodyFat android.permission.health.READ_BODY_FAT
android.permission.health.WRITE_BODY_FAT
Температура тела android.permission.health.READ_BODY_TEMPERATURE
android.permission.health.WRITE_BODY_TEMPERATURE
BodyWaterMass android.permission.health.READ_BODY_WATER_MASS
android.permission.health.WRITE_BODY_WATER_MASS
BoneMass 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.READ_EXERCISE_ROUTE
android.permission.health.WRITE_EXERCISE
android.permission.health.WRITE_EXERCISE_ROUTE

Тип упражнения

EXERCISE_TYPE_BIKING
EXERCISE_TYPE_BIKING_HAND
EXERCISE_TYPE_BIKING_MOUNTAIN
EXERCISE_TYPE_BIKING_ROAD
EXERCISE_TYPE_BIKING_SPINNING
EXERCISE_TYPE_BIKING_STATIONARY
EXERCISE_TYPE_BIKING_UTURN
EXERCISE_TYPE_CANOEING
EXERCISE_TYPE_CROSSFIT
EXERCISE_TYPE_DANCING
EXERCISE_TYPE_ELLIPTICAL
EXERCISE_TYPE_GOLF
EXERCISE_TYPE_HORSEBACK_RIDING
EXERCISE_TYPE_KAYAKING
EXERCISE_TYPE_KICKBOXING
EXERCISE_TYPE_MARTIAL_ARTS
EXERCISE_TYPE_PILATES
EXERCISE_TYPE_ROLLERBLADING
EXERCISE_TYPE_RUNNING
EXERCISE_TYPE_RUNNING_JOGGING
EXERCISE_TYPE_RUNNING_SAND
Пройденные этажи 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
LeanBodyMass android.permission.health.READ_LEAN_BODY_MASS
android.permission.health.WRITE_LEAN_BODY_MASS
MenstruationFlow android.permission.health.READ_MENSTRUATION
android.permission.health.WRITE_MENSTRUATION
Сеанс осознанности android.permission.health.READ_MINDFULNESS
android.permission.health.WRITE_MINDFULNESS
Питание 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
Температура кожи android.permission.health.READ_SKIN_TEMPERATURE
android.permission.health.WRITE_SKIN_TEMPERATURE
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
VO2Max 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
BodyFat androidx.health.permission.BodyFat.READ
androidx.health.permission.BodyFat.WRITE
Температура тела androidx.health.permission.BodyTemperature.READ
androidx.health.permission.BodyTemperature.WRITE
BodyWaterMass androidx.health.permission.BodyWaterMass.READ
androidx.health.permission.BodyWaterMass.WRITE
BoneMass androidx.health.permission.BoneMass.READ
androidx.health.permission.BoneMass.WRITE
Цервикальная слизь androidx.health.permission.CervicalMucus.READ
androidx.health.permission.CervicalMucus.WRITE
ВелоспортПедалированиеКаденция androidx.health.permission.Exercise.READ
androidx.health.permission.Exercise.WRITE
Расстояние androidx.health.permission.Distance.READ
androidx.health.permission.Distance.WRITE
Набранная высота androidx.health.permission.ElevationGained.READ
androidx.health.permission.ElevationGained.WRITE
УпражнениеСессия androidx.health.permission.ExerciseSession.READ
androidx.health.permission.ExerciseSession.WRITE

Тип упражнения

EXERCISE_TYPE_BIKING
EXERCISE_TYPE_BIKING_HAND
EXERCISE_TYPE_BIKING_MOUNTAIN
EXERCISE_TYPE_BIKING_ROAD
EXERCISE_TYPE_BIKING_SPINNING
EXERCISE_TYPE_BIKING_STATIONARY
EXERCISE_TYPE_BIKING_UTURN
EXERCISE_TYPE_CANOEING
EXERCISE_TYPE_CROSSFIT
EXERCISE_TYPE_DANCING
EXERCISE_TYPE_ELLIPTICAL
EXERCISE_TYPE_GOLF
EXERCISE_TYPE_HORSEBACK_RIDING
EXERCISE_TYPE_KAYAKING
EXERCISE_TYPE_KICKBOXING
EXERCISE_TYPE_MARTIAL_ARTS
EXERCISE_TYPE_PILATES
EXERCISE_TYPE_ROLLERBLADING
EXERCISE_TYPE_RUNNING
EXERCISE_TYPE_RUNNING_JOGGING
EXERCISE_TYPE_RUNNING_SAND
Пройденные этажи androidx.health.permission.FloorsClimbed.READ
androidx.health.permission.FloorsClimbed.WRITE
Частота сердечных сокращений androidx.health.permission.HeartRate.READ
androidx.health.permission.HeartRate.WRITE
Вариабельность сердечного ритма (Rmssd) androidx.health.permission.HeartRateVariability.READ
androidx.health.permission.HeartRateVariability.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
LeanBodyMass androidx.health.permission.LeanBodyMass.READ
androidx.health.permission.LeanBodyMass.WRITE
MenstruationFlow androidx.health.permission.Menstruation.READ
androidx.health.permission.Menstruation.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.PlannedExerciseSession.READ
androidx.health.permission.PlannedExerciseSession.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.Steps.READ
androidx.health.permission.Steps.WRITE
ШагиКаденция androidx.health.permission.Steps.READ
androidx.health.permission.Steps.WRITE
Общее количество сожженных калорий androidx.health.permission.TotalCaloriesBurned.READ
androidx.health.permission.TotalCaloriesBurned.WRITE
VO2Max 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 Маркет дважды проверьте список типов данных и разрешений, требуемых вашему приложению. Это позволит вам точно указать, какие данные использует ваше приложение .

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