Lire des données brutes

L'exemple suivant vous montre comment lire des données brutes dans le cadre du workflow commun.

Lecture simple

Le type de données Pas dans Santé Connect enregistre le nombre de pas qu'un utilisateur a effectués entre deux lectures. Le nombre de pas est une unité de mesure courante pour les plates-formes de santé, de remise en forme et de bien-être. Santé Connect facilite la lecture et l'écriture des données sur le nombre de pas.

Pour lire des enregistrements, créez une ReadRecordsRequest et fournissez-la lorsque vous appelez readRecords.

L'exemple suivant montre comment lire le nombre de pas d'un utilisateur au cours d'une certaine période. Pour obtenir un exemple détaillé avec SensorManager, consultez le guide des données sur le nombre de pas.

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

Lire les données déjà écrites

Si une application a déjà écrit des enregistrements sur Santé Connect, elle peut lire ces enregistrements spécifiques sans avoir besoin d'une autorisation en lecture. Cela s'applique aux scénarios dans lesquels l'application doit se resynchroniser avec Santé Connect après que l'utilisateur l'a réinstallée.

Pour lire les données dans ce scénario, vous devez indiquer le nom du package en tant qu'objet DataOrigin dans le paramètre dataOriginFilter de votre ReadRecordsRequest.

L'exemple suivant montre comment indiquer un nom de package lors de la lecture des enregistrements du nombre de pas :

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
}

Lecture limitée aux données remontant jusqu'à 30 jours

Santé Connect peut lire les données remontant jusqu'à 30 jours avant la première autorisation accordée.

Toutefois, si un utilisateur supprime votre application, l'historique des autorisations sera perdu. Si l'utilisateur réinstalle votre application et accorde de nouveau l'autorisation, elle pourra lire les données de Santé Connect remontant jusqu'à 30 jours avant cette nouvelle date.

Exemple

Si un utilisateur a d'abord accordé une autorisation de lecture à votre application le 30 mars 2023, les premières données que votre application pourra lire remonteront au 28 février 2023.

Ce même utilisateur supprime ensuite votre application le 10 mai 2023. L'utilisateur décide de la réinstaller le 15 mai 2023 et d'accorder une autorisation de lecture. Votre application pourra donc lire les données remontant au 15 avril 2023.

Lecture limitée aux applications exécutées au premier plan

La lecture des données avec Santé Connect est limitée aux applications exécutées au premier plan. Cette restriction a pour but de renforcer la confidentialité des données des utilisateurs. Cela garantit aux utilisateurs que Santé Connect n'a pas d'accès en lecture en arrière-plan à leurs données, et que ces données ne sont lues et consultées qu'au premier plan.

Dans les situations où les interruptions sont tolérables, telles que l'affichage d'une mesure dans votre application, effectuez une lecture directement depuis Santé Connect vers l'application cliente.

Dans les situations où vous préférez ne pas être interrompus, par exemple pour lire une plage de données de Santé Connect, puis l'écrire et l'importer ailleurs, utilisez un ForegroundService plutôt qu'une activité qu'il est facile d'ignorer.