Con
MeasureClient
API, la tua app registra i callback per ricevere dati per un breve periodo di tempo.
Questa opzione è destinata alle situazioni in cui la tua app è in uso e richiede dati rapidi
aggiornamenti. Se possibile, crea questo URL con una UI in primo piano, in modo che l'utente
consapevoli.
Aggiungi dipendenze
Per aggiungere una dipendenza dai servizi sanitari, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, vedi Repository Maven di Google.
Quindi, nel file build.gradle
a livello di modulo, aggiungi la seguente dipendenza:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha03" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha03") }
Verifica le funzionalità
Prima di registrarti per gli aggiornamenti dei dati, verifica che il dispositivo possa fornire il tipo di dati necessari alla tua app. Controllando prima le funzionalità, puoi abilitare disattivare determinate funzionalità o modificare l'UI dell'app per compensare le funzionalità che non sono disponibili.
L'esempio seguente mostra come verificare se un dispositivo è in grado di fornire l'accesso
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 ricevere dati
Ogni callback che registri è per un singolo tipo di dati. Tieni presente che alcuni tipi di dati possono avere stati di disponibilità variabili. Ad esempio, i dati del battito cardiaco potrebbero non essere disponibile quando il dispositivo non è attaccato correttamente al polso.
È importante ridurre al minimo il tempo di registrazione della richiamata, poiché i callback causano un aumento delle frequenze di campionamento del sensore, il che a sua volta aumenta il consumo di energia.
L'esempio seguente mostra come registrare e annullare la registrazione di un callback per ricevere
Dati di 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)
}
}