O sono é representado por sessões
do tipo sleep.
As sessões podem conter estágios do sono, que têm detalhes mais granulares sobre os dados de sono. Por exemplo, se foi sono leve, profundo ou REM:
Valores do estágio de sono
| Tipo de estágio de sono | Valor |
|---|---|
| Acordado (durante o ciclo de sono) | 1 |
| Sono | 2 |
| Fora da cama | 3 |
| Sono leve | 4 |
| Sono profundo | 5 |
| REM | 6 |
O guia de dados de sono de gravação mostra como os dados de sono granulares e não granulares são representados no Fit.
Android
Os exemplos a seguir usam um SessionClient para recuperar dados do Fit, para ambos os 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
A recuperação de sessões de sono usando a API REST é um processo de duas etapas:
Recupere uma lista de sessões definindo o parâmetro
activityTypecomo72(SLEEP). Observação: você pode usar umstartTimeeendTimeou um pageToken para recuperar novas sessões desde a solicitação anterior.Método HTTP
GETRequest URL
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72Resposta
Um exemplo de Sessão resposta pode ser:
{ "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 obter detalhes dos estágios do sono de cada sessão (se houver), use a seguinte solicitação para cada sessão na lista filtrada:
Método HTTP
POSTRequest URL
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateCorpo da solicitação
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }Resposta
Se a solicitação for bem-sucedida, você receberá um código de status de resposta HTTP
200 OK. O corpo da resposta contém uma representação JSON de segmentos de atividade que compõem a sessão de sono. CadaintValrepresenta o tipo de atividade de sono{ "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": [] } ] } ] } ] } ] }