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 dados de sono. Por exemplo, se foi leve, profundo ou REM
sono:
Valores do estágio de sono
| Tipo de estágio do 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 gravação de dados de sono mostra como ambos dados de sono granulares e não granulares são representados no Fit.
Android
Os exemplos a seguir usam um objeto SessionClient para recuperar dados do Fit nos dois 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
Recuperar sessões de sono usando a API REST é um processo de duas etapas:
Recuperar uma lista de sessões definindo o parâmetro
activityTypecomo72(SLEEP). Observação: você pode usar umstartTimee umendTimeou 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 Session a 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 para cada sessão (se houver), use o 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ê vai receber um status de resposta HTTP
200 OKo código-fonte. O corpo da resposta contém uma representação JSON da atividade que compõem a sessão de sono. CadaintValrepresenta 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": [] } ] } ] } ] } ] }