Le sommeil est représenté par des sessions de type sleep
.
Les sessions peuvent éventuellement contenir des phases de sommeil, qui contiennent des détails plus précis sur les données de sommeil. Par exemple, s'il s'agissait d'un sommeil 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 |
Sans son lit | 3 |
Sommeil léger | 4 |
Sommeil profond | 5 |
Sommeil paradoxal | 6 |
Le guide Écrire les données sur le sommeil montre comment les données précises et non granulaires sur le sommeil sont représentées dans Fit.
Android
Les exemples suivants utilisent un SessionClient pour récupérer les 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 est un processus en deux étapes:
Récupérez la liste des sessions en définissant le paramètre
activityType
sur72
(SLEEP
). Remarque: vous pouvez utiliserstartTime
etendTime
, ou utiliser un pageToken pour récupérer de nouvelles sessions depuis la requête précédente.Méthode HTTP
GET
URL 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=72
Réponse
Voici un exemple de réponse de type 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 les détails des phases de sommeil de chaque session (le cas échéant), utilisez la requête suivante pour chaque session dans la liste filtrée:
Méthode HTTP
POST
URL de la requête
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Corps de la requête
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }
Réponse
Si votre requête a abouti, vous obtenez 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. ChaqueintVal
repré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": [] } ] } ] } ] } ] }