Erste Schritte mit Health Connect

In diesem Leitfaden erfährst du, wie du Health Connect in deiner App verwenden kannst.

Schritt 1: Health Connect App vorbereiten

Die Health Connect-App ist für die Verarbeitung aller Anfragen verantwortlich, App über das Health Connect SDK sendet. Zu diesen Anfragen gehört das Speichern und den Lese- und Schreibzugriff verwalten.

Der Zugriff auf Health Connect hängt von der auf dem Smartphone installierten Android-Version ab. In den folgenden Abschnitten wird der Umgang mit verschiedenen neueren Android-Versionen beschrieben.

Android 14

Ab Android 14 (API-Level 34) ist Health Connect Teil des Android-Framework. Diese Version von Health Connect ist ein Framework-Modul. Mit ist keine Einrichtung erforderlich.

Android 13 und niedriger

Unter Android 13 (API-Level 33) und niedrigeren Versionen ist Health Connect nicht Teil von Android-Framework entwickelt. Dazu müssen Sie die Health Connect App aus dem Google Play Store.

Wenn Sie Ihre App mit Health Connect unter Android 13 und niedriger integriert haben und unter Android 14 migrieren möchten, siehe Migration von Android 13 zu 14

Öffne die Health Connect App

Health Connect wird nicht mehr standardmäßig auf dem Startbildschirm angezeigt. So öffnen Sie Google Health Verbinden, gehe zu Einstellungen > Apps > Health Connect oder Health Connect hinzufügen zu das Menü Schnelleinstellungen.

Außerdem muss die Displaysperre für Health Connect aktiviert sein mit eine PIN, ein Muster oder ein Passwort, damit die in Health gespeicherten Gesundheitsdaten Connect ist vor Angreifern geschützt, während das Gerät gesperrt ist. Um eine öffnen Sie Einstellungen > Sicherheit > Displaysperre.

Schritt 2: Der App das Health Connect SDK hinzufügen

Das Health Connect SDK ist für die Nutzung der Health Connect API Anfragen beim Ausführen von Vorgängen an den Datenspeicher im Health-Bereich App verbinden.

Fügen Sie die Health Connect SDK-Abhängigkeit in die Datei build.gradle auf Modulebene ein:

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

Die aktuelle Version finden Sie in den Health Connect-Releases.

Schritt 3: Anwendung konfigurieren

In den folgenden Abschnitten wird erläutert, wie Sie Ihre App für die Integration in Health Connect

Erklärung von Berechtigungen

Der Zugriff auf Gesundheits- und Fitnessdaten ist sensibel. Health Connect implementiert eine Sicherheitsebene für Lese- und Schreibvorgänge, um das Vertrauen der Nutzer zu bewahren.

Deklarieren Sie Lese- und Schreibberechtigungen für die Datei AndroidManifest.xml basierend auf die erforderlichen Datentypen. Achten Sie darauf, dass Sie die Berechtigungen verwenden, Sie haben Zugriff angefordert, nachdem Sie das Formular ausgefüllt haben.

Health Connect verwendet das Standardformat für die Erklärung von Android-Berechtigungen. Weisen Sie Berechtigungen mit den <uses-permission>-Tags zu. Verschachteln Sie sie im <manifest>-Tags.

<manifest>
  <uses-permission android:name="android.permission.health.READ_HEART_RATE"/>
  <uses-permission android:name="android.permission.health.WRITE_HEART_RATE"/>
  <uses-permission android:name="android.permission.health.READ_STEPS"/>
  <uses-permission android:name="android.permission.health.WRITE_STEPS"/>

  <application>
  ...
  </application>
</manifest>

Eine vollständige Liste der Berechtigungen und der entsprechenden Datentypen finden Sie unter Liste der Datentypen.

Dialogfeld zur Datenschutzerklärung Ihrer App anzeigen

Deine Android-Manifest-Datei muss über eine Activity verfügen, die die Datenschutzerklärung, in der die angeforderten Berechtigungen durch Ihre App begründen, in dem beschrieben wird, wie die Daten der Nutzenden verwendet und verarbeitet werden.

Deklarieren Sie diese Aktivität zur Verarbeitung des ACTION_SHOW_PERMISSIONS_RATIONALE Intent an die App gesendet, wenn der Nutzer auf den Datenschutzerklärung.

...
<application>
  ...
  <!-- For supported versions through Android 13, create an activity to show the rationale
       of Health Connect permissions once users click the privacy policy link. -->
  <activity
      android:name=".PermissionsRationaleActivity"
      android:exported="true">
    <intent-filter>
      <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
    </intent-filter>
  </activity>

  <!-- For versions starting Android 14, create an activity alias to show the rationale
       of Health Connect permissions once users click the privacy policy link. -->
  <activity-alias
      android:name="ViewPermissionUsageActivity"
      android:exported="true"
      android:targetActivity=".PermissionsRationaleActivity"
      android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
    <intent-filter>
      <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
      <category android:name="android.intent.category.HEALTH_PERMISSIONS" />
    </intent-filter>
  </activity-alias>
  ...
</application>
...

Health Connect-Client abrufen

HealthConnectClient ist ein Einstiegspunkt für die Health Connect API. Damit kann die App den Datenspeicher in der Health Connect-App verwenden. Es verwaltet automatisch die Verbindung zur zugrunde liegenden Speicherschicht und verarbeitet IPC und Serialisierung ausgehender Anfragen und eingehender Antworten.

Um eine Clientinstanz abzurufen, geben Sie den Namen des Health Connect-Pakets in der Android-Manifest zuerst.

