Schlaf wird durch Sitzungen vom Typ sleep
dargestellt.
Sitzungen können optional Schlafphasen mit detaillierteren Details zu Schlafdaten enthalten. Zum Beispiel in Leicht-, Tief- oder REM-Schlaf:
Werte für Schlafphasen
Art der Schlafphase | Wert |
---|---|
Wach (während des Schlafzyklus) | 1 |
Schlafen | 2 |
Nicht im Bett | 3 |
Leichter Schlaf | 4 |
Tiefschlaf | 5 |
REM-Schlaf | 6 |
Der Leitfaden Schlafdaten schreiben zeigt, wie in Fit sowohl detaillierte als auch nicht detaillierte Schlafdaten dargestellt werden.
Android
In den folgenden Beispielen wird in beiden Fällen ein SessionClient zum Abrufen von Daten aus Fit verwendet.
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 Schlafeinheiten mithilfe der REST API erfolgt in zwei Phasen:
Rufen Sie eine Liste der Sitzungen ab, indem Sie den
activityType
-Parameter auf72
(SLEEP
) setzen. Hinweis: Sie können einstartTime
undendTime
oder ein pageToken verwenden, um neue Sitzungen seit der vorherigen Anfrage abzurufen.HTTP-Methode
GET
Anfrage-URL
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72
Antwort
Eine Session-Antwort könnte beispielsweise 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" }
Um Details zu den Schlafphasen für jede Sitzung zu erhalten (falls vorhanden), verwende für jede Sitzung in der gefilterten Liste die folgende Anfrage:
HTTP-Methode
POST
Anfrage-URL
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Anfragetext
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }
Antwort
Wenn Ihre Anfrage erfolgreich war, wird der HTTP-Antwortstatuscode
200 OK
angezeigt. Der Antworttext enthält eine JSON-Darstellung der Aktivitätssegmente, aus denen die Schlafsitzung besteht. JederintVal
steht für den Schlafaktivitä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": [] } ] } ] } ] } ] }