Tidur direpresentasikan oleh sesi
jenis sleep
.
Secara opsional, sesi dapat berisi tahapan tidur, yang memiliki detail
yang lebih terperinci tentang data tidur. Misalnya, jika tidur ringan, nyenyak, atau REM:
Nilai fase tidur
Jenis tahapan tidur | Nilai |
---|---|
Terbangun (selama siklus tidur) | 1 |
Tidur | 2 |
Di luar tempat tidur | 3 |
Tidur singkat | 4 |
Tidur lelap | 5 |
REM | 6 |
Panduan tulis data tidur menunjukkan cara data tidur terperinci dan tidak terperinci direpresentasikan di Fit.
Android
Contoh berikut menggunakan SessionClient untuk mengambil data dari Fit, untuk kedua kasus tersebut.
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
Mengambil sesi tidur menggunakan REST API adalah proses dua tahap:
Ambil daftar sesi yang menetapkan parameter
activityType
ke72
(SLEEP
). Catatan: Anda dapat menggunakanstartTime
danendTime
, atau menggunakan pageToken untuk mengambil sesi baru sejak permintaan sebelumnya.Metode HTTP
GET
URL Permintaan
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72
Respons
Contoh respons Sesi mungkin adalah:
{ "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" }
Untuk mendapatkan detail tahapan tidur untuk setiap sesi (jika ada), gunakan permintaan berikut untuk setiap sesi dalam daftar yang difilter:
Metode HTTP
POST
URL Permintaan
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Isi permintaan
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }
Respons
Jika permintaan berhasil, Anda akan mendapatkan kode status respons HTTP
200 OK
. Isi respons berisi representasi JSON dari segmen aktivitas yang membentuk sesi tidur. SetiapintVal
mewakili jenis aktivitas tidur{ "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": [] } ] } ] } ] } ] }