อ่านข้อมูลการนอนหลับ

การนอนหลับจะแสดงด้วยเซสชันประเภท sleep เซสชันอาจมีช่วงการนอนหลับก็ได้ ซึ่งจะมีรายละเอียดที่ละเอียดยิ่งขึ้น เกี่ยวกับข้อมูลการนอนหลับ เช่น หากแสงตื้น ลึกมาก หรือนอนหลับแบบ REM

ค่าระยะการนอนหลับ
ประเภทระยะการนอนหลับ ค่า
ตื่น (ระหว่างช่วงหลับ) 1
การนอนหลับ 2
เวลาเข้านอน 3
กึ่งหลับกึ่งตื่น 4
หลับลึก 5
REM 6

คู่มือเขียนข้อมูลการนอนหลับจะแสดงวิธีแสดงข้อมูลการนอนหลับทั้งโดยละเอียดและแบบละเอียดใน Fit

Android

ตัวอย่างต่อไปนี้ใช้ SessionClient เพื่อดึงข้อมูลจาก Fit สําหรับทั้ง 2 กรณี

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

การดึงข้อมูลเซสชันการนอนหลับโดยใช้ REST API มี 2 ขั้นตอน ดังนี้

  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
    }
    

    คําตอบ

    หากคําขอสําเร็จ คุณจะได้รับรหัสสถานะการตอบกลับ 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": []
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }