Con l'API
MeasureClient
, la tua app registra i callback per ricevere dati per un breve periodo di tempo.
È pensata per le situazioni in cui l'app è in uso e richiede aggiornamenti rapidi dei dati. Se possibile, crea questa operazione con una UI in primo piano in modo che l'utente
ne sia a conoscenza.
Aggiungi dipendenze
Per aggiungere una dipendenza da Health Services, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Poi, nel file build.gradle
a livello di modulo, aggiungi la seguente dipendenza:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
Controllare le funzionalità
Prima di registrarti per gli aggiornamenti dei dati, verifica che il dispositivo possa fornire il tipo di dati di cui la tua app ha bisogno. Se controlli prima le funzionalità, puoi attivare o disattivare determinate funzionalità o modificare la UI della tua app per compensare le funzionalità non disponibili.
L'esempio seguente mostra come verificare se un dispositivo può fornire il tipo di dati
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
}
Registrati per i dati
Ogni callback registrato riguarda un singolo tipo di dati. Tieni presente che alcuni tipi di dati potrebbero avere stati di disponibilità diversi. Ad esempio, i dati sul battito cardiaco potrebbero non essere disponibili quando il dispositivo non è fissato correttamente al polso.
È importante ridurre al minimo il tempo di registrazione del callback, in quanto i callback causano un aumento delle frequenze di campionamento dei sensori, che a sua volta aumenta il consumo energetico.
Il seguente esempio mostra come registrare e annullare la registrazione di un callback per ricevere
dati 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)
}
}