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

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

قيم مرحلة النوم
نوع مرحلة النوم القيمة
الاستيقاظ (أثناء دورة النوم) 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 على مرحلتَين:

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