Health Connect-Datentypen planen und prüfen

Health Connect speichert und strukturiert Gesundheits- und Fitnessdaten. Außerdem wird berücksichtigt, wie verschiedene Datentypen gemessen werden. Zu diesen Datentypen gehören sofortige Herzfrequenzmessungen, die Schrittzahl im Zeitverlauf und Schlafdaten aus Sitzungen.

Es ist wichtig, zuerst zu verstehen, welche Datentypen und Berechtigungen Health Connect bietet, damit du die Anforderungen deiner App planen kannst. Du musst also deine Datentypen prüfen, bevor du deine Anforderungen fertigstellen kannst.

Datentypkategorien

Health Connect unterstützt Datentypen, die in den meisten Gesundheits- und Fitness-Apps verwendet werden, um möglichst große Vielfalt zu bieten. Health Connect soll einen umfassenden Überblick über Gesundheits- und Fitnessdaten bieten und diese speichern. Diese Datentypen lassen sich in die folgenden Kategorien unterteilen:

  • Aktivität: Hier werden alle Aktivitäten eines Nutzers erfasst. Dazu können auch Aktivitäten wie Laufen und Schwimmen gehören.
  • Körpermessung: Hier werden gängige körperbezogene Daten erfasst, z. B. das Gewicht und der Grundumsatz eines Nutzers.
  • Zyklus-Tracking: Hier werden Menstruationszyklen und zugehörige Daten erfasst, z. B. das binäre Ergebnis eines Ovulationstests.
  • Ernährung: Hier werden die Datentypen „Flüssigkeitszufuhr“ und „Ernährung“ erfasst. Ersterer gibt an, wie viel Wasser ein Nutzer mit einer einzelnen Portion zu sich nimmt. Letzterer enthält optionale Felder wie Kalorien, Zucker und Magnesium.
  • Schlaf: Hier werden Intervalldaten zur Dauer und Art des Schlafs eines Nutzers erfasst.
  • Vitale Daten: Hier werden wichtige Informationen zur allgemeinen Gesundheit des Nutzers erfasst. Dazu gehören Daten wie Körpertemperatur, Blutzucker, Blutdruck und Sauerstoffsättigung.

Datentypformat

Datentypen in Health Connect werden in Objekten gespeichert, die Unterklassen von Record sind.

Mit jedem Datentyp sind Felder verknüpft, die entweder generisch wie time und zoneOffset oder spezifisch wie title, count und percentage sind. Für einige Felder werden einfache Typen wie „long“, „double“ oder „string“ verwendet, während für andere komplexe Typen wie Aufzählungen und Klassen wie Instant und ZoneOffset verwendet werden. Die Attribute dieser Felder können erforderlich oder optional sein. Einige Attribute sind schreibgeschützt, einige sind auf einen bestimmten Wertebereich beschränkt.

Eine vollständige Liste der verfügbaren Datentypen und ihrer Felder findest du in den Klassen in Jetpack.

Zusätzliche Datenattribute

Die Daten in der Health Connect API enthalten auch Metadaten-Attribute, die in der folgenden Liste beschrieben werden:

  • Health Connect-ID: Jedem Datenpunkt wird beim Erstellen eine eindeutige Kennung (UID) zugewiesen. Das ist nützlich für Standardlese- und Schreibvorgänge. Weitere Informationen findest du unter Health Connect-ID.
  • Zuletzt geändert: Dies ist der Zeitstempel der letzten Instanz, für die ein Eintrag aktualisiert wurde. Sie wird automatisch beim ersten Erstellen des Eintrags oder bei jeder Aktualisierung generiert.
  • Herkunft der Daten: In Health Connect werden Informationen zur App gespeichert, aus der die Daten stammen. Sie enthält den Paketnamen dieser Quelle, der beim Erstellen automatisch hinzugefügt wird.
  • Gerät: In Health Connect werden Informationen zum Gerät gespeichert, von dem die Daten stammen. Dazu zählen der Hersteller und das Modell des Geräts, für das du den Wert manuell angibst.
  • Client-ID: Health Connect stellt Client-IDs bereit, damit Client-Apps Daten mit ihren eigenen IDs referenzieren können. Das hilft bei der Konfliktbehebung und vereinfacht die Synchronisierung. Dieser Wert wird manuell in den Eintrag aufgenommen.
  • Version des Kundeneintrags: Neben der Client-ID bietet Health Connect eine Versionierung, mit der sich Änderungen bei der Datensynchronisierung besser nachvollziehen lassen. Dieser Wert wird manuell in den Eintrag aufgenommen.
  • Aufzeichnungsmethode: Mit Health Connect kannst du nachvollziehen, wie Daten erfasst werden. Dazu gehören Apps, die Daten passiv (automatisch) erfassen, und Nutzer, die Daten aktiv oder manuell erfassen.

