健康数据共享中的数据类型存储在 Record
的子类对象中。
对于每种数据类型,都有关联的字段,这些字段可以是通用字段(例如 time
和 zoneOffset
),也可以是特定字段(例如 title
、count
和 percentage
)。有些字段使用基本类型(例如 long、double 或 string),而另一些字段使用复杂类型(例如枚举)和类(例如 Instant
和 ZoneOffset
)。这些字段的属性可以是必需属性,也可以是可选属性。某些属性是只读的,而某些属性则限制在特定值范围内。
如需查看可用数据类型及其字段的完整列表,请参阅 Jetpack 中的类。
元数据属性
Health Connect API 中的数据还包含下表中所述的元数据属性:
- Health Connect ID:每个数据点在创建时都分配有一个唯一标识符 (UID)。这对于标准读取和写入操作非常有用。 如需了解详情,请参阅 Health Connect ID。
- 上次修改时间:此属性用于标记记录最后一次更新的时间戳。系统会在首次创建记录或每次更新记录时自动生成此属性。
- 数据来源:健康数据共享会存储数据的来源应用的相关信息。它包含相应来源的软件包名称(系统会在创建时自动添加这些信息)。
- 设备:Health Connect 会存储数据的来源设备的相关信息。其中包含相应设备的制造商和型号(您将手动提供相应值)。
- 客户端 ID:Health Connect 提供客户端 ID,让客户端应用能够使用自己的 ID 来引用数据,这有助于解决冲突并简化同步。您需要将这些信息手动提供给记录。
- 客户端记录版本:除了客户端 ID,健康数据共享还会提供版本控制,以帮助在数据同步期间跟踪更改。您需要将这些信息手动提供给记录。
- 记录方法:健康数据共享可让您了解数据的记录方式。 这些方法包括应用被动(自动)记录数据,以及用户主动或手动记录数据。
健康数据共享 ID
健康数据共享会为新插入的数据对象分配唯一标识符 (UID),用于标识数据对象并将其与其他数据对象区分开来。健康数据共享 ID 在读取或写入请求中非常有用。健康数据共享 ID 与客户端 ID 不完全相同。客户端 ID 由客户端应用分配,而健康数据共享 ID 由健康数据共享专门分配。
请注意,在使用健康数据共享 ID 时,务必要注意以下几点:
- 时段具有单个健康数据共享 ID,但时段中的数据具有各自的健康数据共享 ID。
- 健康数据共享 ID 和时间戳没有对应关系,也不相关。
- 某些用例可能需要在工作流中存储特定的健康数据共享 ID。例如,需要特定 ID 才能检索用户刚刚记录的数据条目并将其显示给用户。
Health Connect 中的时间
写入健康数据共享的所有数据都必须指定时区偏移量信息。指定时区偏移量后,应用即可读取数据并以民用时间来展示相关数据。民用时间是指与用户相关的本地时间,但不一定是世界协调时间 (UTC)。
在极少数情况下,时区偏移量可能不可用。如果这种情况发生在 Android 14(API 级别 34)中,健康数据共享会根据设备的系统默认时区设置时区偏移量。在 Android 13 及更低版本(API 级别 33 及更低版本)中,可以在未指定任何时区偏移量信息的情况下向健康数据共享写入数据,应尽可能避免这种情况。
时间和时区设置
通过在写入数据时指定时区偏移量信息,可以在读取 Health Connect 中的数据时提供时区信息。不过,该操作在某些情况下可能会失败,例如当未提供时区偏移量时。您的应用需要做好准备,从而以适合您具体情况的方式来处理这两种数据。