داده های خواب را بخوانید

خواب توسط جلساتی از نوع sleep نمایش داده می‌شود. جلسات می‌توانند به صورت اختیاری شامل مراحل خواب باشند که جزئیات دقیق‌تری در مورد داده‌های خواب دارند. به عنوان مثال، اگر خواب سبک، عمیق یا REM بوده است:

مقادیر مرحله خواب
نوع مرحله خواب ارزش
بیدار (در طول چرخه خواب) ۱
خواب ۲
خارج از رختخواب ۳
خواب سبک ۴
خواب عمیق ۵
رم ۶

The write sleep data guide shows how both granular and non-granular sleep data is represented in Fit.

اندروید

نمونه‌های زیر برای هر دو مورد از یک 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 یک فرآیند دو مرحله‌ای است:

  1. لیستی از جلسات را با تنظیم پارامتر activityType روی 72 ( SLEEP ) بازیابی کنید. توجه: می‌توانید از startTime و endTime یا از pageToken برای بازیابی جلسات جدید از زمان درخواست قبلی استفاده کنید.

    روش HTTP

    GET
    

    درخواست آدرس اینترنتی

    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"
    }
    
  2. برای به دست آوردن جزئیات مراحل خواب برای هر جلسه (در صورت وجود)، از درخواست زیر برای هر جلسه در لیست فیلتر شده استفاده کنید:

    روش HTTP

    POST
    

    درخواست آدرس اینترنتی

    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": []
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }