خواب با جلساتی از نوع 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": [] } ] } ] } ] } ] }