Spot-Gesundheitsmessungen mit MeasureClient durchführen

Mit der MeasureClient API registriert deine App Callbacks, um für kurze Zeit Daten zu empfangen. Dies ist für Situationen gedacht, in denen Ihre Anwendung verwendet wird und schnelle Datenaktualisierungen erforderlich sind. Erstellen Sie sie nach Möglichkeit mit einer Benutzeroberfläche im Vordergrund, damit der Nutzer sie erkennt.

Abhängigkeiten hinzufügen

Zum Hinzufügen einer Abhängigkeit von Health Services müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie unter Maven-Repository von Google.

Fügen Sie dann in der Datei build.gradle auf Modulebene die folgende Abhängigkeit hinzu:

Groovig

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

Kotlin

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

Funktionen prüfen

Bevor du dich für Datenaktualisierungen registrierst, solltest du prüfen, ob das Gerät den Datentyp bereitstellen kann, den deine App benötigt. Wenn Sie zuerst die Funktionen prüfen, können Sie bestimmte Funktionen aktivieren oder deaktivieren oder die UI Ihrer Anwendung ändern, um nicht verfügbare Funktionen auszugleichen.

Das folgende Beispiel zeigt, wie geprüft wird, 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. Zum Beispiel sind Herzfrequenzdaten möglicherweise nicht verfügbar, wenn das Gerät nicht richtig am Handgelenk befestigt ist.

Es ist wichtig, die Zeitspanne zu minimieren, in der dein Callback registriert wird, da Callbacks eine Erhöhung der Sensor-Abtastraten verursachen, was wiederum den Stromverbrauch erhöht.

Das folgende Beispiel zeigt, wie Sie einen Callback registrieren und seine Registrierung aufheben, um HEART_RATE_BPM-Daten zu erhalten:

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