Планирование и проверка типов данных 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_SESSION_TYPE_UNKNOWN
EXERCISE_SESSION_TYPE_BADMINTON
EXERCISE_SESSION_TYPE_BASEBALL
EXERCISE_SESSION_TYPE_BASKETBALL
EXERCISE_SESSION_TYPE_BIKING
EXERCISE_SESSION_TYPE_BIKING_STATIONARY
EXERCISE_SESSION_TYPE_BOOT_CAMP
EXERCISE_SESSION_TYPE_BOXING
EXERCISE_SESSION_TYPE_CALISTHENICS
EXERCISE_SESSION_TYPE_CRICKET
EXERCISE_SESSION_TYPE_DANCING
EXERCISE_SESSION_TYPE_ELLIPTICAL
EXERCISE_SESSION_TYPE_EXERCISE_CLASS
EXERCISE_SESSION_TYPE_FENCING
EXERCISE_SESSION_TYPE_FOOTBALL_AMERICAN
EXERCISE_SESSION_TYPE_FOOTBALL_AUSTRALIAN
EXERCISE_SESSION_TYPE_FRISBEE_DISC
EXERCISE_SESSION_TYPE_GOLF
EXERCISE_SESSION_TYPE_GUIDED_BREATHING
EXERCISE_SESSION_TYPE_GYMNASTICS
EXERCISE_SESSION_TYPE_HANDBALL
EXERCISE_SESSION_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
EXERCISE_SESSION_TYPE_HIKING
EXERCISE_SESSION_TYPE_ICE_HOCKEY
EXERCISE_SESSION_TYPE_ICE_SKATING
EXERCISE_SESSION_TYPE_MARTIAL_ARTS
EXERCISE_SESSION_TYPE_PADDLING
EXERCISE_SESSION_TYPE_PARAGLIDING
EXERCISE_SESSION_TYPE_PILATES
EXERCISE_SESSION_TYPE_RACQUETBALL
EXERCISE_SESSION_TYPE_ROCK_CLIMBING
EXERCISE_SESSION_TYPE_ROLLER_HOCKEY
EXERCISE_SESSION_TYPE_ROWING
EXERCISE_SESSION_TYPE_ROWING_MACHINE
EXERCISE_SESSION_TYPE_RUGBY
EXERCISE_SESSION_TYPE_RUNNING
EXERCISE_SESSION_TYPE_RUNNING_TREADMILL
EXERCISE_SESSION_TYPE_SAILING
EXERCISE_SESSION_TYPE_SCUBA_DIVING
EXERCISE_SESSION_TYPE_SKATING
EXERCISE_SESSION_TYPE_SKIING
EXERCISE_SESSION_TYPE_SNOWBOARDING
EXERCISE_SESSION_TYPE_SNOWSHOEING
EXERCISE_SESSION_TYPE_SOCCER
EXERCISE_SESSION_TYPE_SOFTBALL
EXERCISE_SESSION_TYPE_SQUASH
EXERCISE_SESSION_TYPE_STAIR_CLIMBING
EXERCISE_SESSION_TYPE_STAIR_CLIMBING_MACHINE
EXERCISE_SESSION_TYPE_STRENGTH_TRAINING
EXERCISE_SESSION_TYPE_STRETCHING
EXERCISE_SESSION_TYPE_SURFING
EXERCISE_SESSION_TYPE_SWIMMING_OPEN_WATER
EXERCISE_SESSION_TYPE_SWIMMING_POOL
EXERCISE_SESSION_TYPE_TABLE_TENNIS
EXERCISE_SESSION_TYPE_TENNIS
EXERCISE_SESSION_TYPE_VOLLEYBALL
EXERCISE_SESSION_TYPE_WALKING
EXERCISE_SESSION_TYPE_WATER_POLO
EXERCISE_SESSION_TYPE_WEIGHTLIFTING
EXERCISE_SESSION_TYPE_WHEELCHAIR
EXERCISE_SESSION_TYPE_OTHER_WORKOUT
EXERCISE_SESSION_TYPE_YOGA
Пройденные этажи 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_UNKNOWN
EXERCISE_TYPE_BADMINTON
EXERCISE_TYPE_BASEBALL
EXERCISE_TYPE_BASKETBALL
EXERCISE_TYPE_BIKING
EXERCISE_TYPE_BIKING_STATIONARY
EXERCISE_TYPE_BOOT_CAMP
EXERCISE_TYPE_BOXING
EXERCISE_TYPE_CALISTHENICS
EXERCISE_TYPE_CRICKET
EXERCISE_TYPE_DANCING
EXERCISE_TYPE_ELLIPTICAL
EXERCISE_TYPE_EXERCISE_CLASS
EXERCISE_TYPE_FENCING
EXERCISE_TYPE_FOOTBALL_AMERICAN
EXERCISE_TYPE_FOOTBALL_AUSTRALIAN
EXERCISE_TYPE_FRISBEE_DISC
EXERCISE_TYPE_GOLF
EXERCISE_TYPE_GUIDED_BREATHING
EXERCISE_TYPE_GYMNASTICS
EXERCISE_TYPE_HANDBALL
EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
EXERCISE_TYPE_HIKING
EXERCISE_TYPE_ICE_HOCKEY
EXERCISE_TYPE_ICE_SKATING
EXERCISE_TYPE_MARTIAL_ARTS
EXERCISE_TYPE_PADDLING
EXERCISE_TYPE_PARAGLIDING
EXERCISE_TYPE_PILATES
EXERCISE_TYPE_RACQUETBALL
EXERCISE_TYPE_ROCK_CLIMBING
EXERCISE_TYPE_ROLLER_HOCKEY
EXERCISE_TYPE_ROWING
EXERCISE_TYPE_ROWING_MACHINE
EXERCISE_TYPE_RUGBY
EXERCISE_TYPE_RUNNING
EXERCISE_TYPE_RUNNING_TREADMILL
EXERCISE_TYPE_SAILING
EXERCISE_TYPE_SCUBA_DIVING
EXERCISE_TYPE_SKATING
EXERCISE_TYPE_SKIING
EXERCISE_TYPE_SNOWBOARDING
EXERCISE_TYPE_SNOWSHOEING
EXERCISE_TYPE_SOCCER
EXERCISE_TYPE_SOFTBALL
EXERCISE_TYPE_SQUASH
EXERCISE_TYPE_STAIR_CLIMBING
EXERCISE_TYPE_STAIR_CLIMBING_MACHINE
EXERCISE_TYPE_STRENGTH_TRAINING
EXERCISE_TYPE_STRETCHING
EXERCISE_TYPE_SURFING
EXERCISE_TYPE_SWIMMING_OPEN_WATER
EXERCISE_TYPE_SWIMMING_POOL
EXERCISE_TYPE_TABLE_TENNIS
EXERCISE_TYPE_TENNIS
EXERCISE_TYPE_VOLLEYBALL
EXERCISE_TYPE_WALKING
EXERCISE_TYPE_WATER_POLO
EXERCISE_TYPE_WEIGHTLIFTING
EXERCISE_TYPE_WHEELCHAIR
EXERCISE_TYPE_OTHER_WORKOUT
EXERCISE_TYPE_YOGA
Пройденные этажи 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, поскольку для этого требуется специальное разрешение.