Prendre des mesures de santé ponctuelles avec MeasureClient

Avec l'API MeasureClient, votre application enregistre des rappels afin de recevoir des données pendant une courte période. Elle est destinée aux situations dans lesquelles votre application est utilisée et nécessite des mises à jour rapides des données. Si possible, créez-la avec une UI de premier plan afin que l'utilisateur en soit informé.

Ajouter des dépendances

Pour ajouter une dépendance à Services Santé, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez les informations sur le dépôt Maven de Google.

Ensuite, dans le fichier build.gradle, au niveau du module, ajoutez la dépendance suivante :

Groovy

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

Kotlin

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

Vérifier les fonctionnalités

Avant de vous inscrire aux mises à jour de données, vérifiez que l'appareil peut fournir le type de données dont votre application a besoin. En vérifiant d'abord les fonctionnalités, vous pouvez en activer ou en désactiver certaines, ou modifier l'interface utilisateur de votre application pour compenser les fonctionnalités indisponibles.

L'exemple suivant montre comment vérifier si un appareil peut fournir le type de données 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
}

Demander à recevoir les données

Chaque rappel que vous enregistrez correspond à un seul type de données. Certains types de données peuvent présenter des états de disponibilité différents. Par exemple, les données de fréquence cardiaque peuvent ne pas être disponibles lorsque l'appareil n'est pas correctement fixé au poignet.

Il est important de réduire la durée d'enregistrement de votre rappel, car les rappels augmentent les taux d'échantillonnage des capteurs, ce qui accroît la consommation d'énergie.

L'exemple suivant montre comment enregistrer un rappel pour recevoir des données HEART_RATE_BPM et comment annuler l'enregistrement de cet appel :

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