Lettura di dati non elaborati

L'esempio seguente mostra come leggere i dati non elaborati come parte del flusso di lavoro comune.

Lettura semplice

Il tipo di dati Passi in Connessione Salute acquisisce il numero di passi effettuati da un utente tra una lettura e l'altra. Il numero di passi rappresenta una misurazione comune per le piattaforme per salute, fitness e benessere. Health Connect semplifica la lettura e la scrittura dei dati del conteggio dei passi.

Per leggere i record, crea un ReadRecordsRequest e forniscilo quando chiami readRecords.

L'esempio seguente mostra come leggere i dati del conteggio dei passi di un utente in un determinato periodo di tempo. Per un esempio esteso con SensorManager, consulta la guida sui dati per il conteggio dei passaggi.

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 dati scritti in precedenza

Se un'app ha già scritto record in Connessione Salute, è possibile che l'app le legga senza richiedere un'autorizzazione di lettura per questi record specifici. Questo vale per gli scenari in cui l'app deve risincronizzarsi 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 di ReadRecordsRequest.

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

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 fino a 30 giorni prima della concessione iniziale di un'autorizzazione.

Tuttavia, se un utente elimina la tua app, la cronologia delle autorizzazioni va persa. Se l'utente reinstalla la tua app e concede di nuovo l'autorizzazione, l'app può leggere i dati di 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 la tua app potrebbe leggere a partire dal 28 febbraio 2023

Successivamente, l'utente elimina la tua app il 10 maggio 2023. L'utente deciderà di reinstallarla il 15 maggio 2023 e di concedere l'autorizzazione di lettura. La prima data da cui la tua app può ora leggere i dati è il 15 aprile 2023.

Limitazione del primo piano

La lettura dei dati con Connessione Salute è limitata alle applicazioni in esecuzione in primo piano. Questa limitazione è stata implementata per rafforzare ulteriormente la privacy degli utenti. Questo assicura agli utenti che Connessione Salute non dispone dell'accesso in lettura in background ai loro dati e che questi dati vengono letti e consultati solo in primo piano.

Per situazioni in cui le interruzioni sono tollerabili, come la visualizzazione di una lettura nell'applicazione, leggi direttamente da Connessione Salute l'applicazione client.

Per le situazioni in cui preferisci non avere interruzioni, ad esempio leggere una serie di dati da Connessione Salute per poi scriverli e caricarli altrove, utilizza un ForegroundService al posto di un'attività che può essere ignorata rapidamente.