השינה מיוצגת על ידי סשנים
מהסוג sleep.
סשנים יכולים להכיל גם שלבי שינה, שכוללים פרטים מפורטים יותר על נתוני השינה. לדוגמה, אם זה היה שינה קלה, שינה עמוקה או שנת REM:
ערכים של שלבי השינה
| סוג שלב השינה | ערך |
|---|---|
| ערות (במהלך מחזור השינה) | 1 |
| שינה | 2 |
| מחוץ למיטה | 3 |
| שינה קלה | 4 |
| שינה עמוקה | 5 |
| שנת חלום (REM) | 6 |
במדריך write sleep data מוסבר איך נתוני שינה מפורטים ולא מפורטים מוצגים ב-Fit.
Android
בדוגמאות הבאות נעשה שימוש ב-SessionClient כדי לאחזר נתונים מ-Fit, בשני המקרים.
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
אחזור נתוני רשומות שינה באמצעות API בארכיטקטורת REST הוא תהליך דו-שלבי:
אחזור רשימה של סשנים הגדרת הפרמטר
activityTypeלערך72(SLEEP). הערה: אפשר להשתמש בפרמטריםstartTimeו-endTime, או להשתמש בפרמטר pageToken כדי לאחזר סשנים חדשים מאז הבקשה הקודמת.שיטת HTTP
GETכתובת ה-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תשובה
דוגמה לתגובה של Session:
{ "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" }כדי לקבל פרטים על שלבי השינה בכל ביקור (אם יש כאלה), משתמשים בבקשה הבאה לכל ביקור ברשימה המסוננת:
שיטת HTTP
POSTכתובת ה-URL של הבקשה
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateגוף הבקשה
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }תשובה
אם הבקשה שלכם תצליח, תקבלו קוד סטטוס של תגובת HTTP
200 OK. גוף התגובה מכיל ייצוג JSON של פלחי פעילות שמרכיבים את סשן השינה. כלintValמייצג את סוג הפעילות 'שינה'{ "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": [] } ] } ] } ] } ] }