يتم تمثيل النوم بـ جلسات
من النوع sleep.
يمكن أن تحتوي الجلسات اختياريًا على مراحل النوم التي تتضمّن تفاصيل أكثر دقة حول بيانات النوم. على سبيل المثال، إذا كان النوم خفيفًا أو عميقًا أو نوم حركة العين السريعة:
قيم مراحل النوم
| نوع مرحلة النوم | القيمة |
|---|---|
| الاستيقاظ (أثناء دورة النوم) | 1 |
| النوم | 2 |
| الخروج من السرير | 3 |
| نوم خفيف | 4 |
| نوم عميق | 5 |
| REM | 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
يتألف استرداد جلسات النوم باستخدام واجهة برمجة التطبيقات REST من مرحلتَين:
استرداد قائمة بالجلسات مع ضبط المعلمة
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" }للحصول على تفاصيل مراحل النوم لكل جلسة (إن توفّرت)، استخدِم الطلب التالي لكل جلسة في القائمة التي تم فلترتها:
طريقة 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": [] } ] } ] } ] } ] }