Requisitos de metadados

Este guia é compatível com a versão 1.1.0-alpha12 do Health Connect.

Há mudanças nos metadados do Conexão Saúde para desenvolvedores que optarem por fazer upgrade para a versão 1.1.0-alpha12.

Informações da biblioteca

O ID do artefato do plug-in do Gradle para Android do Google Maven identifica a biblioteca do Conexão Saúde que precisa ser atualizada. Adicione esta dependência do SDK do Conexão Saúde ao arquivo build.gradle no nível do módulo:

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

Mudanças nos metadados

Duas mudanças de metadados foram introduzidas no SDK do Jetpack Conexão Saúde a partir da versão 1.1.0-alpha12 para garantir que metadados úteis adicionais existam no ecossistema.

Especificar o método de gravação

É necessário especificar detalhes de metadados sempre que um objeto do tipo Record() é instanciado.

Você precisa especificar um dos quatro métodos de gravação ao gravar dados na Conexão Saúde:

Método de gravação Descrição
RECORDING_METHOD_UNKNOWN Não foi possível verificar o método de gravação.
RECORDING_METHOD_MANUAL_ENTRY O usuário inseriu os dados.
RECORDING_METHOD_AUTOMATICALLY_RECORDED Um dispositivo ou sensor gravou os dados.
RECORDING_METHOD_ACTIVELY_RECORDED O usuário iniciou o início ou o fim da sessão de gravação em um dispositivo.

Exemplo:

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

Tipo de dispositivo

É necessário especificar um tipo de dispositivo para todos os dados gravados automaticamente e de forma ativa. Os tipos de dispositivos atuais incluem:

Tipo de dispositivo Descrição
TYPE_UNKNOWN O tipo do dispositivo é desconhecido.
TYPE_WATCH O tipo de dispositivo é um relógio.
TYPE_PHONE O tipo de dispositivo é um smartphone.
TYPE_SCALE O tipo de dispositivo é uma escala.
TYPE_RING O tipo de dispositivo é um toque.
TYPE_HEAD_MOUNTED O tipo de dispositivo é um dispositivo montado na cabeça.
TYPE_FITNESS_BAND O tipo de dispositivo é uma pulseira fitness.
TYPE_CHEST_STRAP O tipo de dispositivo é uma cinta torácica.
TYPE_SMART_DISPLAY O tipo de dispositivo é um smart display.

Alguns valores de Device.type só estão disponíveis em versões mais recentes do Health Connect. Quando o recurso de tipos de dispositivos estendidos não está disponível, esses tipos são tratados como Device.TYPE_UNKNOWN.

Tipos de dispositivos estendidos Descrição
TYPE_CONSUMER_MEDICAL_DEVICE O tipo de dispositivo é "dispositivo médico".
TYPE_GLASSES O tipo de dispositivo é um par de óculos inteligentes ou óculos de proteção.
TYPE_HEARABLE O tipo de dispositivo é um aparelho auditivo.
TYPE_FITNESS_MACHINE O tipo de dispositivo é uma máquina estacionária.
TYPE_FITNESS_EQUIPMENT O tipo de dispositivo é um equipamento de ginástica.
TYPE_PORTABLE_COMPUTER O tipo de dispositivo é um computador portátil.
TYPE_METER O tipo de dispositivo é um medidor.
Para determinar se o dispositivo de um usuário é compatível com tipos de dispositivos estendidos no Conexão Saúde, verifique a disponibilidade de FEATURE_EXTENDED_DEVICE_TYPES no cliente:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
Saiba mais em Verificar a disponibilidade de recursos.

Quando possível, informe o fabricante e o modelo do dispositivo, além do tipo. Exemplo:

private val TEST_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)

Snippets atualizados

Os guias da Conexão Saúde foram atualizados sempre que novos snippets foram necessários para obedecer aos novos requisitos de metadados. Para alguns exemplos, consulte a página Gravar dados.

Novos métodos de metadados

Os metadados não podem mais ser instanciados diretamente. Use um dos métodos de fábrica para receber uma nova instância de metadados. Cada função tem três variantes de assinatura:

  • 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 mais informações, consulte o Projeto de código aberto do Android.

Dados de teste

Use a Testing Library para simular valores de metadados esperados:

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

Isso simula o comportamento da implementação do Conexão Saúde, que preenche automaticamente esses valores durante a inserção de registros.

Para a biblioteca de testes, adicione esta dependência do SDK do Conexão Saúde ao arquivo build.gradle no nível do módulo:

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

Fazer upgrade da biblioteca

As principais etapas que você precisa seguir são:

  1. Faça upgrade da biblioteca para a versão 1.1.0-alpha12.

  2. Ao criar a biblioteca, erros de compilação serão gerados quando novos metadados forem necessários. Portanto, implemente as mudanças necessárias sempre que um objeto do tipo Record() for instanciado. Isso deve concluir a migração.

  3. Se o app gravar tipos de dispositivos estendidos, coloque-os atrás de FEATURE_EXTENTED_DEVICE_TYPES para evitar TYPE_UNKNOWN inesperados em dispositivos em que o recurso não está disponível.