Spot-Gesundheitsmessungen mit MeasureClient durchführen

Mit der MeasureClient API registriert Ihre App Rückrufe, um für kurze Zeit Daten zu empfangen. Dies ist für Situationen gedacht, in denen deine App verwendet wird und schnelle Daten erforderlich sind. Aktualisierungen. Erstellen Sie diese nach Möglichkeit mit einer UI im Vordergrund, damit der Nutzer bewusst sind.

Abhängigkeiten hinzufügen

Wenn Sie eine Abhängigkeit von Health Services hinzufügen möchten, müssen Sie das Google Maven-Repository hinzufügen zu Ihrem Projekt 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:

Cool

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

Kotlin

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

Funktionen prüfen

Bevor Sie sich für Datenupdates registrieren, prüfen Sie, ob das Gerät den Typ die Ihre App benötigt. Wenn Sie zuerst die Funktionen prüfen, können Sie bestimmte Funktionen deaktivieren oder die Benutzeroberfläche Ihrer App anpassen, um dies zu kompensieren die nicht verfügbar sind.

Das folgende Beispiel zeigt, wie Sie prüfen können, ob ein Gerät Datentyp 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
}

Für Daten registrieren

Jeder Callback, den Sie registrieren, gilt für einen einzelnen Datentyp. Beachten Sie, dass einige Datentypen können unterschiedliche Verfügbarkeitsstatus haben. Beispielsweise kann es passieren, dass die verfügbar sein, wenn das Gerät nicht richtig am Handgelenk befestigt ist.

Es ist wichtig, die Dauer der Registrierung deines Callbacks zu minimieren. da Callbacks eine Erhöhung der Sensor-Abtastraten verursachen, Stromverbrauch.

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

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