Il sonno è rappresentato da sessioni
di tipo sleep.
Le sessioni possono contenere facoltativamente fasi del sonno, che offrono dettagli più granulari
sui dati relativi al sonno. Ad esempio, nel caso di sonno leggero, profondo o REM
sonno:
Valori delle fasi del sonno
| Tipo di fase del sonno | Valore |
|---|---|
| Sveglio (durante il ciclo del sonno) | 1 |
| Sonno | 2 |
| Non letto | 3 |
| Sonno leggero | 4 |
| Sonno profondo | 5 |
| REM | 6 |
La guida alla scrittura dei dati relativi al sonno mostra in che modo dati granulari e non granulari sul sonno sono rappresentati in Fit.
Android
Gli esempi riportati di seguito 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 è un processo in due fasi:
Recuperare un elenco di sessioni Impostando il parametro
activityTypesu72(SLEEP). Nota: puoi utilizzarestartTimeeendTimeoppure un pageToken per recuperare nuove sessioni dalla richiesta precedente.Metodo HTTP
GETURL di 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 Sessione la risposta 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 dettagli sulle fasi del sonno per ogni sessione (se presente), utilizza l'app seguente richiesta per ogni sessione nell'elenco filtrato:
Metodo HTTP
POSTURL di 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 tua richiesta ha esito positivo, visualizzerai uno stato di risposta HTTP
200 OKle API nel tuo codice. Il corpo della risposta contiene una rappresentazione JSON dell'attività segmenti che compongono la sessione di sonno. CiascunintValrappresenta 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": [] } ] } ] } ] } ] }