قراءة بيانات النوم

ويتم تمثيل جودة النوم من خلال الجلسات من النوع sleep. يمكن أن تتضمّن الجلسات اختياريًا مراحل نوم تحتوي على تفاصيل أكثر دقة حول بيانات النوم. على سبيل المثال، إذا كانت الإضاءة هادئة أو عميقة أو حركة العين السريعة:

قيم مرحلة النوم
نوع مرحلة النوم القيمة
الاستيقاظ (أثناء دورة النوم) 1
بيانات النوم 2
سرير خارج السرير 3
نوم خفيف 4
نوم عميق 5
حركة العين السريعة 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 هي مرحلة من مرحلة:

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