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