El sueño se representa mediante sesiones
del tipo sleep
.
De manera opcional, las sesiones pueden contener fases del sueño, con detalles más detallados
sobre los datos de sueño. Por ejemplo, si fue ligero, profundo o REM
sueño:
Valores de las fases del sueño
Tipo de fase del sueño | Valor |
---|---|
Despierto/a (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 sobre cómo escribir datos de sueño, se muestra cómo tanto en Fit, están los datos de sueño detallados y no granulares.
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:
Cómo obtener una lista de sesiones establecer el parámetro
activityType
en72
(SLEEP
) Nota: Puedes usar unstartTime
yendTime
, o bien un pageToken. para recuperar sesiones nuevas desde la solicitud anterior.Método HTTP
GET
Request 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=72
Respuesta
Una sesión de ejemplo de respuesta podría ser la 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 sobre las fases del sueño de cada sesión (si las hay), usa la siguiente solicitud para cada sesión en la lista filtrada:
Método HTTP
POST
Request URL (URL de solicitud)
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Cuerpo de la solicitud
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }
Respuesta
Si tu solicitud se realizó correctamente, recibirás un estado de respuesta HTTP
200 OK
código. El cuerpo de la respuesta contiene una representación JSON de la actividad segmentos que componen la sesión de sueño. CadaintVal
representa la 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": [] } ] } ] } ] } ] }