Health Connect-ID

Health Connect weist neu eingefügten Datenobjekten eindeutige Kennungen (UIDs) zu, mit denen sie identifiziert und von anderen unterschieden werden können. Health Connect-IDs sind nützlich für Lese- oder Schreibanfragen. Health Connect-IDs sind nicht mit Client-IDs identisch. Client-IDs werden von einer Client-App zugewiesen, während Health Connect ausschließlich Health Connect-IDs zuweist.

Beachte bei der Arbeit mit Health Connect-IDs Folgendes:

  • Sitzungen haben eine einzelne Health Connect-ID, aber Daten innerhalb von Sitzungen haben eigene Health Connect-IDs.
  • Health Connect-IDs sind nicht mit Zeitstempeln verknüpft oder verbunden.
  • Bei einigen Anwendungsfällen muss während eines Workflows möglicherweise eine bestimmte Health Connect-ID gespeichert werden. Beispielsweise ist eine bestimmte ID erforderlich, um die Dateneingabe, die ein Nutzer gerade protokolliert hat, abzurufen und sie dem Nutzer anzuzeigen.

Zeit in Health Connect

Alle Daten, die in Health Connect geschrieben werden, müssen Informationen zum Zeitzonenoffset enthalten. Wenn du den Zeitzonenoffset angibst, können Apps die Daten lesen und in gesetzlicher Zeit darstellen. Die gesetzliche oder auch bürgerliche Zeit ist die lokale und für den Nutzer relevante Zeit, aber nicht unbedingt die koordinierte Weltzeit (UTC).

In seltenen Fällen ist der Zeitzonenoffset möglicherweise nicht verfügbar. In Android 14 (API-Level 34) legt Health Connect den Zeitzonenoffset basierend auf der Standardzeitzone des Geräts fest. Unter Android 13 und niedrigeren Versionen (API-Level 33 und niedriger) ist es möglich, Daten in Health Connect zu schreiben, ohne Informationen zum Zeitzonenoffset anzugeben. Dies sollte nach Möglichkeit vermieden werden.

Uhrzeit und Zeitzone

Wenn du beim Schreiben von Daten Informationen zum Zeitzonenoffset angibst, werden beim Lesen von Daten in Health Connect Informationen zur Zeitzone bereitgestellt. In bestimmten Fällen funktioniert das jedoch nicht, z. B. wenn der Zeitzonenoffset nicht angegeben ist. Deine App muss mit beiden Arten von Daten umgehen können, und zwar auf eine Weise, die für deine spezifischen Umstände sinnvoll ist.

Berechtigungen

Bevor Berechtigungen angefordert werden, müssen sie in deinem Manifest deklariert werden. In den folgenden Tabellen findest du eine vollständige Zuordnung der Datentypen und ihrer Berechtigungen.

Für 1.0.0-alpha10 und höher

Berechtigungsreferenz Erklärung zur Leseberechtigung
Lesevorgänge im Hintergrund android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND
Verlaufslesen android.permission.health.READ_HEALTH_DATA_HISTORY

