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

기능 확인

데이터 업데이트를 등록하기 전에 기기가 앱에서 필요한 데이터 유형을 제공할 수 있는지 확인해야 합니다. 먼저 기능을 확인하면 특정 기능을 사용 설정하거나 중지할 수 있고, 앱의 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
}

데이터 등록

등록된 각 콜백은 단일 데이터 유형을 위한 것입니다. 일부 데이터 유형은 가용 상태가 다를 수 있습니다. 예를 들어, 기기가 손목에 제대로 붙어 있지 않으면 심박수 데이터가 제공되지 않을 수도 있습니다.

콜백으로 인해 센서 샘플링 레이트가 증가하고 이에 따라 전력 소모가 증가하므로 콜백이 등록되는 시간을 최소화하는 것이 중요합니다.

다음 예는 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)
    }
}