Giấc ngủ được biểu thị bằng số phiên
thuộc loại sleep
.
Phiên hoạt động có thể chứa các giai đoạn ngủ (không bắt buộc) có thông tin chi tiết hơn
dữ liệu giấc ngủ. Ví dụ: Nếu chế độ ngủ sáng, sâu hay ngủ mắt chuyển động nhanh
ngủ:
Giá trị các giai đoạn ngủ
Loại giai đoạn ngủ | Giá trị |
---|---|
Thức dậy (trong chu kỳ ngủ) | 1 |
Ngủ | 2 |
Nằm ngoài giường | 3 |
Vừa chợp mắt | 4 |
Ngủ sâu | 5 |
Ngủ mắt chuyển động nhanh (REM) | 6 |
Hướng dẫn ghi dữ liệu giấc ngủ cho thấy cách cả hai dữ liệu chi tiết và không chi tiết về giấc ngủ được biểu thị trong Fit.
Android
Các mẫu sau đây sử dụng SessionClient để truy xuất dữ liệu từ Fit cho cả hai trường hợp.
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") } } } }
Kiến trúc chuyển trạng thái đại diện (REST)
Việc truy xuất phiên giấc ngủ bằng API REST là quá trình gồm 2 giai đoạn:
Truy xuất danh sách các phiên đang đặt thông số
activityType
thành72
(SLEEP
). Lưu ý: Bạn có thể dùngstartTime
vàendTime
hoặc dùng pageToken để truy xuất các phiên mới kể từ yêu cầu trước đó.Phương thức HTTP
GET
URL yêu cầu
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72
Đáp
Ví dụ: Phiên câu trả lời có thể là:
{ "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" }
Để biết thông tin chi tiết về các giai đoạn ngủ trong từng phiên (nếu có), hãy sử dụng yêu cầu sau cho mỗi phiên trong danh sách đã lọc:
Phương thức HTTP
POST
URL yêu cầu
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Nội dung yêu cầu
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }
Đáp
Nếu yêu cầu của bạn thành công, bạn sẽ nhận được trạng thái phản hồi HTTP
200 OK
. Nội dung phản hồi chứa bản trình bày JSON của hoạt động phân đoạn bao gồm phiên giấc ngủ. MỗiintVal
đại diện cho loại hoạt động ngủ{ "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": [] } ] } ] } ] } ] }