使用 MeasureClient
API,您的应用注册回调以在短时间内接收数据。这适用于您的应用正在使用并且需要快速数据更新的情况。如果可能,请使用前台 UI 创建此功能,以便用户知道。
添加依赖项
要添加对健康服务的依赖项,您必须将 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") }
检查功能
在注册数据更新之前,请检查设备是否可以提供您的应用所需的数据类型。通过首先检查功能,您可以启用或禁用某些功能,或修改应用的 UI 以补偿不可用的功能。
以下示例演示了如何检查设备是否可以提供 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)
}
}