Mierz stan zdrowia za pomocą MeasureClient

Dzięki interfejsowi API MeasureClient aplikacja rejestruje wywołania zwrotne, aby otrzymać dane przez krótki czas. Służy to sytuacji, gdy Twoja aplikacja jest używana i wymaga szybkich aktualizacji danych. Jeśli to możliwe, utwórz go z użyciem interfejsu użytkownika na pierwszym planie, aby użytkownicy wiedzieli o tym.

Dodaj zależności

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

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

Odlotowy

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

Kotlin

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

Sprawdź możliwości

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

Z tego przykładu dowiesz się, jak sprawdzić, czy urządzenie może dostarczać typ danych 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
}

Zarejestruj się, aby uzyskać dane

Każde zarejestrowane wywołanie zwrotne dotyczy jednego typu danych. Pamiętaj, że niektóre typy danych mogą mieć różne stany dostępności. Na przykład dane o tętnie mogą być niedostępne, gdy urządzenie nie będzie prawidłowo przypięte do nadgarstka.

Ważne jest, aby zminimalizować czas rejestrowania wywołania zwrotnego, ponieważ wywołania zwrotne powodują wzrost częstotliwości próbkowania z czujnika, co z kolei zwiększa zużycie energii.

Z przykładu poniżej dowiesz się, jak zarejestrować i wyrejestrować wywołanie zwrotne, aby otrzymać dane 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)
    }
}