元数据要求

本指南与健康数据共享版本 1.1.0-alpha12 兼容。

对于选择升级到版本 1.1.0-alpha12 的开发者,健康数据共享中的元数据会有所变化。

影视库信息

Google Maven Android Gradle 插件工件 ID 用于标识您需要升级到的健康数据共享库。 将此 Health Connect SDK 依赖项添加到模块级 build.gradle 文件中:

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

元数据更改

自版本 1.1.0-alpha12 起,健康数据共享 Jetpack SDK 中引入了两项元数据变更,以确保生态系统中存在更多有用的元数据。

每当实例化 Record() 类型对象时,您都需要指定元数据详细信息。

将数据写入健康数据共享时,您必须指定四种记录方法之一:

录制方法 说明
RECORDING_METHOD_UNKNOWN 无法验证录制方法。
RECORDING_METHOD_MANUAL_ENTRY 用户输入了数据。
RECORDING_METHOD_AUTOMATICALLY_RECORDED 设备或传感器记录了数据。
RECORDING_METHOD_ACTIVELY_RECORDED 用户在设备上发起录制会话的开始或结束。

例如:

StepsRecord(
    startTime \= Instant.ofEpochMilli(1234L),
    startZoneOffset \= null,
    endTime \= Instant.ofEpochMilli(1236L),
    endZoneOffset \= null,
    metadata \= Metadata.manualEntry(),
    Count \= 10,
)

您必须为所有自动和主动记录的数据指定设备类型。目前的设备类型包括:

设备类型 说明
TYPE_UNKNOWN 设备类型未知。
TYPE_WATCH 设备类型为手表。
TYPE_PHONE 设备类型是手机。
TYPE_SCALE 设备类型为体重秤。
TYPE_RING 设备类型为指环。
TYPE_HEAD_MOUNTED 设备类型为头戴式设备。
TYPE_FITNESS_BAND 设备类型为健身手环。
TYPE_CHEST_STRAP 设备类型为胸带。
TYPE_SMART_DISPLAY 设备类型为智能显示屏。

请尽可能提供设备的制造商和型号,以及设备类型。例如:

private val TEST_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)

摘要已更新

我们已在需要新代码段的地方更新了健康数据共享指南,以符合新的元数据要求。如需查看一些示例,请参阅写入数据页面。

新的元数据方法

元数据不再能直接实例化,因此请使用某个工厂方法来获取新的元数据实例。 每个函数都有三种签名变体:

  • activelyRecorded

    • fun activelyRecorded(device: Device): Metadata.
    • fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun activelyRecordedWithId(id: String, device: Device): Metadata
  • autoRecorded

    • fun autoRecorded(device: Device): Metadata
    • fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun autoRecordedWithId(id: String, device: Device): Metadata
  • manualEntry

    • fun manualEntry(device: Device? = null): Metadata
    • fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun manualEntryWithId(id: String, device: Device? = null): Metadata
  • unknownRecordingMethod

    • fun unknownRecordingMethod(device: Device? = null): Metadata
    • fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata

如需了解详情,请参阅 Android 开源项目

测试数据

使用测试库来模拟预期元数据值:

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

这会模拟健康数据共享实现的行为,即在插入记录期间自动填充这些值。

对于测试库,您需要将此 Health Connect SDK 依赖项添加到模块级 build.gradle 文件中:

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

升级库

您需要执行的主要步骤如下:

  1. 将库升级到 1.1.0-alpha12。

  2. 构建库时,如果需要新的元数据,系统会抛出编译错误,因此请务必在实例化 Record() 类型对象时实现必要的元数据更改。这样应该就能完成迁移。