El sueño se representa con sesiones del tipo sleep.
Las sesiones pueden contener, de manera opcional, fases del sueño, que tienen detalles más específicos sobre los datos del sueño. Por ejemplo, si fue sueño ligero, profundo o REM:
Valores de las fases del sueño
| Tipo de etapa del sueño | Valor |
|---|---|
| Despierto (durante el ciclo de sueño) | 1 |
| Sueño | 2 |
| Fuera de la cama | 3 |
| Sueño ligero | 4 |
| Sueño profundo | 5 |
| MOR | 6 |
En la guía para escribir datos de sueño, se muestra cómo se representan en Fit los datos de sueño tanto detallados como no detallados.
Android
En los siguientes ejemplos, se usa un SessionClient para recuperar datos de Fit en ambos casos.
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 recuperación de sesiones de sueño con la API de REST es un proceso de dos etapas:
Recupera una lista de sesiones estableciendo el parámetro
activityTypeen72(SLEEP). Nota: Puedes usar unstartTimey unendTime, o bien un pageToken para recuperar sesiones nuevas desde la solicitud anterior.Método HTTP
GETRequest URL (URL de solicitud)
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72Respuesta
Un ejemplo de respuesta de Session podría ser el siguiente:
{ "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" }Para obtener detalles de las fases del sueño de cada sesión (si están presentes), usa la siguiente solicitud para cada sesión de la lista filtrada:
Método HTTP
POSTRequest URL (URL de solicitud)
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateCuerpo de la solicitud
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }Respuesta
Si la solicitud se realizó correctamente, recibirás un código de estado de respuesta HTTP
200 OK. El cuerpo de la respuesta contiene una representación JSON de los segmentos de actividad que componen la sesión de sueño. CadaintValrepresenta el tipo de actividad de sueño.{ "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": [] } ] } ] } ] } ] }