Lettura di dati non elaborati

L'esempio seguente mostra come leggere i dati non elaborati nell'ambito del modello nel tuo flusso di lavoro.

Lettura semplice

Il tipo di dati relativo ai passi in Connessione Salute registra il numero di passi effettuati da un utente tra una lettura e l'altra. Il conteggio dei passi rappresenta una misurazione comune piattaforme per salute, fitness e benessere. Connessione Salute semplifica la lettura e scrivere i dati sul conteggio dei passi.

Per leggere i record, crea una ReadRecordsRequest e fornisci quando chiami readRecords.

L'esempio seguente mostra come leggere i dati del conteggio dei passi per un utente in un in un determinato momento. Per un esempio esteso con SensorManager, controlla il conteggio dei passi guida ai dati.

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
    }
}

Leggere i dati scritti in precedenza

Se un'app ha già scritto record in Connessione Salute, è possibile che questo per leggerli senza richiedere un'autorizzazione di lettura a tali record. Questo vale per gli scenari in cui l'app deve essere risincronizzata con Connessione Salute dopo che l'utente l'ha reinstallata.

Per leggere i dati in questo scenario, devi indicare il nome del pacchetto come Oggetto DataOrigin nel parametro dataOriginFilter del tuo ReadRecordsRequest.

L'esempio seguente mostra come indicare il nome di un pacchetto durante la lettura dei passaggi record:

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
}

Limitazione di lettura per 30 giorni

Connessione Salute può leggere i dati per un massimo di 30 giorni prima della data in cui è stata concessa qualsiasi autorizzazione concesso per la prima volta.

Tuttavia, se un utente elimina la tua app, la cronologia delle autorizzazioni viene persa. Se l'utente reinstalla la tua app e concede di nuovo l'autorizzazione, l'app può leggere i dati da Connessione Salute fino a 30 giorni prima della nuova data.

Esempio

Se un utente ha concesso l'autorizzazione di lettura per la prima volta alla tua applicazione il 30 marzo 2023, i primi dati che l'app potrebbe leggere risale al 28 febbraio 2023 in poi.

L'utente elimina la tua app il 10 maggio 2023. L'utente decide di reinstallarlo il 15 maggio 2023 e concedere l'autorizzazione di lettura. La prima data in cui la tua app può ora di lettura dei dati è il 15 aprile 2023.

Restrizione in primo piano

La lettura dei dati con Connessione Salute è limitata alle applicazioni in esecuzione in in primo piano. Questa restrizione ha lo scopo di rafforzare ulteriormente la privacy degli utenti. In questo modo si assicura che Connessione Salute non abbia accesso in lettura in background i propri dati, che vengono letti e consultati solo in primo piano.

Per le situazioni in cui le interruzioni sono tollerabili, come la visualizzazione di una leggere nella tua applicazione, leggere direttamente da Connessione Salute al tuo client un'applicazione.

Per le situazioni in cui preferisci non avere interruzioni, come la lettura di un intervallo di dati da Connessione Salute e poi scriverli e caricarli altrove, usa una ForegroundService, anziché un'attività in cui può essere ignorata rapidamente.