Mierz stan zdrowia za pomocą MeasureClient

Za pomocą MeasureClient API, aplikacja rejestruje wywołania zwrotne w celu otrzymywania danych w krótkim czasie. Sprawdza się to w sytuacjach, gdy Twoja aplikacja jest używana i wymaga szybkiego przesyłania danych. aktualizacje. Jeśli to możliwe, utwórz to z interfejsem na pierwszym planie, aby użytkownik świadomość.

Dodaj zależności

Aby dodać zależność od usług zdrowotnych, musisz dodać repozytorium Google Maven do swojego projektu. Więcej informacji: repozytorium Google Maven.

Następnie w pliku build.gradle na poziomie modułu dodaj tę zależność:

Odlotowe

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

Kotlin

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

Sprawdź możliwości

Zanim zarejestrujesz się w celu aktualizacji danych, sprawdź, czy urządzenie może dostarczać typ ilość danych, których potrzebuje Twoja aplikacja. Możesz najpierw włączyć lub wyłączyć wyłącz określone funkcje lub zmodyfikuj interfejs aplikacji, aby zrekompensować jej możliwości które są niedostępne.

Poniższy przykład pokazuje, jak sprawdzić, czy urządzenie może dostarczać HEART_RATE_BPM typ danych:

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
}

Zarejestruj się na dane

Każde zarejestrowane wywołanie zwrotne jest przeznaczone dla jednego typu danych. Pamiętaj, że niektóre typy danych mogą mieć różny stan dostępności. Na przykład dane o tętnie mogą nie być musi być dostępna, gdy urządzenie nie jest prawidłowo zamocowane na nadgarstku.

Ważne jest, aby skrócić do minimum czas rejestracji wywołania zwrotnego, bo wywołania zwrotne powodują wzrost częstotliwości próbkowania przez czujniki, co z kolei zużycie energii.

Przykład poniżej pokazuje, jak zarejestrować i wyrejestrować wywołanie zwrotne w celu otrzymania Dane usługi 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)
    }
}