Le sommeil est représenté par des sessions de type sleep
.
Les sessions peuvent éventuellement contenir des phases de sommeil, qui comportent des détails plus précis sur les données concernant le sommeil. Par exemple, s'il s'agit d'un sommeil léger, profond ou paradoxal:
Valeurs de la phase de sommeil
Type de phase de sommeil | Value |
---|---|
Éveillé (pendant le cycle de sommeil) | 1 |
Sommeil | 2 |
Sortie du lit | 3 |
Sommeil léger | 4 |
Sommeil profond | 5 |
Sommeil paradoxal | 6 |
Le guide Écrire des données sur le sommeil détaille la façon dont les données sur le sommeil sont détaillées et non détaillées dans Fit.
Android
Dans les deux cas, les exemples suivants utilisent un SessionClient pour récupérer des données auprès de Fit.
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
activityType
sur72
(SLEEP
). Remarque: vous pouvez utiliserstartTime
etendTime
, ou utiliser un pageToken pour récupérer les 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
Response (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 le détail des 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
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 }
Response (Réponse)
Si votre requête a abouti, vous recevez un code d'état 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": [] } ] } ] } ] } ] }