Mit der MeasureClient
-API registriert Ihre App Rückrufe, um Daten für einen kurzen Zeitraum zu empfangen.
Dies ist für Situationen gedacht, in denen Ihre App verwendet wird und schnelle Datenaktualisierungen erforderlich sind. Erstellen Sie diese Möglichkeit nach Möglichkeit mit einer Benutzeroberfläche im Vordergrund, damit der Nutzer darüber informiert wird.
Abhängigkeiten hinzufügen
Wenn Sie eine Abhängigkeit von Health Services hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie dann in der Datei build.gradle
auf Modulebene die folgende Abhängigkeit hinzu:
Groovy
dependencies { implementation "androidx.health:health-services-client:1.1.0-alpha05" }
Kotlin
dependencies { implementation("androidx.health:health-services-client:1.1.0-alpha05") }
Funktionen prüfen
Prüfen Sie vor der Registrierung für Datenaktualisierungen, ob das Gerät den Datentyp bereitstellen kann, den Ihre App benötigt. Wenn Sie die Funktionen zuerst prüfen, können Sie bestimmte Funktionen aktivieren oder deaktivieren oder die Benutzeroberfläche Ihrer App anpassen, um nicht verfügbare Funktionen zu kompensieren.
Das folgende Beispiel zeigt, wie Sie prüfen können, ob ein Gerät den Datentyp HEART_RATE_BPM
bereitstellen kann:
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
}
Für Daten registrieren
Jeder Callback, den Sie registrieren, gilt für einen einzelnen Datentyp. Beachten Sie, dass einige Datentypen unterschiedliche Verfügbarkeitsstatus haben können. So sind beispielsweise Herzfrequenzdaten möglicherweise nicht verfügbar, wenn das Gerät nicht richtig am Handgelenk befestigt ist.
Es ist wichtig, die Zeit zu minimieren, in der Ihr Callback registriert ist, da Callbacks zu einer Erhöhung der Sensor-Samplingraten führen, was wiederum den Stromverbrauch erhöht.
Das folgende Beispiel zeigt, wie ein Callback registriert und abgemeldet wird, um HEART_RATE_BPM
-Daten zu empfangen:
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)
}
}