Este guia é compatível com a versão 1.1.0-alpha12 do Health Connect e versões mais recentes.
Há mudanças nos metadados da Conexão Saúde para desenvolvedores que fizerem upgrade para a versão 1.1.0-alpha12 ou mais recente.
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 do Conexão Saúde a partir da versão 1.1.0-alpha12 para ajudar a verificar se há outros metadados úteis no ecossistema.
Especificar o método de gravação
É necessário especificar detalhes de metadados sempre que um objeto do tipo Record()
é instanciado.
Ao gravar dados na Conexão Saúde, especifique um dos quatro métodos de gravação
usando um dos métodos de fábrica correspondentes
para instanciar Metadata
:
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. Embora manufacturer
e model
também possam ser especificados, eles são opcionais. Para mais detalhes, consulte a
classe Device
na documentação do Jetpack. 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. |
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
}
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. Os métodos de fábrica verificam se as informações do dispositivo são fornecidas quando um dispositivo ou sensor foi usado para registrar os dados. Para dados inseridos manualmente, fornecer informações do dispositivo continua sendo opcional. 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 e
MetadataTestHelper
para simular os valores esperados de metadados:
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:
Faça upgrade da biblioteca para a versão 1.1.0-alpha12.
Ao criar a biblioteca, erros de compilação serão gerados quando novos metadados forem necessários. Para resolver esses erros e concluir a migração, verifique se você fez as seguintes mudanças:
- É obrigatório especificar um método de gravação ao construir um
Record
. Isso é feito usando um dos métodos de fábrica fornecidos emMetadata
, comoMetadata.manualEntry()
ouMetadata.activelyRecorded(device = Device(...))
. - Para dados gravados por um dispositivo, é obrigatório especificar um tipo de dispositivo, como
Device.TYPE_WATCH
ouDevice.TYPE_PHONE
.
- É obrigatório especificar um método de gravação ao construir um
Se o app gravar tipos de dispositivos estendidos, coloque-os atrás de
FEATURE_EXTENTED_DEVICE_TYPES
para evitarTYPE_UNKNOWN
inesperados em dispositivos em que o recurso não está disponível.