Ler dados brutos

O exemplo abaixo mostra como ler dados brutos do fluxo de trabalho comum.

Leitura simples

O tipo de dados "passos" no Conexão Saúde captura o número de passos que um usuário deu entre as leituras. A contagem de passos representa uma medida comum nas plataformas de saúde, condicionamento físico e bem-estar. A Conexão Saúde simplifica a leitura e a gravação de dados de contagem de passos.

Para ler registros, crie uma ReadRecordsRequest e forneça quando você chamar readRecords.

O exemplo abaixo mostra como ler dados de contagem de passos de um usuário em um determinado período. Para um exemplo estendido com SensorManager, consulte o guia de dados de contagem de passos.

suspend fun readStepsByTimeRange(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.readRecords(
            ReadRecordsRequest(
                StepsRecord::class,
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        for (stepRecord in response.records) {
            // Process each step record
        }
    } catch (e: Exception) {
        // Run error handling here
    }
}

Ler dados gravados anteriormente

Se um app tiver gravado registros na Conexão Saúde antes, ele poderá ler esses registros de novo sem precisar de uma permissão de leitura para esses registros específicos. Isso se aplica a cenários em que o app precisa ser sincronizado novamente com a Conexão Saúde depois que o usuário o reinstala.

Para ler os dados nesse cenário, é necessário indicar o nome do pacote como um objeto DataOrigin no parâmetro dataOriginFilter da ReadRecordsRequest.

O exemplo abaixo mostra como indicar o nome de um pacote ao ler os registros de passos:

try {
    val response =  healthConnectClient.readRecords(
        ReadRecordsRequest(
            recordType = StepsRecord::class,
            timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
            dataOriginFilter = setOf(DataOrigin("com.my.package.name"))
        )
    )
    for (record in response.records) {
        // Process each record
    }
} catch (e: Exception) {
    // Run error handling here
}

Restrição de leitura de 30 dias

A Conexão Saúde pode ler dados registrados até 30 dias antes de uma permissão ser concedida.

No entanto, se um usuário excluir seu app, o histórico de permissões será perdido. Se o usuário reinstalar o app e conceder a permissão novamente, ele poderá ler dados da Conexão Saúde registrados até 30 dias antes dessa nova data.

Exemplo

Se um usuário concedeu permissão de leitura ao seu app pela primeira vez em 30 de março de 2023, os dados mais antigos que ele poderá ler serão de 28 de fevereiro de 2023 em diante.

Em seguida, o usuário exclui seu app em 10 de maio de 2023. O usuário decide reinstalá-lo em 15 de maio de 2023 e conceder permissão de leitura. A data mais antiga de que o app poderá ler dados será 15 de abril de 2023.

Restrição em primeiro plano

A leitura de dados com a Conexão Saúde é restrita a apps em execução em primeiro plano. Essa restrição está em vigor para proteger ainda mais a privacidade do usuário. Isso garante aos usuários que o Conexão Saúde não tem acesso de leitura em segundo plano aos dados e que esses dados são lidos e acessados apenas em primeiro plano.

Para situações em que as interrupções são toleradas, como ao mostrar uma leitura no aplicativo, leia diretamente do Conexão Saúde para o aplicativo cliente.

Para situações em que você não quer interrupções, como ler um intervalo de dados do Conexão Saúde e, em seguida, gravar e fazer upload deles para outro lugar, use um ForegroundService em vez de uma atividade que pode ser facilmente dispensada.