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

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

مقادیر مرحله خواب
نوع مرحله خواب ارزش
بیدار (در طول چرخه خواب) 1
خواب 2
خارج از تخت 3
خواب سبک 4
خواب عمیق 5
REM 6

راهنمای نوشتن اطلاعات خواب نشان می‌دهد که چگونه داده‌های خواب دانه‌ای و غیر دانه‌ای در 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
    

    درخواست 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"
    }
    
  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": []
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }