MeasureClient
API を使用すると、アプリはコールバックを登録して、短時間のデータを受信します。この 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
}
データに登録する
登録するコールバックは、それぞれ 1 つのデータ型に対応します。なお、データ型によっては可用性の状態が異なる場合があります。たとえばデバイスが手首に正しく装着されていない場合、心拍数データを利用できないことがあります。
コールバックでセンサーのサンプリング レートが高くなり消費電力が増加するため、コールバックの登録時間を最小限に抑えることが重要です。
次の例は、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)
}
}