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, поскольку для этого требуется специальное разрешение.