Questa guida è compatibile con la versione 1.1.0-alpha12 e successive di Health Connect.
Sono state apportate modifiche ai metadati in Health Connect per gli sviluppatori che eseguono l'upgrade alla release 1.1.0-alpha12 o successive.
Informazioni sulla libreria
L'ID artefatto del plug-in Gradle Android di Google Maven
identifica la libreria Health Connect di cui dovrai eseguire l'upgrade.
Aggiungi questa dipendenza dell'SDK Health Connect al file build.gradle a livello di modulo:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
Modifiche ai metadati
A partire dalla versione 1.1.0-alpha12, sono state introdotte due modifiche ai metadati nell'SDK Health Connect Jetpack per verificare l'esistenza di metadati utili aggiuntivi nell'ecosistema. Se metadata non è incluso nel costruttore Record, potresti visualizzare un errore Constructor internal.
Specificare il metodo di registrazione
Devi specificare i dettagli dei metadati ogni volta che viene creata un'istanza di un oggetto di tipo Record().
Quando scrivi dati in Health Connect, devi specificare uno dei quattro metodi di registrazione
utilizzando uno dei metodi factory
corrispondenti per creare un'istanza di Metadata:
| Metodo di registrazione | Descrizione |
|---|---|
RECORDING_METHOD_UNKNOWN |
Non è possibile verificare il metodo di registrazione. |
RECORDING_METHOD_MANUAL_ENTRY |
L'utente ha inserito i dati. |
RECORDING_METHOD_AUTOMATICALLY_RECORDED |
Un dispositivo o un sensore ha registrato i dati. |
RECORDING_METHOD_ACTIVELY_RECORDED |
L'utente ha avviato o terminato la sessione di registrazione su un dispositivo. |
Ad esempio:
StepsRecord( startTime = Instant.ofEpochMilli(1234L), startZoneOffset = null, endTime = Instant.ofEpochMilli(1236L), endZoneOffset = null, metadata = Metadata(), count = 10 )
Tipo di dispositivo
Devi specificare un tipo di dispositivo per tutti i dati registrati automaticamente e attivamente. Per maggiori dettagli, consulta la classe
Device nella documentazione di Jetpack. I tipi di dispositivi attuali includono:
| Tipo di dispositivo | Descrizione |
|---|---|
TYPE_UNKNOWN |
Il tipo di dispositivo è sconosciuto. |
TYPE_WATCH |
Il tipo di dispositivo è uno smartwatch. |
TYPE_PHONE |
Il tipo di dispositivo è uno smartphone. |
TYPE_SCALE |
Il tipo di dispositivo è una bilancia. |
TYPE_RING |
Il tipo di dispositivo è un anello. |
TYPE_HEAD_MOUNTED |
Il tipo di dispositivo è un dispositivo indossabile. |
TYPE_FITNESS_BAND |
Il tipo di dispositivo è un fitness tracker. |
TYPE_CHEST_STRAP |
Il tipo di dispositivo è una fascia toracica. |
TYPE_SMART_DISPLAY |
Il tipo di dispositivo è uno smart display. |
Alcuni valori Device.type sono disponibili solo nelle versioni successive di Health Connect. Quando la funzionalità dei tipi di dispositivi estesi non è disponibile, questi tipi vengono trattati come Device.TYPE_UNKNOWN.
| Tipi di dispositivi estesi | Descrizione |
|---|---|
TYPE_CONSUMER_MEDICAL_DEVICE |
Il tipo di dispositivo è un dispositivo medico. |
TYPE_GLASSES |
Il tipo di dispositivo è un paio di occhiali smart. |
TYPE_HEARABLE |
Il tipo di dispositivo è un dispositivo indossabile. |
TYPE_FITNESS_MACHINE |
Il tipo di dispositivo è una macchina stazionaria. |
TYPE_FITNESS_EQUIPMENT |
Il tipo di dispositivo è un'attrezzatura per il fitness. |
TYPE_PORTABLE_COMPUTER |
Il tipo di dispositivo è un computer portatile. |
TYPE_METER |
Il tipo di dispositivo è un misuratore. |
FEATURE_EXTENDED_DEVICE_TYPES sul client:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Ad esempio:
val WATCH_DEVICE = Device( manufacturer = "Google", model = "Pixel Watch", type = Device.TYPE_WATCH ) // Phone val PHONE_DEVICE = Device( manufacturer = "Google", model = "Pixel 8", type = Device.TYPE_PHONE ) // Ring val RING_DEVICE = Device( manufacturer = "Oura", model = "Ring Gen3", type = Device.TYPE_RING ) // Scale val SCALE_DEVICE = Device( manufacturer = "Withings", model = "Body Comp", type = Device.TYPE_SCALE )
Snippet aggiornati
Le guide di Health Connect sono state aggiornate ovunque siano necessari nuovi snippet per rispettare i nuovi requisiti dei metadati. Per alcuni esempi, consulta la pagina Scrivere dati.
Nuovi metodi per i metadati
Non è più possibile creare direttamente un'istanza dei metadati, quindi utilizza uno dei metodi factory per ottenere una nuova istanza dei metadati. I metodi factory verificano che le informazioni sul dispositivo siano fornite quando è stato utilizzato un dispositivo o un sensore per registrare i dati. Per i dati inseriti manualmente, fornire le informazioni sul dispositivo rimane facoltativo. Ogni funzione ha tre varianti di firma:
activelyRecordedfun activelyRecorded(device: Device): Metadata.fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun activelyRecordedWithId(id: String, device: Device): Metadata
autoRecordedfun autoRecorded(device: Device): Metadatafun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadatafun autoRecordedWithId(id: String, device: Device): Metadata
manualEntryfun manualEntry(device: Device? = null): Metadatafun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun manualEntryWithId(id: String, device: Device? = null): Metadata
unknownRecordingMethodfun unknownRecordingMethod(device: Device? = null): Metadatafun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadatafun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata
Per saperne di più, consulta il progetto Android Open Source.
Testare i dati
Utilizza la libreria di test e
MetadataTestHelper per simulare i valori dei metadati
previsti:
private val TEST_METADATA =
Metadata.unknownRecordingMethod(
clientRecordId = "clientId",
clientRecordVersion = 1L,
device = Device(type = Device.TYPE_UNKNOWN),
).populatedWithTestValues(id = "test")
In questo modo viene simulato il comportamento dell'implementazione di Health Connect, che compila automaticamente questi valori durante l'inserimento dei record.
Per la libreria di test, devi aggiungere questa dipendenza dell'SDK Health Connect al file build.gradle a livello di modulo:
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
Eseguire l'upgrade della libreria
I passaggi principali da eseguire sono:
Esegui l'upgrade della libreria alla versione 1.1.0-alpha12.
Quando crei la libreria, verranno generati errori di compilazione quando sono necessari nuovi metadati. Per risolvere questi errori e completare la migrazione, verifica di aver apportato le seguenti modifiche:
- È obbligatorio specificare un metodo di registrazione quando crei un
Record. A questo scopo, utilizza uno dei metodi factory forniti inMetadata, ad esempioMetadata.manualEntry()oMetadata.activelyRecorded(device = Device(...)). - Per i dati registrati da un dispositivo, è obbligatorio specificare un tipo di dispositivo, ad esempio
Device.TYPE_WATCHoDevice.TYPE_PHONE.
- È obbligatorio specificare un metodo di registrazione quando crei un
Se la tua app scrive tipi di dispositivi estesi, inseriscili dietro
FEATURE_EXTENTED_DEVICE_TYPESper evitareTYPE_UNKNOWNimprevisti sui dispositivi in cui la funzionalità non è disponibile.