Datensatztyp Erklärung zu Lese- und Schreibberechtigungen
ActiveCaloriesBurned android.permission.health.READ_ACTIVE_CALORIES_BURNED
android.permission.health.WRITE_ACTIVE_CALORIES_BURNED
BasalBodyTemperature android.permission.health.READ_BASAL_BODY_TEMPERATURE
android.permission.health.WRITE_BASAL_BODY_TEMPERATURE
BasalMetabolicRate android.permission.health.READ_BASAL_METABOLIC_RATE
android.permission.health.WRITE_BASAL_METABOLIC_RATE
BloodGlucose android.permission.health.READ_BLOOD_GLUCOSE
android.permission.health.WRITE_BLOOD_GLUCOSE
BloodPressure android.permission.health.READ_BLOOD_PRESSURE
android.permission.health.WRITE_BLOOD_PRESSURE
BodyFat android.permission.health.READ_BODY_FAT
android.permission.health.WRITE_BODY_FAT
BodyTemperature android.permission.health.READ_BODY_TEMPERATURE
android.permission.health.WRITE_BODY_TEMPERATURE
BodyWaterMass android.permission.health.READ_BODY_WATER_MASS
android.permission.health.WRITE_BODY_WATER_MASS
BoneMass android.permission.health.READ_BONE_MASS
android.permission.health.WRITE_BONE_MASS
CervicalMucus android.permission.health.READ_CERVICAL_MUCUS
android.permission.health.WRITE_CERVICAL_MUCUS
CyclingPedalingCadence android.permission.health.READ_CYCLING_PEDALING_CADENCE
android.permission.health.WRITE_CYCLING_PEDALING_CADENCE
Distance android.permission.health.READ_DISTANCE
android.permission.health.WRITE_DISTANCE
ElevationGained android.permission.health.READ_ELEVATION_GAINED
android.permission.health.WRITE_ELEVATION_GAINED
ExerciseSession android.permission.health.READ_EXERCISE
android.permission.health.READ_EXERCISE_ROUTE
android.permission.health.WRITE_EXERCISE
android.permission.health.WRITE_EXERCISE_ROUTE

Trainingstyp

EXERCISE_TYPE_BIKING
EXERCISE_TYPE_BIKING_HAND
EXERCISE_TYPE_BIKING_MOUNTAIN
EXERCISE_TYPE_BIKING_ROAD
EXERCISE_TYPE_BIKING_SPINNING
EXERCISE_TYPE_BIKING_STATIONARY
EXERCISE_TYPE_BIKING_UTURN
EXERCISE_TYPE_CANOEING
EXERCISE_TYPE_CROSSFIT
EXERCISE_TYPE_DANCING
EXERCISE_TYPE_ELLIPTICAL
EXERCISE_TYPE_GOLF
EXERCISE_TYPE_HORSEBACK_RIDING
EXERCISE_TYPE_KAYAKING
EXERCISE_TYPE_KICKBOXING
EXERCISE_TYPE_MARTIAL_ARTS
EXERCISE_TYPE_PILATES
EXERCISE_TYPE_ROLLERBLADING
EXERCISE_TYPE_RUNNING
EXERCISE_TYPE_RUNNING_JOGGING
EXERCISE_TYPE_RUNNING_SAND
FloorsClimbed android.permission.health.READ_FLOORS_CLIMBED
android.permission.health.WRITE_FLOORS_CLIMBED
HeartRate android.permission.health.READ_HEART_RATE
android.permission.health.WRITE_HEART_RATE
Height android.permission.health.READ_HEIGHT
android.permission.health.WRITE_HEIGHT
Hydration android.permission.health.READ_HYDRATION
android.permission.health.WRITE_HYDRATION
IntermenstrualBleeding android.permission.health.READ_INTERMENSTRUAL_BLEEDING
android.permission.health.WRITE_INTERMENSTRUAL_BLEEDING
LeanBodyMass android.permission.health.READ_LEAN_BODY_MASS
android.permission.health.WRITE_LEAN_BODY_MASS
MenstruationFlow android.permission.health.READ_MENSTRUATION
android.permission.health.WRITE_MENSTRUATION
MindfulnessSession android.permission.health.READ_MINDFULNESS
android.permission.health.WRITE_MINDFULNESS
Nutrition android.permission.health.READ_NUTRITION
android.permission.health.WRITE_NUTRITION
OvulationTest android.permission.health.READ_OVULATION_TEST
android.permission.health.WRITE_OVULATION_TEST
PlannedExerciseSession android.permission.health.READ_PLANNED_EXERCISE
android.permission.health.WRITE_PLANNED_EXERCISE
Power android.permission.health.READ_POWER
android.permission.health.WRITE_POWER
RespiratoryRate android.permission.health.READ_RESPIRATORY_RATE
android.permission.health.WRITE_RESPIRATORY_RATE
RestingHeartRate android.permission.health.READ_RESTING_HEART_RATE
android.permission.health.WRITE_RESTING_HEART_RATE
SexualActivity android.permission.health.READ_SEXUAL_ACTIVITY
android.permission.health.WRITE_SEXUAL_ACTIVITY
SkinTemperature android.permission.health.READ_SKIN_TEMPERATURE
android.permission.health.WRITE_SKIN_TEMPERATURE
SleepSession android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP
Speed android.permission.health.READ_SPEED
android.permission.health.WRITE_SPEED
Steps android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS
StepsCadence android.permission.health.READ_STEPS_CADENCE
android.permission.health.WRITE_STEPS_CADENCE
TotalCaloriesBurned android.permission.health.READ_TOTAL_CALORIES_BURNED
android.permission.health.WRITE_TOTAL_CALORIES_BURNED
VO2max android.permission.health.READ_VO2_MAX
android.permission.health.WRITE_VO2_MAX
Weight android.permission.health.READ_WEIGHT
android.permission.health.WRITE_WEIGHT
WheelchairPushes android.permission.health.READ_WHEELCHAIR_PUSHES
android.permission.health.WRITE_WHEELCHAIR_PUSHES

