规划和审查 Health Connect 数据类型

Health Connect 存储和组织健康与健身数据。它还考虑了不同数据类型的测量方式。这些数据类型包括即时心率测量、随时间推移的步数统计以及会话中的睡眠数据。

首先,了解 Health Connect 提供哪些数据类型和权限非常重要,这样您才能规划应用的要求。因此,在最终确定要求之前,您需要先审查数据类型。

数据类型类别

Health Connect 支持大多数健康和健身应用中使用的数据类型,以提供尽可能多的多样性。Health Connect 旨在提供健康与健身数据的全面视图和存储。这些数据类型分为以下类别:

  • 活动:这会捕获用户进行的任何活动。它可以包括跑步和游泳等健康与健身活动。
  • 身体测量:这会捕获与身体相关的常见数据,例如用户的体重和基础代谢率。
  • 周期跟踪:这会捕获月经周期和相关数据点,例如排卵测试的二进制结果。
  • 营养:这会捕获水合和营养数据类型。前者表示用户一次饮用多少水。后者包括可选字段,例如卡路里、糖和镁。
  • 睡眠:这会捕获与用户睡眠时长和类型相关的间隔数据。
  • 生命体征:这会捕获有关用户整体健康状况的重要信息。它包括体温、血糖、血压和血氧饱和度等数据。

数据类型格式

Health Connect 中的数据类型存储在 Record 的子类对象中。

对于每种数据类型,都有相关联的字段,这些字段可以是通用的,例如 timezoneOffset,也可以是特定的,例如 titlecountpercentage。有些字段使用简单类型(例如 long、double 或 string),而另一些字段则使用复杂类型,例如枚举和类,例如 InstantZoneOffset。这些字段的属性可以是必需的或可选的。某些属性是只读的,某些属性被限制在特定值范围内。

有关可用数据类型及其字段的完整列表,请参阅 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 数据类型,因为它们需要特殊批准。