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

檢查功能

在註冊資料更新前,請確認裝置可以提供指定類型 所需資料先檢查功能 配合功能停用特定功能或修改應用程式的使用者介面 以及無法使用的

以下範例說明如何檢查裝置能否提供 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)
    }
}