Für 1.0.0-alpha09 und niedriger

Datensatztyp Erklärung zu Lese- und Schreibberechtigungen
ActiveCaloriesBurned androidx.health.permission.ActiveCaloriesBurned.READ
androidx.health.permission.ActiveCaloriesBurned.WRITE
BasalBodyTemperature androidx.health.permission.BasalBodyTemperature.READ
androidx.health.permission.BasalBodyTemperature.WRITE
BasalMetabolicRate androidx.health.permission.BasalMetabolicRate.READ
androidx.health.permission.BasalMetabolicRate.WRITE
BloodGlucose androidx.health.permission.BloodGlucose.READ
androidx.health.permission.BloodGlucose.WRITE
BloodPressure androidx.health.permission.BloodPressure.READ
androidx.health.permission.BloodPressure.WRITE
BodyFat androidx.health.permission.BodyFat.READ
androidx.health.permission.BodyFat.WRITE
BodyTemperature androidx.health.permission.BodyTemperature.READ
androidx.health.permission.BodyTemperature.WRITE
BodyWaterMass androidx.health.permission.BodyWaterMass.READ
androidx.health.permission.BodyWaterMass.WRITE
BoneMass androidx.health.permission.BoneMass.READ
androidx.health.permission.BoneMass.WRITE
CervicalMucus androidx.health.permission.CervicalMucus.READ
androidx.health.permission.CervicalMucus.WRITE
CyclingPedalingCadence androidx.health.permission.CyclingPedalingCadence.READ
androidx.health.permission.CyclingPedalingCadence.WRITE
Distance androidx.health.permission.Distance.READ
androidx.health.permission.Distance.WRITE
ElevationGained androidx.health.permission.ElevationGained.READ
androidx.health.permission.ElevationGained.WRITE
ExerciseSession androidx.health.permission.ExerciseSession.READ
androidx.health.permission.ExerciseSession.WRITE

Trainingstyp

