Il sonno è rappresentato da sessioni
di tipo sleep.
Le sessioni possono contenere facoltativamente le fasi del sonno, che forniscono dettagli più granulari
sui dati relativi al sonno. Ad esempio, se si trattava di sonno leggero, profondo o REM:
Valori delle fasi del sonno
| Tipo di fase del sonno | Valore |
|---|---|
| Sveglio (durante il ciclo del sonno) | 1 |
| Sonno | 2 |
| Fuori dal letto | 3 |
| Sonno leggero | 4 |
| Sonno profondo | 5 |
| REM | 6 |
La guida Scrivere dati relativi al sonno mostra come i dati relativi al sonno granulari e non granulari sono rappresentati in Fit.
Android
Gli esempi seguenti utilizzano un SessionClient per recuperare i dati da Fit in entrambi i casi.
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
Il recupero delle sessioni di sonno utilizzando l'API REST è una procedura in due fasi:
Recupera un elenco di sessioni impostando il parametro
activityTypesu72(SLEEP). Nota: puoi utilizzarestartTimeeendTimeoppure un pageToken per recuperare le nuove sessioni dalla richiesta precedente.Metodo HTTP
GETURL richiesta
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72Risposta
Un esempio di risposta Session potrebbe essere:
{ "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" }Per ottenere i dettagli delle fasi del sonno per ogni sessione (se presenti), utilizza la seguente richiesta per ogni sessione nell'elenco filtrato:
Metodo HTTP
POSTURL richiesta
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateCorpo della richiesta
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }Risposta
Se la richiesta è andata a buon fine, riceverai un codice di stato della risposta HTTP
200 OK. Il corpo della risposta contiene una rappresentazione JSON dei segmenti di attività che compongono la sessione di sonno. OgniintValrappresenta il tipo di attività sonno{ "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": [] } ] } ] } ] } ] }