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
activityType
su72
(SLEEP
). Nota: puoi utilizzarestartTime
eendTime
oppure un pageToken per recuperare nuove sessioni dalla richiesta precedente.Metodo HTTP
GET
URL 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=72
Risposta
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
POST
URL di richiesta
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Corpo 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 OK
le API nel tuo codice. Il corpo della risposta contiene una rappresentazione JSON dell'attività segmenti che compongono la sessione di sonno. CiascunintVal
rappresenta 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": [] } ] } ] } ] } ] }