本指南适用于 Health Connect 版本 1.1.0-alpha12。
对于选择升级到版本 1.1.0-alpha12 的开发者,Health Connect 中的元数据会发生变化。
图书馆信息
Google Maven Android Gradle 插件工件 ID 用于标识您需要升级到的 Health Connect 库。将此 Health Connect SDK 依赖项添加到模块级 build.gradle
文件中:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
元数据更改
从版本 1.1.0-alpha12 开始,Health Connect Jetpack SDK 引入了两项元数据更改,以确保生态系统中存在其他有用的元数据。
每当实例化 Record()
类型对象时,您都必须指定元数据详细信息。
将数据写入 Health Connect 时,您必须指定以下四种记录方法之一:
录制方法 | 说明 |
---|---|
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(type = Device.TYPE_PHONE)
更新了摘要
我们更新了 Health Connect 指南,在需要添加新代码段的地方添加了新代码段,以符合新的元数据要求。如需查看一些示例,请参阅写入数据页面。
新的元数据方法
元数据无法再直接实例化,因此请使用某个工厂方法来获取元数据的新实例。每个函数都有三个签名变体:
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 实现的行为,该实现会在插入记录时自动填充这些值。
对于测试库,您需要将此 Health Connect SDK 依赖项添加到模块级 build.gradle
文件中:
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
升级库
您需要执行的主要步骤如下:
将库升级到 1.1.0-alpha12。
构建库时,需要新元数据时,系统会抛出编译错误,因此请务必在每次实例化
Record()
类型对象时实现必要的元数据更改。这应该会完成迁移。