MeasureClient で健康状態を測定する

MeasureClient API を使用すると、アプリはコールバックを登録して、短時間のデータを受信します。この 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")
}

機能を確認する

データ更新に登録する前に、デバイスがアプリに必要なデータ型を提供できることを確認してください。最初に機能を確認することで、特定の機能を有効または無効にできます。また、アプリの 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)
    }
}