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
activityTypeke72(SLEEP). Catatan: Anda dapat menggunakanstartTimedanendTime, atau menggunakan pageToken untuk mengambil sesi baru sejak permintaan sebelumnya.Metode HTTP
GETURL Permintaan
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72Respons
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
POSTURL Permintaan
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregateIsi permintaan
{ "aggregateBy": [ { "dataTypeName": "com.google.sleep.segment" } ], "endTimeMillis": 1575609060000, "startTimeMillis": 1575591360000 }Respons
Jika permintaan Anda berhasil, Anda akan mendapatkan status respons HTTP
200 OKpada kode sumber. Isi respons berisi representasi JSON dari aktivitas segmen yang membentuk sesi tidur. SetiapintValmewakili 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": [] } ] } ] } ] } ] }