使用 MeasureClient 取得即時健康測量結果

應用程式可以使用 MeasureClient API 註冊回呼,在短時間內接收資料。當應用程式在使用中,且必須快速更新資料時,才適合使用這個方法。如果可行,請使用前景 UI 建立此內容,以便使用者知道他們使用了這項功能。

新增依附元件

如要為健康照護服務新增依附元件,必須將 Google Maven 存放區新增至專案。詳情請參閱「Google 的 Maven 存放區」一文。

接下來,在模組層級的 build.gradle 檔案中新增以下依附元件:

Groovy

dependencies {
    implementation "androidx.health:health-services-client:1.1.0-alpha02"
}

Kotlin

dependencies {
    implementation("androidx.health:health-services-client:1.1.0-alpha02")
}

檢查功能

在註冊資料更新內容之前,請先檢查裝置是否可以提供應用程式所需的資料類型。先檢查可用功能,就能啟用或停用特定功能,或修改應用程式的使用者介面,彌補未提供的功能。

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