Le sommeil est représenté par des sessions
de type sleep.
Les sessions peuvent éventuellement contenir des phases de sommeil, qui fournissent des informations plus précises sur les données de sommeil. Par exemple, si le sommeil était léger, profond ou paradoxal :
Valeurs des phases de sommeil
| Type de phase de sommeil | Valeur |
|---|---|
| Éveillé (pendant le cycle de sommeil) | 1 |
| Sommeil | 2 |
| Hors du lit | 3 |
| Sommeil léger | 4 |
| Sommeil profond | 5 |
| REM | 6 |
Le guide Écrire des données de sommeil montre comment les données de sommeil granulaires et non granulaires sont représentées dans Fit.
Android
Les exemples suivants utilisent un SessionClient pour récupérer des données de Fit, dans les deux cas.
val SLEEP_STAGE_NAMES = arrayOf( "Unused", "Awake (during sleep)", "Sleep", "Out-of-bed", "Light sleep", "Deep sleep", "REM sleep" ) val request = SessionReadRequest.Builder() .readSessionsFromAllApps() // By default, only activity sessions are included, so it is necessary to explicitly // request sleep sessions. This will cause activity sessions to be *excluded*. .includeSleepSessions() // Sleep segment data is required for details of the fine-granularity sleep, if it is present. .read(DataType.TYPE_SLEEP_SEGMENT) .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS) .build() sessionsClient.readSession(request) .addOnSuccessListener { response -> for (session in response.sessions) { val sessionStart = session.getStartTime(TimeUnit.MILLISECONDS) val sessionEnd = session.getEndTime(TimeUnit.MILLISECONDS) Log.i(TAG, "Sleep between $sessionStart and $sessionEnd") // If the sleep session has finer granularity sub-components, extract them: val dataSets = response.getDataSet(session) for (dataSet in dataSets) { for (point in dataSet.dataPoints) { val sleepStageVal = point.getValue(Field.FIELD_SLEEP_SEGMENT_TYPE).asInt() val sleepStage = SLEEP_STAGE_NAMES[sleepStageVal] val segmentStart = point.getStartTime(TimeUnit.MILLISECONDS) val segmentEnd = point.getEndTime(TimeUnit.MILLISECONDS) Log.i(TAG, "\t* Type $sleepStage between $segmentStart and $segmentEnd") } } } }
REST
La récupération des sessions de sommeil à l'aide de l'API REST s'effectue en deux étapes :
Récupérez une liste de sessions en définissant le paramètre
activityTypesur72(SLEEP). Remarque : Vous pouvez utiliser unstartTimeet unendTime, ou utiliser un pageToken pour récupérer les nouvelles sessions depuis la requête précédente.Méthode HTTP
GETURL de la requête
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72Réponse
Voici un exemple de réponse de session :
{ "session": [ { "id": "Sleep1575505620000", "name": "Sleep", "description": "", "startTimeMillis": "1575505620000", "endTimeMillis": "1575526800000", "modifiedTimeMillis": "1575590432413", "application": { "packageName": "com.example.sleep_tracker" }, "activityType": 72 // Sleep }, { "id": "Run2939075083", "name": "Mud", "description": "", "startTimeMillis": "1576594403000", "endTimeMillis": "1576598754000", "modifiedTimeMillis": "1576616010143", "application": { "packageName": "com.example.run_tracker" }, "activityType": 8 // Running } ], "deletedSession": [], "nextPageToken": "1576598754001" }Pour obtenir des informations sur les phases de sommeil de chaque session (le cas échéant), utilisez la requête suivante pour chaque session de la liste filtrée :
Méthode HTTP
POSTURL de la requête
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateCorps de la requête
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }Réponse
Si votre requête a abouti, vous recevrez un code d'état de réponse HTTP
200 OK. Le corps de la réponse contient une représentation JSON des segments d'activité qui composent la session de sommeil. ChaqueintValreprésente le type d'activité de sommeil{ "bucket": [ { "startTimeMillis": "1575591360000", "endTimeMillis": "1575609060000", "dataset": [ { "point": [ { "startTimeNanos": "1575591360000000000", "endTimeNanos": "1575595020000000000", "dataTypeName": "com.google.sleep.segment", "originDataSourceId": "...", "value": [ { "intVal": 4, // Light sleep "mapVal": [] } ] }, { "startTimeNanos": "1575595020000000000", "endTimeNanos": "1575596220000000000", "dataTypeName": "com.google.sleep.segment", "originDataSourceId": "...", "value": [ { "intVal": 1, // Sleep "mapVal": [] } ] }, // .... more datapoints { "startTimeNanos": "1575605940000000000", "endTimeNanos": "1575609060000000000", "dataTypeName": "com.google.sleep.segment", "originDataSourceId": "...", "value": [ { "intVal": 4, // Light sleep "mapVal": [] } ] } ] } ] } ] }