Connessione Salute verrà inclusa con Android 14 come livello di archiviazione dati comune. dati sulla salute dei consumatori, protetti da autorizzazioni granulari e accessibili App di sistema Android (in questo documento viene chiamata "framework" .
Gli sviluppatori dovrebbero considerare l'APK Connessione Salute (Android 13) come un'alternativa di compatibilità per il modello del framework. Il modello del framework conserverà Il 100% di parità di funzionalità rispetto all'APK precedente.
Durante la transizione da Android 13 ad Android 14, è di vitale importanza che l'esperienza utente rimane il più fluida e intuitiva possibile.
Questo documento illustra il piano di migrazione e fornisce alcuni esempi di migrazione. scenari di deployment ed elenca le modifiche all'SDK Jetpack, che facilita l'accesso API Health Connect.
Piano di migrazione
- Una volta rilasciato Android 14, Google passerà a fornire Connessione Salute come app di sistema Android.
- Verrà poi eseguito il backfill dei dati dall'APK una volta raggiunta la parità di funzionalità.
- Tutti i punti di ingresso avranno come target l'UI dell'app di sistema.
- Verrà avviata la migrazione dei dati. Mentre la migrazione è in corso, Le API dei moduli verranno sospese con un errore "Migrazione in corso" . Questo saranno visibili anche nella UI di Connessione Salute.
- Al termine della migrazione, l'APK potrà essere disinstallato.
Scenari di migrazione di esempio
Ecco alcuni scenari di esempio che spiegano il processo di migrazione per
Tipi di dati di interval
e series
:
Esempio 1 - In esecuzione (dati a intervalli)
Un utente ha raccolto record per 10 anni di esecuzione per un'ora ogni giorno. Questo equivale a:
- Record della sessione di allenamento: 365 * 10 * 1
- Passi: 365 * 10 * 1
- Calorie: 365 * 10 * 1
- Totale = 365 * 10 * 3 (365 * 30) = 10.150
Dato che 1 blocco equivale a 3000 record, i dati sopra riportati ammontano a circa 4 o blocchi di testo.
I nostri test interni hanno confermato che un blocco tipico richiede circa un il secondo da inserire, quindi la migrazione dei dati sopra indicati verrà eseguita secondi.
Esempio 2 - Battito cardiaco (dati serie)
Un utente ha raccolto cinque anni di dati del battito cardiaco (con un record creato ogni al minuto) per un totale di 2.628.000 record.
A 3000 record per blocco, i dati sono distribuiti su 876 blocchi. Dato impiega circa un secondo per l'inserimento, i dati verranno migrati in meno di 15 minuti.
Flusso di migrazione proposto
Abbiamo deciso di optare per la migrazione istantanea. In pratica, questo significa che l'APK diventerà inattivo non appena verrà eseguito l'upgrade del dispositivo a Android 14, con un intervento minimo dell'utente.
Vediamo un flusso di migrazione generale:
- L'utente esegue l'upgrade del dispositivo ad Android 14.
- Jetpack 14 indirizza l'utente alle API del modulo e lo blocca mentre è in corso la migrazione.
- Il processo di migrazione inizia quando la versione del modulo è compatibile con le funzionalità
con l'APK, ovvero la versione del modulo contiene lo stesso insieme di funzionalità oppure
altro ancora. Una volta iniziato il processo di migrazione, l'APK eseguirà la migrazione delle autorizzazioni
e dati.
- Se entrambe le versioni non sono compatibili con le funzionalità, la versione del modulo di cui è necessario eseguire l'upgrade. Una volta completato l'upgrade, il processo di migrazione in ogni circostanza.
- Al termine della migrazione, lo stato viene modificato in "Migrazione Complete", le API del modulo saranno sbloccate.
- Ora l'APK può essere disinstallato.
Elementi UI della migrazione
Le seguenti schermate vengono visualizzate dal modulo Framework per la formazione degli utenti prima e durante la migrazione:
Figura 1. Se l'APK Connessione Salute non è "con conoscenza della migrazione", viene visualizzata una richiesta. che invita l'utente ad aggiornare l'APK. Se l'utente rifiuta l'aggiornamento, continua a funzionare e inizia ad accumulare autorizzazioni e dati:
Figura 2. Se il modulo del framework richiede un aggiornamento per poter diventare funzionalità
compatibile, viene visualizzato un messaggio che chiede all'utente di eseguire l'aggiornamento
riavviare il dispositivo. Se l'utente rifiuta l'aggiornamento, il modulo continua
per funzionare e inizia ad accumulare autorizzazioni e dati:
Figura 3. Durante il processo di migrazione viene visualizzata una rotellina con un testo che spiega che i dati sono in fase di sincronizzazione:
Dati deduplicati
Se il modulo del framework ha iniziato ad acquisire dati e autorizzazioni prima di qualsiasi migrazione o ripristino basato su cloud, quanto segue si applicano tutte le regole.
Autorizzazioni
Se nel modulo del framework sono presenti autorizzazioni, eventuali duplicati le autorizzazioni acquisite dall'APK vengono ignorate durante il processo di migrazione.
Dati
Durante la migrazione, i dati duplicati provenienti dall'APK vengono ignorati. Altro viene data la preferenza ai dati recenti del modulo.
I dati vengono deduplicati il giorno clientRecordId
se l'ID record viene fornito dal
di alto profilo. In caso contrario, gli intervalli di tempo (startTime
e endTime
per
e time
per i record istantanei) vengono trattati come chiave, insieme ai dati
il tipo e il nome del pacchetto dell'app.
Modifiche nell'SDK Jetpack
L'SDK Jetpack funge da punto di integrazione comune sia per l'integrità Collega l'APK e le API del framework Connessione Salute.
Gli OEM possono iniziare l'integrazione con Jetpack 13 in modo che quando Jetpack 14 diventi disponibili, puoi acquisire la nuova libreria e compilarla Android 14.
Rilasceremo una nuova versione dell'SDK che supporta la transizione a Android 14. Dovrai apportare alcune modifiche all'integrazione esistente per per garantire una transizione senza problemi.
Dichiarazione delle autorizzazioni
In Android 13, dichiari le autorizzazioni utilizzando un formato di autorizzazioni personalizzato, in un di risorse collegato al manifest:
#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>
Per supportare Android 14, gli sviluppatori devono passare alle autorizzazioni standard formato:
#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>
Apri Connessione Salute
La maggior parte delle app di terze parti dispone di un pulsante che consente di aprire l'app Connessione Salute, come come "Gestisci accesso" in Fitbit.
In Android 13, apri l'app Connessione Salute utilizzando il nome del pacchetto oppure
tramite l'azione androidx.health.ACTION_HEALTH_CONNECT_SETTINGS
.
In Android 14, devi utilizzare un'azione intent, specificata nell'SDK Jetpack, che ha valori diversi in base alla versione di Android su cui agisce:
@get:JvmName("getHealthConnectSettingsAction")
@JvmStatic val
ACTION_HEALTH_CONNECT_SETTINGS
Recupero del client Connessione Salute in corso...
Abbiamo creato una singola API denominata sdkStatus
, disponibile in Jetpack 11, per
sostituire altre due API deprecate: IsSdkSupported()
e
isProviderAvailable()
.
Modifiche all'API Session Record
Sono stati eliminati quattro sottotipi ExerciseSession
nell'ambito di alpha10
release:
ExerciseEvent
ExerciseLaps
ExerciseRepetitions
SwimmingStrokes
Come in ExerciseSessionRecord
, SleepStage
diventerà un sottotipo di
SleepSession
.
Verranno apportate sia le modifiche (ExerciseSessionRecord
) che i sottotipi (SleepSession
)
sono state rilasciate nell'ambito dell'aggiornamento
dell'SDK di aprile.
Aggiornamento del tipo di sessione di allenamento
I seguenti tipi di sessione di allenamento non saranno più supportati e verranno invece aggiunti i tipi di segmento in una data successiva:
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
Tipi di sostituzioni:
EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
EXERCISE_TYPE_STRENGTH_TRAINING
EXERCISE_TYPE_CALISTHENICS
Gestione del log delle modifiche
Nell'ambito del passaggio dall'APK ad Android 14, non verrà eseguita la migrazione dei log delle modifiche.
Al termine della migrazione, inizierai a ricevere TOKEN_EXPIRED
o
TOKEN_INVALID
eccezioni. Questi aspetti devono essere gestiti nei seguenti modi (ad
ordine di preferenza):
1. Legge e deduplica tutti i dati dall'ultima lettura o per l'ultimo timestamp 30 giorni
Archivia il timestamp dell'ultima lettura dei dati di Connessione Salute da parte di un'app. Sul token scadenza, i dati devono essere rilegati da questo valore o dai 30 giorni precedenti (a seconda di quale sia pari al minimo) e li deduplica in base ai dati letti in precedenza utilizzando l'UUID.
2. Dati letti dall'"ultima lettura" timestamp
Stabilisci un timestamp che indichi quando sono stati letti i dati per l'ultima volta da Connessione Salute e alla scadenza del token, leggi tutti i dati dopo quel valore.
3. Eliminare e rileggere i dati degli ultimi 30 giorni
Elimina tutti i dati letti da Connessione Salute degli ultimi 30 giorni e leggi tutti di quei dati (ad esempio, come avviene quando le app si integrano per la prima volta con l'app Salute) Connetti).
4. Non fare nulla (ad esempio rileggere i dati degli ultimi 30 giorni e non eseguire la deduplicazione)
Questa opzione deve essere utilizzata come ultima risorsa, con un rischio associato di visualizzazione duplicati. Gli sviluppatori dovrebbero invece esplorare le opzioni 1-3, dato che gli UUID dovrebbe essere già presente.
Test delle API Android 14 con l'SDK Jetpack
Il rilascio dell'SDK Android 14 Jetpack è previsto per il 7 giugno 2023, insieme Versione beta 3 di Android 14. Dovrai iniziare a compilare la tua app in base a Android 14 per poter utilizzare l'SDK Android 14 Jetpack.
Se vuoi testare la tua soluzione rispetto alle build di Anteprima per gli sviluppatori Android prima del 7 giugno, contatta il tuo PDC Google per ricevere assistenza.
Se vuoi testare la tua soluzione rispetto alla release beta 3, devi fare le seguenti modifiche nel tuo APK:
- Imposta
compileSDKPreview = UpsideDownCake
. - Aggiorna il file manifest in modo da includere un intent per Android 14:
# 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>
Personalizzazione OEM
In Android 14, privacy e funzionalità di Connessione Salute i controlli di gestione dei dati si trovano nelle Impostazioni di sistema.
Per fare in modo che le schermate di gestione dei dati e delle autorizzazioni abbiano l'aspetto e il design dispositivo, Connessione Salute offre la tematizzazione OEM tramite overlay personalizzati.
Per la documentazione sullo stile OEM, consulta Google Mobile Services di Connessione Salute documentazione.