Health Connect 存储和构建健康和健身数据。它还考虑了不同数据类型的测量方式。这些数据类型包括立即获取的心率测量值、一段时间内的步数以及会话中的睡眠数据。
首先了解 Health Connect 提供的哪些数据类型和权限非常重要,以便您能够规划应用的需求。有了这些,您需要在最终确定需求之前审查您的数据类型。
数据类型类别
Health Connect 支持在大多数健康和健身应用中使用的数据类型,以提供尽可能多的多样性。Health Connect 旨在提供对健康和健身数据的全面视图和存储。这些数据类型属于以下类别
- 活动: 这会捕获用户执行的任何活动。它可以包括健康和健身活动,例如跑步、游泳和睡眠。
- 身体测量: 这会捕获与身体相关的常见数据,例如用户的体重和基础代谢率。
- 周期跟踪: 这会捕获月经周期和相关数据点,例如排卵测试的二元结果。
- 营养: 这会捕获水分和营养数据类型。前者表示用户在一次饮酒中消耗了多少水。后者包括诸如卡路里、糖和镁等可选字段。
- 睡眠: 这会捕获与用户睡眠时长和类型相关的间隔数据。
- 生命体征: 这会捕获有关用户一般健康状况的基本信息。它包括诸如体温、血糖、血压和血氧饱和度等数据。
数据类型格式
Health Connect 中的数据类型存储在是 Record
的子类的对象中。
对于每种数据类型,都有一些相关的字段,这些字段要么是通用的,例如 time
和 zoneOffset
,要么是特定的,例如 title
、count
和 percentage
。一些字段使用简单类型 - 例如 long、double 或 string - 而另一些字段使用复杂类型,例如枚举和类,例如 Instant
和 ZoneOffset
。这些字段的属性可以是必需的或可选的。某些属性是只读的,而某些属性则被限制在特定值范围内。
有关可用数据类型及其字段的完整列表,请参阅 Jetpack 中的类。
其他数据属性
Health Connect API 中的数据还包括以下列表中描述的 元数据 属性
- Health Connect ID: 每个数据点在创建时都会分配一个唯一的标识符 (UID)。这对于标准读写操作很有用。有关更多详细信息,请参阅 Health Connect ID。
- 上次修改时间: 这会标记记录最后一次更新的时间戳。它会在记录首次创建时或每次更新时自动生成。
- 数据来源: Health Connect 存储有关数据来源应用的信息。它包含该来源的包名,该包名会在创建时自动添加。
- 设备: Health Connect 存储有关数据来源设备的信息。它包含设备的制造商和型号,您需要手动提供这些值。
- 客户端 ID: Health Connect 提供客户端 ID,以便客户端应用程序可以使用其自己的 ID 引用数据,这有助于解决冲突并使同步更容易。此 ID 需要手动提供给记录。
- 客户端记录版本: 除了客户端 ID 之外,Health Connect 还提供版本控制以帮助跟踪数据同步过程中的更改。此版本需要手动提供给记录。
- 记录方法: Health Connect 使您可以了解数据是如何记录的。这些方法包括应用程序被动(自动)记录数据以及用户主动或手动记录数据。
Health Connect ID
Health Connect 会为新插入的数据对象分配唯一的标识符 (UID),这些标识符用于识别数据对象并将它们与其他数据对象区分开来。Health Connect ID 在读写请求中很有用。Health Connect ID 与客户端 ID 不同。客户端应用程序分配客户端 ID,而 Health Connect 专门分配 Health Connect ID。
请注意 使用 Health Connect ID 时应注意以下事项
- 会话有一个 Health Connect ID,但会话中的数据有自己的 Health Connect ID。
- Health Connect ID 与时间戳无关。
- 某些用例可能需要在工作流程中存储特定的 Health Connect ID。例如,需要特定 ID 来检索用户刚刚记录的数据条目并显示给用户。
Health Connect 中的时间
写入 Health Connect 的所有数据都必须指定时区偏移信息。指定时区偏移信息使应用程序能够读取数据以将其表示为民用时间。民用时间是当地时间,对用户来说是相关的,但不一定是协调世界时 (UTC)。
在极少数情况下,时区偏移信息可能不可用。在 Android 14(API 级别 34)中,如果这种情况发生,Health Connect 会根据设备的系统默认时区设置时区偏移信息。在 Android 13 及更低版本(API 级别 33 及更低版本)中,可以写入 Health Connect 而不指定任何时区偏移信息,但应尽可能避免这种情况。
时间和时区设置
在写入数据时指定时区偏移信息会在 Health Connect 中读取数据时提供时区信息。但是,在某些情况下,例如未提供时区偏移信息时,这可能会失败。您的应用程序需要做好准备,以一种适合您的具体情况的方式处理这两种类型的数据。
权限
在请求任何权限之前,您的应用程序必须首先在清单中声明它们。请参阅以下表格以获取数据类型及其权限的完整映射。
对于 1.0.0-alpha10 及更高版本
记录类类型 | 读写权限声明 |
---|---|
ActiveCaloriesBurned | android.permission.health.READ_ACTIVE_CALORIES_BURNED android.permission.health.WRITE_ACTIVE_CALORIES_BURNED |
BasalBodyTemperature | android.permission.health.READ_BASAL_BODY_TEMPERATURE android.permission.health.WRITE_BASAL_BODY_TEMPERATURE |
BasalMetabolicRate | android.permission.health.READ_BASAL_METABOLIC_RATE android.permission.health.WRITE_BASAL_METABOLIC_RATE |
BloodGlucose | android.permission.health.READ_BLOOD_GLUCOSE android.permission.health.WRITE_BLOOD_GLUCOSE |
BloodPressure | 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 |
BodyTemperature | 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 |
CervicalMucus | android.permission.health.READ_CERVICAL_MUCUS android.permission.health.WRITE_CERVICAL_MUCUS |
CyclingPedalingCadence | android.permission.health.READ_EXERCISE android.permission.health.WRITE_EXERCISE |
Distance | android.permission.health.READ_DISTANCE android.permission.health.WRITE_DISTANCE |
ElevationGained | android.permission.health.READ_ELEVATION_GAINED android.permission.health.WRITE_ELEVATION_GAINED |
ExerciseSession | android.permission.health.READ_EXERCISE android.permission.health.WRITE_EXERCISE |
FloorsClimbed | android.permission.health.READ_FLOORS_CLIMBED android.permission.health.WRITE_FLOORS_CLIMBED |
HeartRate | android.permission.health.READ_HEART_RATE android.permission.health.WRITE_HEART_RATE |
HeartRateVariabilityRmssd | android.permission.health.READ_HEART_RATE_VARIABILITY android.permission.health.WRITE_HEART_RATE_VARIABILITY |
Height | android.permission.health.READ_HEIGHT android.permission.health.WRITE_HEIGHT |
Hydration | android.permission.health.READ_HYDRATION android.permission.health.WRITE_HYDRATION |
IntermenstrualBleeding | 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 |
MenstruationPeriod | android.permission.health.READ_MENSTRUATION android.permission.health.WRITE_MENSTRUATION |
Nutrition | android.permission.health.READ_NUTRITION android.permission.health.WRITE_NUTRITION |
OvulationTest | android.permission.health.READ_OVULATION_TEST android.permission.health.WRITE_OVULATION_TEST |
OxygenSaturation | android.permission.health.READ_OXYGEN_SATURATION android.permission.health.WRITE_OXYGEN_SATURATION |
Power | android.permission.health.READ_POWER android.permission.health.WRITE_POWER |
RespiratoryRate | android.permission.health.READ_RESPIRATORY_RATE android.permission.health.WRITE_RESPIRATORY_RATE |
RestingHeartRate | android.permission.health.READ_RESTING_HEART_RATE android.permission.health.WRITE_RESTING_HEART_RATE |
SexualActivity | android.permission.health.READ_SEXUAL_ACTIVITY android.permission.health.WRITE_SEXUAL_ACTIVITY |
SleepSession | android.permission.health.READ_SLEEP android.permission.health.WRITE_SLEEP |
Speed | android.permission.health.READ_SPEED android.permission.health.WRITE_SPEED |
StepsCadence | android.permission.health.READ_STEPS android.permission.health.WRITE_STEPS |
Steps | android.permission.health.READ_STEPS android.permission.health.WRITE_STEPS |
TotalCaloriesBurned | 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 |
Weight | android.permission.health.READ_WEIGHT android.permission.health.WRITE_WEIGHT |
WheelchairPushes | android.permission.health.READ_WHEELCHAIR_PUSHES android.permission.health.WRITE_WHEELCHAIR_PUSHES |
对于 1.0.0-alpha09 及更低版本
记录类类型 | 读写权限声明 |
---|---|
ActiveCaloriesBurned | androidx.health.permission.ActiveCaloriesBurned.READ androidx.health.permission.ActiveCaloriesBurned.WRITE |
BasalBodyTemperature | androidx.health.permission.BasalBodyTemperature.READ androidx.health.permission.BasalBodyTemperature.WRITE |
BasalMetabolicRate | androidx.health.permission.BasalMetabolicRate.READ androidx.health.permission.BasalMetabolicRate.WRITE |
BloodGlucose | androidx.health.permission.BloodGlucose.READ androidx.health.permission.BloodGlucose.WRITE |
BloodPressure | androidx.health.permission.BloodPressure.READ androidx.health.permission.BloodPressure.WRITE |
BodyFat | androidx.health.permission.BodyFat.READ androidx.health.permission.BodyFat.WRITE |
BodyTemperature | 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 |
CervicalMucus | androidx.health.permission.CervicalMucus.READ androidx.health.permission.CervicalMucus.WRITE |
CyclingPedalingCadence | androidx.health.permission.CyclingPedalingCadence.READ androidx.health.permission.CyclingPedalingCadence.WRITE |
Distance | androidx.health.permission.Distance.READ androidx.health.permission.Distance.WRITE |
ElevationGained | androidx.health.permission.ElevationGained.READ androidx.health.permission.ElevationGained.WRITE |
ExerciseSession | androidx.health.permission.ExerciseSession.READ androidx.health.permission.ExerciseSession.WRITE |
FloorsClimbed | androidx.health.permission.FloorsClimbed.READ androidx.health.permission.FloorsClimbed.WRITE |
HeartRate | androidx.health.permission.HeartRate.READ androidx.health.permission.HeartRate.WRITE |
HeartRateVariabilityRmssd | androidx.health.permission.HeartRateVariabilityRmssd.READ androidx.health.permission.HeartRateVariabilityRmssd.WRITE |
Height | androidx.health.permission.Height.READ androidx.health.permission.Height.WRITE |
Hydration | androidx.health.permission.Hydration.READ androidx.health.permission.Hydration.WRITE |
IntermenstrualBleeding | 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.MenstruationFlow.READ androidx.health.permission.MenstruationFlow.WRITE |
Nutrition | androidx.health.permission.Nutrition.READ androidx.health.permission.Nutrition.WRITE |
OvulationTest | androidx.health.permission.OvulationTest.READ androidx.health.permission.OvulationTest.WRITE |
OxygenSaturation | androidx.health.permission.OxygenSaturation.READ androidx.health.permission.OxygenSaturation.WRITE |
Power | androidx.health.permission.Power.READ androidx.health.permission.Power.WRITE |
RespiratoryRate | androidx.health.permission.RespiratoryRate.READ androidx.health.permission.RespiratoryRate.WRITE |
RestingHeartRate | androidx.health.permission.RestingHeartRate.READ androidx.health.permission.RestingHeartRate.WRITE |
SexualActivity | androidx.health.permission.SexualActivity.READ androidx.health.permission.SexualActivity.WRITE |
SleepSession | androidx.health.permission.SleepSession.READ androidx.health.permission.SleepSession.WRITE |
Speed | androidx.health.permission.Speed.READ androidx.health.permission.Speed.WRITE |
StepsCadence | androidx.health.permission.StepsCadence.READ androidx.health.permission.StepsCadence.WRITE |
Steps | androidx.health.permission.Steps.READ androidx.health.permission.Steps.WRITE |
TotalCaloriesBurned | androidx.health.permission.TotalCaloriesBurned.READ androidx.health.permission.TotalCaloriesBurned.WRITE |
Vo2Max | androidx.health.permission.Vo2Max.READ androidx.health.permission.Vo2Max.WRITE |
Weight | androidx.health.permission.Weight.READ androidx.health.permission.Weight.WRITE |
WheelchairPushes | androidx.health.permission.WheelchairPushes.READ androidx.health.permission.WheelchairPushes.WRITE |
查看您的数据类型和权限
现在您已经规划好数据类型和权限,您可以在开发过程中实现它们。
在将您的应用程序上传到 Play 商店之前,请仔细检查应用程序所需的数据类型和权限列表。这将使您能够准确地声明应用程序的数据使用情况。
准备将应用程序发布到 Play 商店时,请声明访问应用程序使用的 Health Connect 数据类型。否则,用户可能会收到错误消息,提示您的应用程序无法访问 Health Connect 数据类型,因为它们需要特殊批准。