קריאה של נתוני השינה

המדד 'שינה' מיוצג על ידי סשנים מסוג sleep. הסשן יכול לכלול שלבי שינה, שכוללים פרטים מפורטים יותר על נתוני השינה. לדוגמה, אם השינה הייתה קלה, עמוקה או REM:

ערכי שלב השינה
סוג שלב השינה ערך
ערות (במהלך מחזור השינה) 1
שינה 2
מחוץ למיטה 3
שינה קלה 4
שינה עמוקה 5
שנת חלום (REM) 6

במדריך לכתיבה של נתוני השינה מוצגים נתוני השינה המפורטים והלא מפורטים לגבי 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 הוא תהליך דו-שלבי:

  1. אחזור רשימה של ביקורים: מגדירים את הפרמטר 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": [
        {
         "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"
    }
    
  2. כדי לקבל פרטים על שלבי שינה בכל סשן (אם יש כזה), השתמשו בבקשה הבאה לכל סשן מהרשימה המסוננת:

    שיטת HTTP

    POST
    

    כתובת URL לבקשה

    https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
    

    גוף הבקשה

    {
      "aggregateBy": [
        {
          "dataTypeName": "com.google.sleep.segment"
        }
      ],
      "endTimeMillis": 1575609060000,
      "startTimeMillis": 1575591360000
    }
    

    תגובה

    אם הבקשה תתקבל, יתקבל קוד סטטוס 200 OK של תגובת HTTP. גוף התגובה מכיל ייצוג 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": []
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }