Requisitos de los metadatos

Esta guía es compatible con la versión 1.1.0-alpha12 de Health Connect.

Hay cambios en los metadatos de Health Connect para los desarrolladores que elijan actualizar a la versión 1.1.0-alpha12.

Información de la biblioteca

El ID de artefacto del complemento de Gradle para Android de Google Maven identifica la biblioteca de Health Connect a la que deberás actualizar. Agrega esta dependencia del SDK de Health Connect a tu archivo build.gradle del módulo:

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

Cambios en los metadatos

Se introdujeron dos cambios de metadatos en el SDK de Health Connect para Jetpack a partir de la versión 1.1.0-alpha12 para garantizar que existan metadatos útiles adicionales en el ecosistema.

Debes especificar los detalles de los metadatos cada vez que se crea una instancia de un objeto de tipo Record().

Debes especificar uno de los cuatro métodos de grabación cuando escribas datos en Health Connect:

Método de grabación Descripción
RECORDING_METHOD_UNKNOWN No se puede verificar el método de grabación.
RECORDING_METHOD_MANUAL_ENTRY El usuario ingresó los datos.
RECORDING_METHOD_AUTOMATICALLY_RECORDED Un dispositivo o sensor registró los datos.
RECORDING_METHOD_ACTIVELY_RECORDED El usuario inició el inicio o el final de la sesión de grabación en un dispositivo.

Por ejemplo:

StepsRecord(
    startTime \= Instant.ofEpochMilli(1234L),
    startZoneOffset \= null,
    endTime \= Instant.ofEpochMilli(1236L),
    endZoneOffset \= null,
    metadata \= Metadata.manualEntry(),
    Count \= 10,
)

Debes especificar un tipo de dispositivo para todos los datos registrados de forma automática y activa. Entre los tipos de dispositivos actuales, se incluyen los siguientes:

Tipo de dispositivo Descripción
TYPE_UNKNOWN El tipo de dispositivo es desconocido.
TYPE_WATCH El tipo de dispositivo es un reloj.
TYPE_PHONE El tipo de dispositivo es un teléfono.
TYPE_SCALE El tipo de dispositivo es una escala.
TYPE_RING El tipo de dispositivo es un anillo.
TYPE_HEAD_MOUNTED El tipo de dispositivo es un dispositivo para colocar en la cabeza.
TYPE_FITNESS_BAND El tipo de dispositivo es una pulsera de fitness.
TYPE_CHEST_STRAP El tipo de dispositivo es una correa para el pecho.
TYPE_SMART_DISPLAY El tipo de dispositivo es una pantalla inteligente.

Por ejemplo:

private val TEST_DEVICE = Device(type = Device.TYPE_PHONE)

Se actualizaron los fragmentos

Las guías de Health Connect se actualizaron en los casos en que se necesitan fragmentos nuevos para cumplir con los nuevos requisitos de metadatos. Para ver algunos ejemplos, consulta la página Cómo escribir datos.

Nuevos métodos de metadatos

Ya no se pueden crear instancias de metadatos directamente, por lo que debes usar uno de los métodos de fábrica para obtener una instancia nueva de metadatos. Cada función tiene tres variantes de 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

Para obtener más información, consulta el Proyecto de código abierto de Android.

Datos de prueba

Usa la biblioteca de pruebas para simular los valores de metadatos esperados:

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

Esto simula el comportamiento de la implementación de Health Connect, que propaga automáticamente estos valores durante la inserción de registros.

Para la biblioteca de pruebas, debes agregar esta dependencia del SDK de Health Connect a tu archivo build.gradle de nivel de módulo:

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

Actualiza la biblioteca

Los pasos principales que debes realizar son los siguientes:

  1. Actualiza tu biblioteca a la versión 1.1.0-alpha12.

  2. Cuando se compila la biblioteca, se arrojarán errores de compilación cuando se necesiten metadatos nuevos, por lo que debes implementar los cambios de metadatos necesarios cada vez que se cree una instancia de un objeto de tipo Record(). Esto debería completar la migración.