本指南与 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()
类型对象时实现必要的元数据更改。这应该会完成迁移。