借助 MeasureClient
API,您的应用可以注册回调,以便在短时间内接收数据。这很适合应用处于使用中并且需要快速更新数据的情况。您在创建时应尽可能使用前台界面,以便让用户知晓。
添加依赖项
如需添加健康服务的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解相关信息,请参阅 Google 的 Maven 制品库。
然后在您的模块级 build.gradle
文件中,添加以下依赖项:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
检查功能
在注册数据更新之前,请检查设备是否可以提供您的应用所需的数据类型。通过先检查功能,您可以启用或停用某些功能,或者修改应用的界面以填补不可用的功能。
以下示例展示了如何检查设备是否可以提供 HEART_RATE_BPM
数据类型:
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
lifecycleScope.launch {
val capabilities = measureClient.getCapabilitiesAsync().await()
supportsHeartRate = DataType.HEART_RATE_BPM in capabilities.supportedDataTypesMeasure
}
注册数据
您注册的每个回调都只针对一种数据类型。请注意,某些数据类型的可用性状态可能会发生变化。例如,当设备未正确佩戴到手腕上时,可能无法获得心率数据。
请务必尽量减少注册回调的时间,因为回调会导致传感器的采样率提高,进而增加功耗。
以下示例展示了如何注册和取消注册回调以接收 HEART_RATE_BPM
数据:
val heartRateCallback = object : MeasureCallback {
override fun onAvailabilityChanged(dataType: DeltaDataType<*, *>, availability: Availability) {
if (availability is DataTypeAvailability) {
// Handle availability change.
}
}
override fun onDataReceived(data: DataPointContainer) {
// Inspect data points.
}
}
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
// Register the callback.
measureClient.registerMeasureCallback(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
// Unregister the callback.
awaitClose {
runBlocking {
measureClient.unregisterMeasureCallbackAsync(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
}
}