Schlaf wird durch Sitzungen vom Typ sleep
dargestellt.
Sitzungen können optional Schlafphasen enthalten, die detailliertere Details zu Schlafdaten enthalten. Wenn es beispielsweise Leichtschlaf, Tiefschlaf oder REM-Schlaf war:
Werte der Schlafphase
Schlafphasentyp | Wert |
---|---|
Wach (im Schlafzyklus) | 1 |
Schlaf | 2 |
Aufgestanden | 3 |
Leichter Schlaf | 4 |
Tiefschlaf | 5 |
REM-Schlaf | 6 |
Im Leitfaden Schlafdaten schreiben wird gezeigt, wie sowohl detaillierte als auch nicht detaillierte Schlafdaten in Fit 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 Schlafsitzungen mithilfe der REST API erfolgt in zwei Phasen:
Rufe eine Liste der Sitzungen ab und setze den Parameter
activityType
auf72
(SLEEP
). Hinweis: Du kannststartTime
undendTime
verwenden oder ein pageToken verwenden, um seit der vorherigen Anfrage neue Sitzungen 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
Hier ein Beispiel für eine Session-Antwort:
{ "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 abzurufen (falls vorhanden):
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, erhalten Sie den HTTP-Antwortstatuscode
200 OK
. Der Antworttext enthält eine JSON-Darstellung der Aktivitätssegmente, aus denen die Schlafsitzung besteht. JedeintVal
stellt den Aktivitätstyp für den Schlaf dar{ "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": [] } ] } ] } ] } ] }