Tidur diwakili oleh sesi
dengan jenis sleep
.
Sesi dapat secara opsional berisi tahapan tidur, yang memiliki detail yang lebih terperinci
tentang data tidur. Misalnya, jika itu ringan, nyenyak, atau REM
tidur:
Nilai tahapan 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 menulis data tidur menunjukkan bagaimana data tidur terperinci dan tidak terperinci ditampilkan 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 merupakan proses dua tahap:
Mengambil daftar sesi 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 Sesi responsnya 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 Anda berhasil, Anda akan mendapatkan status respons HTTP
200 OK
pada kode sumber. Isi respons berisi representasi JSON dari aktivitas segmen 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": [] } ] } ] } ] } ] }