Requisiti dei metadati

Questa guida è compatibile con la versione 1.1.0-alpha12 e successive di Connessione Salute.

Sono state apportate modifiche ai metadati in Connessione Salute per gli sviluppatori che eseguono l'upgrade alla versione 1.1.0-alpha12 o successive.

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 contribuire a verificare che nell'ecosistema esistano 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 utilizzando uno dei metodi di fabbrica corrispondenti per creare un'istanza di Metadata:

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. Anche se è possibile specificare manufacturer e model, questi sono facoltativi. Per ulteriori dettagli, consulta la classe Device nella documentazione di Jetpack. I tipi di dispositivo attualmente disponibili 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.
Per determinare se il dispositivo di un utente supporta i tipi di dispositivo estesi su Health Connect, controlla la disponibilità di 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
}
Per saperne di più, consulta la sezione Verifica la disponibilità delle funzionalità.

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. I metodi di fabbrica verificano che le informazioni sul dispositivo vengano fornite quando un dispositivo o un sensore è stato utilizzato per registrare i dati. Per i dati inseriti manualmente, fornire le informazioni sul dispositivo rimane facoltativo. 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 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"
}

Esegui l'upgrade della libreria

I passaggi principali da eseguire sono:

  1. Esegui l'upgrade della libreria alla versione 1.1.0-alpha12.

  2. Durante la creazione della libreria, verranno generati errori di compilazione nei punti in cui sono necessari nuovi metadati. Per risolvere questi errori e completare la migrazione, verifica di apportare le seguenti modifiche:

    • È obbligatorio specificare un metodo di registrazione durante la creazione di un Record. A tal fine, utilizza uno dei metodi di fabbrica forniti in Metadata, ad esempio Metadata.manualEntry() o Metadata.activelyRecorded(device = Device(...)).
    • Per i dati registrati da un dispositivo, è obbligatorio specificare un tipo di dispositivo, ad esempio Device.TYPE_WATCH o Device.TYPE_PHONE.
  3. Se la tua app scrive tipi di dispositivi estesi, proteggili con FEATURE_EXTENTED_DEVICE_TYPES per evitare TYPE_UNKNOWN imprevisti sui dispositivi in cui la funzionalità non è disponibile.