Schlaf wird durch Sitzungen
vom Typ sleep dargestellt.
Sitzungen können optional Schlafphasen enthalten, die detailliertere Informationen zu Schlafdaten enthalten. Zum Beispiel, ob es sich um leichten Schlaf, Tiefschlaf oder REM-Schlaf gehandelt hat:
Werte für Schlafphasen
| Typ der Schlafphase | Wert |
|---|---|
| Wach (während des Schlafzyklus) | 1 |
| Schlaf | 2 |
| Außer Bett | 3 |
| Leichtschlaf | 4 |
| Tiefschlaf | 5 |
| REM | 6 |
In der Anleitung zum Schreiben von Schlafdaten wird beschrieben, wie sowohl detaillierte als auch nicht detaillierte Schlafdaten in Fit dargestellt werden.
Android
In den folgenden Beispielen wird ein SessionClient verwendet, um Daten aus Fit abzurufen.
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
Das Abrufen von Schlafsitzungen mit der REST API erfolgt in zwei Schritten:
Rufen Sie eine Liste von Sitzungen ab und legen Sie den Parameter
activityTypeauf72(SLEEP) fest. Hinweis: Sie könnenstartTimeundendTimeverwenden oder ein pageToken um seit der letzten Anfrage neue Sitzungen abzurufen.HTTP-Methode
GETAnfrage-URL
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72Antwort
Eine Beispielantwort für eine Sitzung könnte so aussehen:
{ "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" }Verwenden Sie die folgende Anfrage für jede Sitzung in der gefilterten Liste, um Details zu den Schlafphasen für jede Sitzung zu erhalten (falls vorhanden):
HTTP-Methode
POSTAnfrage-URL
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateAnfragetext
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }Antwort
Wenn Ihre Anfrage erfolgreich war, erhalten Sie den HTTP-Antwortstatuscode
200 OK. Der Antworttext enthält eine JSON-Darstellung der Aktivitätssegmente, aus denen die Schlafeinheit besteht. JederintValsteht für den Schlaf Aktivitätstyp{ "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": [] } ] } ] } ] } ] }