EXERCISE_TYPE_BIKING
EXERCISE_TYPE_BIKING_HAND
EXERCISE_TYPE_BIKING_MOUNTAIN
EXERCISE_TYPE_BIKING_ROAD
EXERCISE_TYPE_BIKING_SPINNING
EXERCISE_TYPE_BIKING_STATIONARY
EXERCISE_TYPE_BIKING_UTURN
EXERCISE_TYPE_CANOEING
EXERCISE_TYPE_CROSSFIT
EXERCISE_TYPE_DANCING
EXERCISE_TYPE_ELLIPTICAL
EXERCISE_TYPE_GOLF
EXERCISE_TYPE_HORSEBACK_RIDING
EXERCISE_TYPE_KAYAKING
EXERCISE_TYPE_KICKBOXING
EXERCISE_TYPE_MARTIAL_ARTS
EXERCISE_TYPE_PILATES
EXERCISE_TYPE_ROLLERBLADING
EXERCISE_TYPE_RUNNING
EXERCISE_TYPE_RUNNING_JOGGING
EXERCISE_TYPE_RUNNING_SAND
FloorsClimbed androidx.health.permission.FloorsClimbed.READ
androidx.health.permission.FloorsClimbed.WRITE
HeartRate androidx.health.permission.HeartRate.READ
androidx.health.permission.HeartRate.WRITE
Height androidx.health.permission.Height.READ
androidx.health.permission.Height.WRITE
Hydration androidx.health.permission.Hydration.READ
androidx.health.permission.Hydration.WRITE
IntermenstrualBleeding androidx.health.permission.IntermenstrualBleeding.READ
androidx.health.permission.IntermenstrualBleeding.WRITE
LeanBodyMass androidx.health.permission.LeanBodyMass.READ
androidx.health.permission.LeanBodyMass.WRITE
MenstruationFlow androidx.health.permission.Menstruation.READ
androidx.health.permission.Menstruation.WRITE
Nutrition androidx.health.permission.Nutrition.READ
androidx.health.permission.Nutrition.WRITE
OvulationTest androidx.health.permission.OvulationTest.READ
androidx.health.permission.OvulationTest.WRITE
PlannedExerciseSession androidx.health.permission.PlannedExerciseSession.READ
androidx.health.permission.PlannedExerciseSession.WRITE
Power androidx.health.permission.Power.READ
androidx.health.permission.Power.WRITE
RespiratoryRate androidx.health.permission.RespiratoryRate.READ
androidx.health.permission.RespiratoryRate.WRITE
RestingHeartRate androidx.health.permission.RestingHeartRate.READ
androidx.health.permission.RestingHeartRate.WRITE
SexualActivity androidx.health.permission.SexualActivity.READ
androidx.health.permission.SexualActivity.WRITE
SleepSession androidx.health.permission.SleepSession.READ
androidx.health.permission.SleepSession.WRITE
Speed androidx.health.permission.Speed.READ
androidx.health.permission.Speed.WRITE
Steps androidx.health.permission.Steps.READ
androidx.health.permission.Steps.WRITE
StepsCadence androidx.health.permission.StepsCadence.READ
androidx.health.permission.StepsCadence.WRITE
TotalCaloriesBurned androidx.health.permission.TotalCaloriesBurned.READ
androidx.health.permission.TotalCaloriesBurned.WRITE
VO2max androidx.health.permission.VO2Max.READ
androidx.health.permission.VO2Max.WRITE
Weight androidx.health.permission.Weight.READ
androidx.health.permission.Weight.WRITE
WheelchairPushes androidx.health.permission.WheelchairPushes.READ
androidx.health.permission.WheelchairPushes.WRITE

Datentypen und Berechtigungen prüfen

Nachdem du deine Datentypen und Berechtigungen geplant hast, kannst du sie während der Entwicklung implementieren.

Prüfe vor dem Hochladen deiner App in den Play Store noch einmal die Liste der Datentypen und Berechtigungen, die für deine App erforderlich sind. So kannst du die Datennutzung deiner App korrekt angeben.

Wenn du deine App für die Veröffentlichung im Play Store vorbereitest, deklariere den Zugriff auf die Health Connect-Datentypen, die deine App verwendet. Andernfalls wird Nutzern möglicherweise eine Fehlermeldung angezeigt, dass deine App nicht auf die Health Connect-Datentypen zugreifen kann, weil dafür eine spezielle Genehmigung erforderlich ist.