Rohdaten lesen

Das folgende Beispiel zeigt, wie Sie Rohdaten im Rahmen des allgemeinen Workflows lesen.

Einfach lesen

Der Datentyp „Schritte“ in Health Connect erfasst die Anzahl der Schritte, die ein Nutzer zwischen den Messungen gemacht hat. Schrittzahlen stellen eine gemeinsame Messung auf Plattformen für Gesundheit, Fitness und Wellness dar. Health Connect vereinfacht das Lesen und Schreiben von Daten zur Schrittzahl.

Erstellen Sie zum Lesen von Einträgen einen ReadRecordsRequest und geben Sie ihn an, wenn Sie readRecords aufrufen.

Das folgende Beispiel zeigt, wie die Schrittzahldaten für einen Nutzer innerhalb einer bestimmten Zeit gelesen werden. Ein erweitertes Beispiel mit SensorManager finden Sie im Datenleitfaden für die Schrittzahl.

suspend fun readStepsByTimeRange(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.readRecords(
            ReadRecordsRequest(
                StepsRecord::class,
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        for (stepRecord in response.records) {
            // Process each step record
        }
    } catch (e: Exception) {
        // Run error handling here
    }
}

Zuvor geschriebene Daten lesen

Wenn eine App zuvor bereits Einträge in Health Connect geschrieben hat, kann diese Anwendung diese auch ohne Leseberechtigung für diese Einträge zurücklesen. Dies gilt für Szenarien, in denen die Anwendung neu mit Health Connect synchronisiert werden muss, nachdem der Nutzer sie neu installiert hat.

Zum Lesen von Daten in diesem Szenario müssen Sie den Paketnamen als DataOrigin-Objekt im dataOriginFilter-Parameter Ihrer ReadRecordsRequest angeben.

Das folgende Beispiel zeigt, wie Sie beim Lesen von Schrittdatensätzen einen Paketnamen angeben:

try {
    val response =  healthConnectClient.readRecords(
        ReadRecordsRequest(
            recordType = StepsRecord::class,
            timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
            dataOriginFilter = setOf(DataOrigin("com.my.package.name"))
        )
    )
    for (record in response.records) {
        // Process each record
    }
} catch (e: Exception) {
    // Run error handling here
}

Lesebeschränkung für 30 Tage

Health Connect kann Daten bis zu 30 Tage lang lesen, bevor eine Berechtigung erstmals gewährt wurde.

Löscht ein Nutzer Ihre App jedoch, geht der Berechtigungsverlauf verloren. Wenn der Nutzer deine App neu installiert und die Berechtigung noch einmal erteilt, kann deine App bis zu 30 Tage vor dem neuen Datum Daten von Health Connect lesen.

Beispiel

Wenn ein Nutzer Ihrer Anwendung erstmals am 30. März 2023 eine Leseberechtigung erteilt hat, können Daten frühestens ab dem 28. Februar 2023 von Ihrer App zurückgelesen werden.

Am 10. Mai 2023 löscht der Nutzer deine App. Der Nutzer beschließt, sie am 15. Mai 2023 neu zu installieren und eine Leseberechtigung zu erteilen. Das früheste Datum, ab dem Ihre App jetzt Daten lesen kann, ist der 15. April 2023.

Einschränkung für den Vordergrund

Das Lesen von Daten mit Health Connect ist auf Anwendungen beschränkt, die im Vordergrund ausgeführt werden. Diese Einschränkung soll den Datenschutz für Nutzer weiter verbessern. Dadurch wird sichergestellt, dass Health Connect keinen Lesezugriff im Hintergrund auf ihre Daten hat und dass die Daten nur im Vordergrund gelesen und darauf zugegriffen werden kann.

In Situationen, in denen Unterbrechungen akzeptabel sind, wie etwa das Anzeigen von Messwerten in Ihrer Anwendung, können Sie direkt von Health Connect in Ihre Clientanwendung lesen.

Für Situationen, in denen du keine Unterbrechungen bevorzugst, solltest du eine ForegroundService anstelle einer Activity verwenden, bei der sie schnell geschlossen werden können. Dazu gehört beispielsweise, dass du einen Bereich von Daten aus Health Connect lesen und dann an anderer Stelle schreiben und hochladen möchtest.