In diesem Leitfaden erfahren Sie, wie Sie Health Connect in Ihrer App verwenden können.
Schritt 1: Health Connect App vorbereiten
Die Health Connect App ist für die Verarbeitung aller Anfragen verantwortlich, die Ihre 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. Es ist also 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 installieren.
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
Health Connect App öffnen
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. Wenn Sie eine Displaysperre einrichten möchten, gehen Sie zu 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 Einbindung in Health Connect konfigurieren.
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 den erforderlichen Datentypen. Achten Sie darauf, dass Sie die Berechtigungen verwenden, für die Sie den Zugriff angefordert haben, nachdem Sie das [Formular]{:.external} ausgefüllt haben.
Health Connect verwendet das Standardformat für die Erklärung von Berechtigungen unter Android.
Weisen Sie Berechtigungen mit den <uses-permission>
-Tags zu. Ordnen Sie sie den <manifest>
-Tags zu.
<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
Ihr Android-Manifest muss eine Aktivität enthalten, in der die Datenschutzerklärung Ihrer App angezeigt wird. Darin wird erläutert, warum die angeforderten Berechtigungen erforderlich sind und wie die Daten des Nutzers 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.
So kann die App den Datenspeicher in der Health Connect App verwenden. Außerdem wird die Verbindung zur zugrunde liegenden Speicherschicht automatisch verwaltet und alle IPC- und Serialization-Vorgänge für ausgehende Anfragen und eingehende Antworten werden abgedeckt.
Wenn Sie eine Clientinstanz abrufen möchten, müssen Sie zuerst den Health Connect-Paketnamen in Ihrem Android-Manifest deklarieren.
<application> ... </application>
...
<!-- Check if Health Connect is installed -->
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
Prüfen Sie dann in Ihren Aktivitäten, ob Health Connect installiert ist. Verwenden Sie dazu die Taste getSdkStatus
. Wenn ja, rufen Sie eine HealthConnectClient
-Instanz ab.
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 App vom Nutzer Berechtigungen anfordern. Nutzer müssen jederzeit Berechtigungen erteilen oder verweigern können.
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 die erforderlichen Berechtigungen hat. 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, da Nutzer sie jederzeit gewähren oder widerrufen können. Ihre App muss regelmäßig prüfen, ob Berechtigungen erteilt wurden, und mit Szenarien umgehen, in denen die Berechtigung verloren geht.
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. Eine Liste der in Health Connect verfügbaren Datentypen
val stepsRecord = StepsRecord(
count = 120,
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET,
)
Schreiben Sie dann den Datensatz mit insertRecords
auf.
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 mit aggregate
aggregiert abrufen.
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:
- Berechtigungen in Health Connect verwalten
- Lesen und Schreiben in Health Connect
- Tipps für eine gute Health Connect-Integration
Ressourcen
Die folgenden Ressourcen helfen Ihnen bei der für die Entwicklung nutzen.
- Health Connect SDK (in Jetpack verfügbar): Fügen Sie dieses SDK in Ihre Anwendung ein, um die Health Connect API zu verwenden.
- API-Referenz: Sehen Sie sich die Jetpack-Referenz für die Health Connect API an.
- Verwendung von Datentypen deklarieren: In der Play Console können Sie Folgendes tun: den Zugriff auf die Health Connect-Datentypen, die deine aus denen die App liest und in die sie schreibt.
- Optionales GitHub-Codebeispiel und Codelab: Im GitHub-Repository mit Codebeispielen und in der Codelab-Übung finden Sie Informationen für den Einstieg.
Nächste Schritte
Unter Gängige Workflows erfahren Sie, wie Sie in Health Connect beispielsweise folgende Aktionen ausführen: