Questa guida è compatibile con la versione 1.1.0-alpha12 di Connessione Salute.
Sono state apportate modifiche ai metadati in Connessione Salute per gli sviluppatori che scelgono di eseguire l'upgrade alla versione 1.1.0-alpha12.
Informazioni sulla biblioteca
L'ID artefatto del plug-in Android per Gradle di Google Maven
identifica la libreria Connessione Salute a 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 dell'SDK Health Connect Jetpack per garantire che nell'ecosistema siano presenti metadati utili aggiuntivi.
Specificare il metodo di registrazione
Devi specificare i dettagli dei metadati ogni volta che viene istanziato un oggetto di tipo Record()
.
Quando scrivi dati in Connessione Salute, devi specificare uno dei quattro metodi di registrazione:
Metodo di registrazione | Descrizione |
---|---|
RECORDING_METHOD_UNKNOWN |
Il metodo di registrazione non può essere verificato. |
RECORDING_METHOD_MANUAL_ENTRY |
L'utente ha inserito i dati. |
RECORDING_METHOD_AUTOMATICALLY_RECORDED |
I dati sono stati registrati da un dispositivo o un sensore. |
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.manualEntry(),
Count \= 10,
)
Tipo di dispositivo
Devi specificare un tipo di dispositivo per tutti i dati registrati automaticamente e attivamente. I tipi di dispositivo 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 montato sulla testa. |
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 di 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 è dispositivo medico. |
TYPE_GLASSES |
Il tipo di dispositivo è un paio di occhiali o occhiali smart. |
TYPE_HEARABLE |
Il tipo di dispositivo è un dispositivo acustico. |
TYPE_FITNESS_MACHINE |
Il tipo di dispositivo è una macchina stazionaria. |
TYPE_FITNESS_EQUIPMENT |
Il tipo di dispositivo è un attrezzo 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
}
Se possibile, fornisci il produttore e il modello del dispositivo, oltre al tipo di dispositivo. Ad esempio:
private val TEST_DEVICE = Device(
manufacturer = "Google",
model = "Pixel Watch",
type = Device.TYPE_WATCH
)
Snippet aggiornati
Le guide di Connessione Salute sono state aggiornate ovunque siano necessari nuovi snippet per rispettare i nuovi requisiti dei metadati. Per alcuni esempi, consulta la pagina Scrittura dei dati.
Nuovi metodi per i metadati
I metadati non possono più essere istanziati direttamente, quindi utilizza uno dei metodi di fabbrica per ottenere una nuova istanza di metadati. Ogni funzione ha tre varianti di firma:
activelyRecorded
fun activelyRecorded(device: Device): Metadata.
fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
fun activelyRecordedWithId(id: String, device: Device): Metadata
autoRecorded
fun autoRecorded(device: Device): Metadata
fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
fun autoRecordedWithId(id: String, device: Device): Metadata
manualEntry
fun manualEntry(device: Device? = null): Metadata
fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
fun manualEntryWithId(id: String, device: Device? = null): Metadata
unknownRecordingMethod
fun unknownRecordingMethod(device: Device? = null): Metadata
fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
fun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata
Per ulteriori informazioni, consulta l'Android Open Source Project.
Dati di test
Utilizza la libreria di test 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"
}
Esegui l'upgrade della libreria
I passaggi principali da eseguire sono:
Esegui l'upgrade della libreria alla versione 1.1.0-alpha12.
Durante la creazione della libreria, verranno generati errori di compilazione quando sono necessari nuovi metadati, quindi assicurati di implementare le modifiche necessarie ai metadati ogni volta che viene istanziato un oggetto di tipo
Record()
. In questo modo, la migrazione dovrebbe essere completata.Se la tua app scrive tipi di dispositivi estesi, proteggili con
FEATURE_EXTENTED_DEVICE_TYPES
per evitareTYPE_UNKNOWN
imprevisti sui dispositivi in cui la funzionalità non è disponibile.