Mesurer la température cutanée

Ce guide est compatible avec la version 1.1.0-alpha12 de Santé Connect.

Santé Connect fournit un type de données température cutanée pour mesurer la température périphérique du corps. Cette mesure est un signal particulièrement utile pour détecter la qualité du sommeil, la santé reproductive et l'apparition potentielle d'une maladie.

Autorisations requises

Comme pour tout type de données dans Santé Connect, l'accès à la température cutanée est protégé par une paire d'autorisations: READ_SKIN_TEMPERATURE et WRITE_SKIN_TEMPERATURE.

Demander des autorisations à l'utilisateur

Après avoir créé une instance de client, votre application doit demander des autorisations à l'utilisateur. Les utilisateurs doivent être autorisés à accorder ou à refuser des autorisations à tout moment.

Pour ce faire, créez un ensemble d'autorisations pour les types de données requis. Assurez-vous d'abord que les autorisations de l'ensemble sont déclarées dans votre fichier manifeste Android.

// Create a set of permissions for required data types
val PERMISSIONS =
    setOf(
  HealthPermission.getReadPermission(SkinTemperatureRecord::class),
  HealthPermission.getWritePermission(SkinTemperatureRecord::class)
)

Utilisez getGrantedPermissions pour voir si votre application dispose déjà des autorisations requises accordées. Si ce n'est pas le cas, utilisez createRequestPermissionResultContract pour demander ces autorisations. L'écran des autorisations de Santé Connect s'affiche.

// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()

val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions successfully granted
  } else {
    // Lack of required permissions
  }
}

suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
  val granted = healthConnectClient.permissionController.getGrantedPermissions()
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions already granted; proceed with inserting or reading data
  } else {
    requestPermissions.launch(PERMISSIONS)
  }
}

Étant donné que les utilisateurs peuvent accorder ou révoquer des autorisations à tout moment, votre application doit vérifier régulièrement les autorisations accordées et gérer les cas de perte d'autorisations.

Informations incluses dans un enregistrement de température cutanée

Les mesures de la température cutanée sont organisées en enregistrements. Chaque enregistrement se compose des informations suivantes:

  • Température de référence, en degrés Celsius ou Fahrenheit. Il s'agit d'une valeur facultative qui est particulièrement utile pour la visualisation dans l'interface utilisateur de votre application.
  • Liste des deltas de la température cutanée, chacun indiquant la variation de la température cutanée depuis la dernière mesure. Si la température de référence est fournie, ces deltas doivent utiliser les mêmes unités de température.
  • Emplacement sur le corps de l'utilisateur où la mesure a été effectuée: doigt, orteil ou poignet.

Agrégations compatibles

Santé Connect vous permet d'obtenir les valeurs agrégées suivantes pour une liste donnée de deltas:

  • Valeur minimale
  • Valeur maximale
  • Valeur moyenne

Lire la température cutanée

L'extrait de code suivant montre comment lire les mesures de température de la peau à l'aide de la bibliothèque Jetpack:

suspend fun readSkinTemperatures() {
    // Error handling, permission check, and feature availability check
    // aren't included.

    // Record includes measurements during the past hour.
    val recordEndTime = Instant.now()
    val recordStartTime = recordEndTime.minusSeconds(60 * 60)

    val response = healthConnectClient.readRecords(
        ReadRecordsRequest<SkinTemperatureRecord>(
            timeRangeFilter = TimeRangeFilter.between(
                recordStartTime, recordEndTime
            )
        )
    )

    for (skinTemperatureRecord in response.records) {
        // Process each skin temperature record here.
    }
}

Indiquer la température cutanée

L'extrait de code suivant montre comment écrire des mesures de température de la peau à l'aide de la bibliothèque Jetpack:


suspend fun writeSkinTemperatures(): InsertRecordsResponse {
    // Error handling, permission check, and feature availability check
    // aren't included.

    // Record includes measurements during the past hour.
    val recordEndTime: ZonedDateTime = now()
    val recordStartTime: ZonedDateTime = recordEndTime.minusHours(1)

    healthConnectClient.insertRecords(
        // For this example, there's only one skin temperature record.
        listOf(
            SkinTemperatureRecord(
                baseline = Temperature.celsius(37.0),
                startTime = recordStartTime.toInstant(),
                startZoneOffset = recordStartTime.offset,
                endTime = recordEndTime.toInstant(),
                endZoneOffset = recordEndTime.offset,
                deltas = listOf(
                    SkinTemperatureRecord.Delta(
                        recordEndTime.minusMinutes(50).toInstant(), celsius(0.5)
                    ), SkinTemperatureRecord.Delta(
                        recordEndTime.minusMinutes(30).toInstant(), celsius(-0.7)
                    )
                ),
                measurementLocation = SkinTemperatureRecord.MEASUREMENT_LOCATION_FINGER,
                metadata = Metadata.autoRecorded(
                    device = Device(type = Device.TYPE_RING)
                ),
            )
        )
    )
}