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,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 中读取数据时提供时区信息。但是,在某些情况下(例如未提供时区偏移时),它可能会失败。您的应用需要准备好以适合您特定情况的方式处理这两种数据。
权限
在请求任何权限之前,您的应用必须先在 manifest 中声明它们。有关数据类型及其权限的完整映射,请参阅下表。
适用于 1.0.0-alpha10 及更高版本
权限参考 | 读取权限声明 |
---|---|
后台读取 |
android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND
|
历史读取 |
android.permission.health.READ_HEALTH_DATA_HISTORY
|
记录类类型 | 读写权限声明 |
---|---|
ActiveCaloriesBurned |
android.permission.health.READ_ACTIVE_CALORIES_BURNED android.permission.health.WRITE_ACTIVE_CALORIES_BURNED |
BasalMetabolicRate |
android.permission.health.READ_BASAL_METABOLIC_RATE android.permission.health.WRITE_BASAL_METABOLIC_RATE |
BloodPressure |
android.permission.health.READ_BLOOD_PRESSURE android.permission.health.WRITE_BLOOD_PRESSURE |
CyclingPedalingCadence |
android.permission.health.READ_CYCLING_PEDALING_CADENCE android.permission.health.WRITE_CYCLING_PEDALING_CADENCE |
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.READ_EXERCISE_ROUTE android.permission.health.WRITE_EXERCISE android.permission.health.WRITE_EXERCISE_ROUTE |
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 |
Height |
android.permission.health.READ_HEIGHT android.permission.health.WRITE_HEIGHT |
Hydration |
android.permission.health.READ_HYDRATION android.permission.health.WRITE_HYDRATION |
MindfulnessSession |
android.permission.health.READ_MINDFULNESS android.permission.health.WRITE_MINDFULNESS |
Nutrition |
android.permission.health.READ_NUTRITION android.permission.health.WRITE_NUTRITION |
Power |
android.permission.health.READ_POWER android.permission.health.WRITE_POWER |
RestingHeartRate |
android.permission.health.READ_RESTING_HEART_RATE android.permission.health.WRITE_RESTING_HEART_RATE |
SkinTemperature |
android.permission.health.READ_SKIN_TEMPERATURE android.permission.health.WRITE_SKIN_TEMPERATURE |
SleepSession |
android.permission.health.READ_SLEEP android.permission.health.WRITE_SLEEP |
Speed |
android.permission.health.READ_SPEED android.permission.health.WRITE_SPEED |
Steps |
android.permission.health.READ_STEPS android.permission.health.WRITE_STEPS |
StepsCadence |
android.permission.health.READ_STEPS_CADENCE android.permission.health.WRITE_STEPS_CADENCE |
TotalCaloriesBurned |
android.permission.health.READ_TOTAL_CALORIES_BURNED android.permission.health.WRITE_TOTAL_CALORIES_BURNED |
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 |
BasalMetabolicRate |
androidx.health.permission.BasalMetabolicRate.READ androidx.health.permission.BasalMetabolicRate.WRITE |
BloodPressure |
androidx.health.permission.BloodPressure.READ androidx.health.permission.BloodPressure.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 |
Height |
androidx.health.permission.Height.READ androidx.health.permission.Height.WRITE |
Hydration |
androidx.health.permission.Hydration.READ androidx.health.permission.Hydration.WRITE |
Nutrition |
androidx.health.permission.Nutrition.READ androidx.health.permission.Nutrition.WRITE |
Power |
androidx.health.permission.Power.READ androidx.health.permission.Power.WRITE |
RestingHeartRate |
androidx.health.permission.RestingHeartRate.READ androidx.health.permission.RestingHeartRate.WRITE |
SleepSession |
androidx.health.permission.SleepSession.READ androidx.health.permission.SleepSession.WRITE |
Speed |
androidx.health.permission.Speed.READ androidx.health.permission.Speed.WRITE |
Steps |
androidx.health.permission.Steps.READ androidx.health.permission.Steps.WRITE |
StepsCadence |
androidx.health.permission.StepsCadence.READ androidx.health.permission.StepsCadence.WRITE |
TotalCaloriesBurned |
androidx.health.permission.TotalCaloriesBurned.READ androidx.health.permission.TotalCaloriesBurned.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 数据类型,因为它们需要特殊批准。