Health Connect erhält Android 14 als gemeinsame Datenspeicherebene für Gesundheitsdaten von Verbrauchern, die durch detaillierte Berechtigungen geschützt sind und als Android-System-App (in diesem Dokument als „Framework“ bezeichnet) Modul).
Entwickler sollten das Health Connect APK (Android 13) Kompatibilitätsebene für das Framework-Modell. Das Framework-Modell behält 100% Funktionsparität mit dem APK-Vorgänger des Vorgängers.
Bei der Umstellung von Android 13 auf 14 ist es außerordentlich wichtig, die Nutzererfahrung so reibungslos und intuitiv wie möglich zu gestalten.
Dieses Dokument enthält eine Beschreibung des Migrationsplans und einige Beispiele für die Migration. und eine Liste der Änderungen am Jetpack SDK, das den Zugriff auf den Health Connect API
Migrationsplan
- Nach der Veröffentlichung von Android 14 stellt Google Health Connect bereit als Android-System-App.
- Sobald die Funktionsparität erreicht ist, werden die Daten aus dem APK per Backfill übertragen.
- Alle Einstiegspunkte richten sich nach der Benutzeroberfläche der System-App.
- Die Datenmigration wird gestartet. Während der Migration Modul-APIs werden mit dem Status „Migration im Prozess“ gesperrt Status. Dieses sind auch in der Health Connect-Benutzeroberfläche sichtbar.
- Sobald die Migration abgeschlossen ist, kann das APK deinstalliert werden.
Beispiele für Migrationsszenarien
Hier sind einige Beispielszenarien, die den Migrationsprozess für beide
interval
- und series
-Datentypen:
Beispiel 1 – Wird ausgeführt (Intervalldaten)
Ein Nutzer erfasst täglich eine Stunde lang Laufdaten für 10 Jahre. Dieses entspricht:
- Trainingsaufzeichnungen: 365 * 10 * 1
- Schritte: 365 * 10 * 1
- Kalorien: 365 * 10 * 1
- Gesamt = 365 * 10 * 3 (365 * 30) = 10.150
Da ein Chunk 3.000 Datensätzen entspricht, ergeben die obigen Daten insgesamt etwa 4 Blöcke.
Unsere internen Tests haben ergeben, dass ein typischer Chunk zum Einfügen, sodass die obigen Daten in etwa 4 Sekunden.
Beispiel 2 – Herzfrequenz (Seriendaten)
Ein Benutzer hat Herzfrequenzdaten über 5 Jahre gesammelt (mit einem Datensatz, der alle Minute) und insgesamt 2.628.000 Datensätze.
Bei 3.000 Datensätzen pro Block werden die Daten auf 876 Blöcke verteilt. Angegeben dass ein Chunk etwa eine Sekunde zum Einfügen benötigt, werden die Daten in weniger als 15 Minuten.
Vorgeschlagener Migrationsablauf
Wir haben uns für eine sofortige Migration entschieden. In der Praxis bedeutet dies, bedeutet, dass das APK inaktiv wird, sobald das Gerät auf Android 14 mit minimalem Eingriff durch den Nutzer
Werfen wir einen Blick auf den allgemeinen Migrationsablauf:
- Der Nutzer aktualisiert sein Gerät auf Android 14.
- Jetpack 14 leitet den Nutzer zu den Modul-APIs weiter und blockiert sie, während die Migration läuft.
- Der Migrationsprozess beginnt, wenn die Modulversion mit den Funktionen kompatibel ist
mit dem APK, d.h. die Modulversion enthält dieselben Funktionen oder
mehr. Sobald der Migrationsprozess begonnen hat, migriert das APK die Berechtigungen
und Daten.
- Sind beide Versionen nicht funktionskompatibel, wird die Modulversion müssen aktualisiert werden. Sobald das Upgrade abgeschlossen ist, beginnen.
- Sobald die Migration abgeschlossen ist, ändert sich der Status in „Migration“. Complete' (Abgeschlossen) an, wodurch die Blockierung der Modul-APIs aufgehoben wird.
- Das APK kann jetzt deinstalliert werden.
UI-Elemente der Migration
Die folgenden Bildschirme werden vom Framework-Modul für die Nutzerschulung angezeigt sowohl vor als auch während der Migration:
Abbildung 1: Wenn das Health Connect-APK nicht „migrationsbasiert“ ist, wird eine Aufforderung angezeigt und den Nutzer anweisen, das APK zu aktualisieren. Wenn der Nutzer die Aktualisierung ablehnt, funktioniert weiterhin und beginnt, Berechtigungen und Daten zu sammeln:
Abbildung 2: Wenn das Framework-Modul aktualisiert werden muss, damit es zu einer Funktion wird
kompatibel ist, wird eine Aufforderung angezeigt,
die den Nutzer auffordert, das Update durchzuführen,
das Gerät neu zu starten. Wenn der Nutzer die Aktualisierung ablehnt, fährt das Modul fort.
und beginnt, Berechtigungen und Daten zu sammeln:
Abbildung 3: Während der Migration wird ein rotierendes Ladesymbol mit einem Hinweis angezeigt, dass die Daten synchronisiert werden:
Deduplizierte Daten
Wenn das Framework-Modul begonnen hat, Daten und Berechtigungen abzurufen bevor eine Migration oder eine cloudbasierte Wiederherstellung durchgeführt wird, geschieht Folgendes: gelten.
Berechtigungen
Wenn im Framework-Modul Berechtigungen vorhanden sind, werden alle doppelten Vom APK erworbene Berechtigungen werden während der Migration ignoriert.
Daten
Während der Migration werden doppelte Daten vom APK ignoriert. Mehr Aktuelle Daten aus dem Modul haben Vorrang.
Die Daten werden am clientRecordId
dedupliziert, wenn die Datensatz-ID vom
Client. Ist dies nicht der Fall, werden die Zeitintervalle (startTime
und endTime
für interne
Datensätze und time
für Instant-Datensätze) werden zusammen mit den Daten als Schlüssel behandelt
Typ und Paketname der App.
Änderungen im Jetpack SDK
Das Jetpack SDK dient als gemeinsamer Integrationspunkt für die Verbinden Sie das APK und die Framework-APIs von Health Connect.
OEMs können mit der Integration von Jetpack 13 beginnen, sodass Jetpack 14 verfügbar ist, können Sie die neue Bibliothek verwenden und innerhalb von Android 14
Wir veröffentlichen eine neue SDK-Version, die die Umstellung auf Android 14 Sie müssen einige Änderungen an Ihrer bestehenden Integration vornehmen, um sorgen für einen reibungslosen Übergang.
Erklärung von Berechtigungen
In Android 13 deklarieren Sie Berechtigungen mithilfe eines benutzerdefinierten Berechtigungsformats, Ressourcendatei, die mit dem Manifest verknüpft ist:
#AndroidManifest.xml
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
</intent-filter>
<meta-data
android:name="health_permissions"
android:resource="@array/health_permissions"/>
</activity>
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
#health_permissions.xml
<resources>
<array name="health_permissions">
<item>androidx.health.permission.SleepSession.READ</item>
<item>androidx.health.permission.SleepStage.READ</item>
<item>androidx.health.permission.Weight.READ</item>
<item>androidx.health.permission.Weight.WRITE</item>
</array>
</resources>
Zur Unterstützung von Android 14 müssen Entwickler zu den Standardberechtigungen wechseln Format:
#AndroidManifest.xml
<uses-permission android:name=”android.permission.health.READ_SLEEP” />
<uses-permission android:name=”android.permission.health.READ_WEIGHT” />
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT” />
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
</activity>
<queries>
<package android:name="com.google.android.apps.healthdata"/>
</queries>
Health Connect öffnen
Die meisten Drittanbieter-Apps haben eine Schaltfläche, mit der die Health Connect App geöffnet werden kann, wie z. B. „Zugriff verwalten“ in Fitbit.
In Android 13 öffnen Sie die Health Connect App entweder über den Paketnamen oder
über die Aktion androidx.health.ACTION_HEALTH_CONNECT_SETTINGS
.
In Android 14 müssen Sie eine im Jetpack SDK angegebene Intent-Aktion verwenden, Dieser hat je nach Android-Version unterschiedliche Werte:
@get:JvmName("getHealthConnectSettingsAction")
@JvmStatic val
ACTION_HEALTH_CONNECT_SETTINGS
Health Connect-Client abrufen
Wir haben eine einzelne API mit dem Namen sdkStatus
erstellt, die in Jetpack 11 verfügbar ist,
die zwei anderen eingestellten APIs ersetzen: IsSdkSupported()
und
isProviderAvailable()
Session Record API-Änderungen
Vier ExerciseSession
-Untertypen wurden im Rahmen von Alpha10 gelöscht
Release:
ExerciseEvent
ExerciseLaps
ExerciseRepetitions
SwimmingStrokes
Wie bei ExerciseSessionRecord
wird SleepStage
ein Untertyp von
SleepSession
Sowohl die ExerciseSessionRecord
-Untertypen als auch die SleepSession
-Änderungen werden
im Rahmen des SDK-Updates im April veröffentlicht.
Aktualisierung des Trainingssitzungstyps
Die folgenden Trainingssitzungstypen werden nicht mehr unterstützt und stattdessen hinzugefügt später als Segmenttypen an:
EXERCISE_TYPE_BACK_EXTENSION
EXERCISE_TYPE_BARBELL_SHOULDER_PRESS
EXERCISE_TYPE_BENCH_PRESS
EXERCISE_TYPE_BENCH_SIT_UP
EXERCISE_TYPE_BURPEE
EXERCISE_TYPE_CRUNCH
EXERCISE_TYPE_DEADLIFT
EXERCISE_TYPE_DUMBBELL_CURL_LEFT_ARM
EXERCISE_TYPE_DUMBBELL_CURL_RIGHT_ARM
EXERCISE_TYPE_DUMBBELL_FRONT_RAISE
EXERCISE_TYPE_DUMBBELL_LATERAL_RAISE
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM
EXERCISE_TYPE_FORWARD_TWIST
EXERCISE_TYPE_JUMPING_JACK
EXERCISE_TYPE_JUMP_ROPE
EXERCISE_TYPE_LAT_PULL_DOWN
EXERCISE_TYPE_LUNGE
EXERCISE_TYPE_PLANK
EXERCISE_TYPE_SQUAT
EXERCISE_TYPE_UPPER_TWIST
Ersatztypen:
EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
EXERCISE_TYPE_STRENGTH_TRAINING
EXERCISE_TYPE_CALISTHENICS
Umgang mit Änderungsprotokollen
Änderungsprotokolle werden im Rahmen des Wechsels von APK zu Android 14 nicht migriert.
Nach Abschluss der Migration erhalten Sie TOKEN_EXPIRED
oder
TOKEN_INVALID
Ausnahmen. Dies sollte folgendermaßen gehandhabt werden:
Präferenzreihenfolge):
1. Alle Daten seit dem letzten Lesevorgang lesen und deduplizieren oder für den letzten 30 Tage
Speichert einen Zeitstempel, der angibt, wann eine App zuletzt Daten aus Health Connect gelesen hat. Für Token abgelaufen sind, sollten die Daten entweder anhand dieses Wertes oder der letzten 30 Tage noch einmal gelesen werden. (je nachdem, was dem Minimum entspricht) und deduplizieren Sie sie mit bereits gelesenen Daten. mithilfe der UUID.
2. Daten seit dem letzten Lesevorgang lesen Zeitstempel
Zeitstempel festlegen, der angibt, wann Daten zuletzt aus Health Connect gelesen wurden und lesen nach Ablauf des Tokens alle Daten nach diesem Wert.
3. Daten der letzten 30 Tage löschen und noch einmal lesen
Alle aus Health Connect gelesenen Daten der letzten 30 Tage löschen und alle lesen wiederzuverwenden (z.B. nach der ersten Integration von Apps in Health) Verbinden).
4. Nichts unternehmen (d.h. die Daten der letzten 30 Tage noch einmal lesen und keine Duplikate entfernen)
Dies sollte nur als letztes Mittel eingesetzt werden, mit dem damit verbundenen Risiko, dass Anzeigen doppelte Daten. Entwickler sollten stattdessen die Optionen 1 bis 3 in Betracht ziehen, da die UUIDs bereits vorhanden sein.
Android 14-APIs mit dem Jetpack SDK testen
Das Android 14 Jetpack SDK wird voraussichtlich am 7. Juni 2023 veröffentlicht, zusammen mit den Betaversion 3 von Android 14. Sie müssen mit der Kompilierung Ihrer App beginnen, Android 14, um das Android 14 Jetpack SDK verwenden zu können
Wenn Sie Ihre Lösung mit den Builds in der Android-Entwicklervorschau testen möchten Wenden Sie sich vor dem 7. Juni an Ihren Ansprechpartner bei Google.
Wenn Sie Ihre Lösung mit der Betaversion 3 testen möchten, sollten Sie die folgenden Änderungen an Ihrem APK:
- Legen Sie
compileSDKPreview = UpsideDownCake
fest. - Aktualisieren Sie das Manifest, um einen Intent für Android 14 hinzuzufügen:
# AndroidManifest.xml
<uses-permission android:name=”android.permission.health.READ_SLEEP”/>
<uses-permission android:name=”android.permission.health.READ_WEIGHT”/>
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT”/>
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
</intent-filter>
</activity>
<activity-alias>
android:name="AndroidURationaleActivity"
android:exported="true"
android:targetActivity=".RationaleActivity"
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>
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
OEM-Anpassung
In Android 14 werden die Datenschutz- und dass die Datenverwaltungs-Steuerelemente in den Systemeinstellungen.
Um die Bildschirme für die Datenverwaltung und Berechtigungen so aussehen zu lassen, kann Health Connect OEM-Themen nutzen, indem benutzerdefinierte Overlays verwendet werden.
Dokumentation zum OEM-Stil finden Sie unter Health Connect Google Mobile Services Dokumentation.