應用程式可以使用 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") }
檢查功能
在註冊資料更新內容之前,請先檢查裝置是否可以提供應用程式所需的資料類型。先檢查可用功能,就能啟用或停用特定功能,或修改應用程式的使用者介面,彌補未提供的功能。
以下範例說明如何檢查裝置是否可提供 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)
}
}