使用 MeasureClient 获取即时健康测量数据

使用 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)
    }
}