<application> ... </application>
...
<!-- Check if Health Connect is installed -->
<queries>
    <package android:name="com.google.android.apps.healthdata" />
</queries>

Prüfe dann unter „Aktivität“, ob Health Connect installiert ist mit getSdkStatus. Ist dies der Fall, erhalten Sie eine HealthConnectClient-Instanz.

val availabilityStatus = HealthConnectClient.getSdkStatus(context, providerPackageName)
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) {
  return // early return as there is no viable integration
}
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED) {
  // Optionally redirect to package installer to find a provider, for example:
  val uriString = "market://details?id=$providerPackageName&url=healthconnect%3A%2F%2Fonboarding"
  context.startActivity(
    Intent(Intent.ACTION_VIEW).apply {
      setPackage("com.android.vending")
      data = Uri.parse(uriString)
      putExtra("overlay", true)
      putExtra("callerId", context.packageName)
    }
  )
  return
}
val healthConnectClient = HealthConnectClient.getOrCreate(context)
// Issue operations with healthConnectClient

Schritt 4: Berechtigungen vom Nutzer anfordern

Nachdem Sie eine Clientinstanz erstellt haben, muss Ihre Anwendung Berechtigungen vom Nutzer. Nutzer müssen jederzeit dazu berechtigt sein, Berechtigungen zu erteilen oder zu verweigern.

Erstellen Sie dazu eine Reihe von Berechtigungen für die erforderlichen Datentypen. Achten Sie darauf, dass die Berechtigungen in der Gruppe zuerst in deinem Android-Manifest deklariert sind.

// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
  HealthPermission.getReadPermission(HeartRateRecord::class),
  HealthPermission.getWritePermission(HeartRateRecord::class),
  HealthPermission.getReadPermission(StepsRecord::class),
  HealthPermission.getWritePermission(StepsRecord::class)
)

Mit getGrantedPermissions können Sie prüfen, ob Ihre App bereits über die erforderliche Berechtigungen gewährt wurden. Falls nicht, verwenden Sie createRequestPermissionResultContract zum Anfordern für diese Berechtigungen. Daraufhin wird der Bildschirm mit den Health Connect-Berechtigungen angezeigt.

// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()

val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions successfully granted
  } else {
    // Lack of required permissions
  }
}

suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
  val granted = healthConnectClient.permissionController.getGrantedPermissions()
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions already granted; proceed with inserting or reading data
  } else {
    requestPermissions.launch(PERMISSIONS)
  }
}

Gehen Sie nicht davon aus, dass Berechtigungen konstant sind, denn Nutzer können Berechtigungen erteilen oder widerrufen. jederzeit ändern. Ihre App muss regelmäßig prüfen, ob Berechtigungen erteilt wurden. und mit Szenarien umgehen, in denen Berechtigungen verloren gehen.

Schritt 5: Vorgänge ausführen

Nachdem alles eingerichtet ist, führen Sie Lese- und Schreibvorgänge in Ihrer Anwendung aus.

Daten schreiben

Strukturieren Sie Ihre Daten in einem Datensatz. Sehen Sie sich die Liste der Datentypen, die in Health Connect verfügbar sind.

val stepsRecord = StepsRecord(
    count = 120,
    startTime = START_TIME,
    endTime = END_TIME,
    startZoneOffset = START_ZONE_OFFSET,
    endZoneOffset = END_ZONE_OFFSET,
)

Schreiben Sie dann den Eintrag mit insertRecords.

suspend fun insertSteps(healthConnectClient: HealthConnectClient) {
    try {
        val stepsRecord = StepsRecord(
            count = 120,
            startTime = START_TIME,
            endTime = END_TIME,
            startZoneOffset = START_ZONE_OFFSET,
            endZoneOffset = END_ZONE_OFFSET,
        )
        healthConnectClient.insertRecords(listOf(stepsRecord))
    } catch (e: Exception) {
        // Run error handling here
    }
}

Daten lesen

Mit readRecords können Sie Ihre Daten einzeln auslesen.

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

Sie können Ihre Daten auch aggregiert mit aggregate

suspend fun aggregateSteps(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.aggregate(
            AggregateRequest(
                metrics = setOf(StepsRecord.COUNT_TOTAL),
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        // The result may be null if no data is available in the time range
        val stepCount = response[StepsRecord.COUNT_TOTAL]
    } catch (e: Exception) {
        // Run error handling here
    }
}

Videoanleitungen

In diesen Videos erfährst du mehr über die Health Connect-Funktionen als Best Practice-Richtlinien für eine reibungslose Integration:

Ressourcen

Die folgenden Ressourcen helfen Ihnen bei der für die Entwicklung nutzen.

  • Health Connect SDK (verfügbar auf Jetpack): Fügen Sie dieses SDK in Ihren um die Health Connect API zu verwenden.
  • API-Referenz: Sehen Sie sich die Jetpack-Referenz für die Health Connect API
  • API-Anfrageformular für die Erklärung von Entwicklern:Verwenden Sie dieses Formular, um Lese- und Schreibzugriff auf Datentypen anfordern. Weitere Informationen finden Sie unter Fordern Sie Zugriff auf Health Connect-Datentypen an, um weitere Informationen zu erhalten.
  • Optionales GitHub-Codebeispiel und Codelab: Sehen Sie sich das GitHub-Codebeispiel an. Repository und die Codelab-Übung, mit der Sie begonnen.

Nächste Schritte

Unter Gängige Workflows erfahren Sie, wie Sie Vorgänge in Health Connect, z. B.: