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