Giấc ngủ được biểu thị bằng các 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), trong đó có thông tin chi tiết hơn về dữ liệu giấc ngủ. Ví dụ: nếu đó là giấc ngủ nông, sâu hoặc REM:
Giá trị giai đoạn ngủ
| Loại giai đoạn ngủ | Giá trị |
|---|---|
| Tỉnh giấc (trong chu kỳ ngủ) | 1 |
| Ngủ | 2 |
| Ra khỏi giường | 3 |
| Ngủ nông | 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 biết cách dữ liệu giấc ngủ chi tiết và không chi tiết đượ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 trong 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") } } } }
REST
Việc truy xuất các phiên ngủ bằng API REST là một quy trình gồm 2 giai đoạn:
Truy xuất danh sách các phiên bằng cách đặt tham số
activityTypethành72(SLEEP). Xin lưu ý rằng bạn có thể dùngstartTimevàendTimehoặ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
GETURL 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ụ về phản hồi Session (Phiên) 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" }Để lấy thông tin chi tiết về các giai đoạn ngủ của mỗi phiên (nếu có), hãy sử dụng yêu cầu sau cho mỗi phiên trong danh sách được lọc:
Phương thức HTTP
POSTURL yêu cầu
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateNội dung yêu cầu
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }Đáp
Nếu yêu cầu thành công, bạn sẽ nhận được mã trạng thái phản hồi HTTP
200 OK. Nội dung phản hồi chứa một biểu thị JSON của các phân đoạn hoạt động tạo nên phiên ngủ. MỗiintValđại diện cho loại hoạt động khi 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": [] } ] } ] } ] } ] }