Ce guide est compatible avec la version 1.1.0-alpha11 de Santé Connect.
Santé Connect fournit un type de données session de sommeil pour stocker des informations sur le sommeil d'un utilisateur, comme une session de nuit ou une sieste.
Le type de données SleepSessionRecord
est utilisé pour représenter ces sessions.
Les sessions permettent aux utilisateurs de mesurer des performances sur une période donnée, comme la fréquence cardiaque en continu ou des données de localisation.
Les sessions SleepSessionRecord
contiennent des données qui enregistrent les phases du sommeil comme AWAKE
, SLEEPING
et DEEP
.
Les données de sous-type sont des données qui "appartiennent" à une session et ne sont pertinentes que lorsqu'elles sont lues avec une session parente. Par exemple, la phase de sommeil.
Disponibilité de la fonctionnalité
Il n'existe aucun indicateur de disponibilité des fonctionnalités pour ce type de données.
Autorisations requises
L'accès aux sessions de sommeil est protégé par les autorisations suivantes :
android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP
Déclarez ces autorisations dans la Play Console pour votre application, ainsi que dans le fichier manifeste de votre application :
<application>
<uses-permission
android:name="android.permission.health.READ_SLEEP" />
<uses-permission
android:name="android.permission.health.WRITE_SLEEP" />
...
</application>
Il vous incombe de déclarer toutes les autorisations appropriées que vous comptez utiliser dans vos appareils et applications. Vous devez également vérifier que chaque autorisation a été accordée par l'utilisateur avant utilisation.
Conseils généraux
Voici quelques conseils à suivre pour utiliser au mieux les sessions de sommeil dans Santé Connect.
- Utilisez les sessions pour ajouter des données concernant une période de sommeil spécifique :
suspend fun writeSleepSession(healthConnectClient: HealthConnectClient) {
healthConnectClient.insertRecords(
listOf(
SleepSessionRecord(
startTime = Instant.parse("2022-05-10T23:00:00.000Z"),
startZoneOffset = ZoneOffset.of("-08:00"),
endTime = Instant.parse("2022-05-11T07:00:00.000Z"),
endZoneOffset = ZoneOffset.of("-08:00"),
title = "My Sleep"
),
)
)
}
- Les sessions ne doivent pas être utilisées pour les mesures générales, telles que le nombre de pas quotidiens.
- Les données de sous-type ne contiennent pas d'identifiant unique, contrairement aux données associées.
- Les données de sous-types doivent être alignées dans une session avec des horodatages séquentiels qui ne se chevauchent pas. Les écarts sont toutefois autorisés.
- Les sessions sont utiles si l'utilisateur souhaite que les données soient associées à une session (et que leur suivi s'effectue en conséquence) au lieu d'être enregistrées de manière continue.
Sessions de sommeil
Vous pouvez lire ou écrire des données sur votre sommeil dans Santé Connect. Les données sur le sommeil s'affichent sous forme de session et peuvent être divisées en huit phases différentes :
UNKNOWN
: l'état de sommeil de l'utilisateur est inconnu ou non spécifié.AWAKE
: l'utilisateur est éveillé dans un cycle de sommeil, pas en journée.SLEEPING
: description générique ou non précise du sommeil.OUT_OF_BED
: l'utilisateur se lève au milieu d'une session de sommeil.AWAKE_IN_BED
: l'utilisateur est éveillé dans son lit.LIGHT
: l'utilisateur se trouve dans un cycle de sommeil léger.DEEP
: l'utilisateur se trouve dans un cycle de sommeil profond.REM
: l'utilisateur se trouve dans un cycle de sommeil paradoxal.
Ces valeurs représentent le type de sommeil d'un utilisateur au cours d'une période donnée. L'écriture des phases de sommeil est facultative, mais recommandée si possible.
Modifier les données de sessions de sommeil
Le type de données SleepSessionRecord
se compose de deux parties :
- La session générale, qui couvre toute la durée du sommeil
- Des phases individuelles au cours de la session de sommeil, comme un sommeil léger ou profond
Voici comment insérer une session de sommeil sans phases de sommeil :
SleepSessionRecord(
title = "weekend sleep",
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
)
Voici comment ajouter des phases qui couvrent toute la durée d'une session de sommeil :
val stages = listOf(
SleepSessionRecord.Stage(
startTime = START_TIME
endTime = END_TIME,
stage = SleepSessionRecord.STAGE_TYPE_SLEEPING,
)
)
SleepSessionRecord(
title = "weekend sleep",
startTime = START_TIME,
endTime = END_TIME,
startZoneOffset = START_ZONE_OFFSET,
endZoneOffset = END_ZONE_OFFSET,
stages = stages,
)
Lire une session de sommeil
Pour chaque session de sommeil renvoyée, vous devez vérifier si des données sur les phases de sommeil sont également présentes :
suspend fun readSleepSessions(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
val response =
healthConnectClient.readRecords(
ReadRecordsRequest(
SleepSessionRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
for (sleepRecord in response.records) {
// Retrieve relevant sleep stages from each sleep record
val sleepStages = sleepRecord.stages
}
}
Supprimer une session de sommeil
Voici comment supprimer une session. Pour cet exemple, nous avons utilisé une session de sommeil :
suspend fun deleteSleepSession(
healthConnectClient: HealthConnectClient,
sleepRecord: SleepSessionRecord,
) {
val timeRangeFilter = TimeRangeFilter.between(sleepRecord.startTime, sleepRecord.endTime)
healthConnectClient.deleteRecords(SleepSessionRecord::class, timeRangeFilter)
}