แอปอ่านและเขียนข้อมูลการนอนหลับแบบละเอียดได้
ซึ่งรวมถึงการหลับตื้น หลับลึก หลับฝัน (REM) และระยะตื่นนอนจาก
SleepStages
ประเภทที่แจกแจง หากต้องการเขียนข้อมูลการนอนหลับ คุณต้องสร้างเซสชันประเภท
FitnessActivities.SLEEP
ข้อมูลการนอนหลับต้องรวมอยู่ในเซสชันหากจะปรากฏใน
บันทึกใน
แอป Google Fit
(ไม่บังคับ) แทรกกลุ่มประเภท SleepStages
ภายในเซสชัน ดังนี้
SleepStages.SLEEP_LIGHT
SleepStages.SLEEP_DEEP
SleepStages.SLEEP_REM
SleepStages.AWAKE
SleepStages.OUT_OF_BED
ตัวอย่างรายละเอียด
หากต้องการเขียนตอนกลางคืนของการนอนหลับโดยไม่มีรายละเอียดของระยะ ให้ทำตามตัวอย่างด้านล่าง
สร้างเซสชันที่มีเวลาเริ่มต้นและสิ้นสุด รวมถึงช่วงเวลานอนของ activity
Android
val fitnessOptions = FitnessOptions.builder() .accessSleepSessions(FitnessOptions.ACCESS_WRITE) .build() // Create the sleep session val session= Session.Builder() .setName(sessionName) .setIdentifier(identifier) .setDescription(description) .setStartTime(startTime, TimeUnit.MILLISECONDS) .setEndTime(endTime, TimeUnit.MILLISECONDS) .setActivity(FitnessActivities.SLEEP) .build() // Build the request to insert the session. val request = SessionInsertRequest.Builder() .setSession(session) .build() // Insert the session into Fit platform Log.i(TAG, "Inserting the session with the SessionsClient") Fitness.getSessionsClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .insertSession(request) .addOnSuccessListener { Log.i(TAG,"Session insert was successful!") } .addOnFailureListener { e -> Log.w(TAG, "There was a problem inserting the session", e) }
อ่านรายละเอียดเพิ่มเติมเกี่ยวกับ เซสชันใน Android
REST
เมธอด HTTP
PUT
URL คำขอ
https://www.googleapis.com/fitness/v1/users/me/sessions/identifier
เนื้อความของคำขอ
{
"id": identifier,
"name": sessionName,
"description": description,
"startTimeMillis": startTime,
"endTimeMillis": endTime,
"version": 1,
"lastModifiedToken": "exampleToken",
"application": {
"detailsUrl": "http://example.com",
"name": "Foo Example App",
"version": "1.0"
},
"activityType": 72 // Sleep
}
ตัวอย่างระดับรายละเอียดของการนอนหลับ
หากต้องการเขียนการนอนหลับด้วยรายละเอียดของระยะ ให้เขียนทั้งการนอนหลับระดับบนสุด เซสชันและช่วงต่างๆ ของการนอนหลับ
เขียนกลุ่มการนอนหลับ
ในตัวอย่างนี้เราจะเขียนช่วงต่างๆ เพื่อแสดงการนอนหลับหลายๆ ครั้ง ระยะนานกว่า 1 คืน
Android
val dataSource = DataSource.Builder() .setType(DataSource.TYPE_RAW) .setDataType(DataType.TYPE_SLEEP_SEGMENT) .setAppPackageName(context) // Optional but recommended for identifying the stream if you have multiple streams with the same dataType. .setStreamName(streamName) .build() val dataPoints = listOf( DataPoint.builder(dataSource) .setTimeInterval(startTime1, endTime1, TimeUnit.MILLISECONDS) .setField(Field.FIELD_SLEEP_SEGMENT_TYPE, SleepStages.SLEEP_LIGHT) .build(), DataPoint.builder(dataSource) .setTimeInterval(startTime2, endTime2, TimeUnit.MILLISECONDS) .setField(Field.FIELD_SLEEP_SEGMENT_TYPE, SleepStages.SLEEP_DEEP) .build(), DataPoint.builder(dataSource) .setTimeInterval(startTime3, endTime3, TimeUnit.MILLISECONDS) .setField(Field.FIELD_SLEEP_SEGMENT_TYPE, SleepStages.SLEEP_LIGHT) .build(), DataPoint.builder(dataSource) .setTimeInterval(startTime4, endTime4, TimeUnit.MILLISECONDS) .setField(Field.FIELD_SLEEP_SEGMENT_TYPE, SleepStages.SLEEP_REM) .build(), DataPoint.builder(dataSource) .setTimeInterval(startTime5, endTime5, TimeUnit.MILLISECONDS) .setField(Field.FIELD_SLEEP_SEGMENT_TYPE, SleepStages.AWAKE) .build(), DataPoint.builder(dataSource) .setTimeInterval(startTime6, endTime6, TimeUnit.MILLISECONDS) .setField(Field.FIELD_SLEEP_SEGMENT_TYPE, SleepStages.SLEEP_LIGHT) .build() ) val dataSet = DataSet.builder(dataSource) .addAll(dataPoints) .build()
REST
ก่อนอื่นให้สร้าง
dataSource
:เมธอด HTTP
POST
URL คำขอ
https://www.googleapis.com/fitness/v1/users/me/dataSources
เนื้อความของคำขอ
{ "dataStreamName": streamName, "type": "raw", "application": { "detailsUrl": "http://example.com", "name": "Foo Example App", "version": "1" }, "dataType": { "name": "com.google.sleep.segment" } }
จากนั้นป้อนข้อมูล
dataSet
ดังนี้เมธอด HTTP
PATCH
URL คำขอ
https://www.googleapis.com/fitness/v1/users/userId/dataSources/dataSourceId/datasets/datasetId
เนื้อความของคำขอ
{ "dataSourceId": dataSourceId, "point": [ { "dataTypeName": "com.google.sleep.segment", "startTimeNanos": startTime1, "endTimeNanos": endTime1, "value": [ { intVal: 4 // Light sleep } ] }, { "dataTypeName": "com.google.sleep.segment", "startTimeNanos": startTime2, "endTimeNanos": endTime2, "value": [ { intVal: 5 // Deep sleep } ] }, { "dataTypeName": "com.google.sleep.segment", "startTimeNanos": startTime3, "endTimeNanos": endTime3, "value": [ { intVal: 4 // Light sleep } ] }, { "dataTypeName": "com.google.sleep.segment", "startTimeNanos": startTime4, "endTimeNanos": endTime4, "value": [ { intVal: 6 // REM sleep } ] }, { "dataTypeName": "com.google.sleep.segment", "startTimeNanos": startTime5, "endTimeNanos": endTime5, "value": [ { intVal: 1 // Awake } ] }, { "dataTypeName": "com.google.sleep.segment", "startTimeNanos": startTime6, "endTimeNanos": endTime6, "value": [ { intVal: 4 // Light sleep } ] } ] }
เขียนข้อมูลเซสชันการนอนหลับ
สุดท้าย จัดกลุ่มส่วนด้านบนด้วยการแทรกเซสชันการนอนหลับ ตั้งค่าเริ่มต้น เวลาสำหรับเซสชันนี้จนถึงเวลาเริ่มต้นของกลุ่มแรก และเวลาสิ้นสุด ถึงเวลาสิ้นสุดของกลุ่มสุดท้าย
Android
val fitnessOptions = FitnessOptions.builder() .accessSleepSessions(FitnessOptions.ACCESS_WRITE) .addDataType(DataType.TYPE_SLEEP_SEGMENT, FitnessOptions.ACCESS_WRITE) .build() val session = Session.Builder() .setName(sessionName) .setIdentifier(identifier) .setDescription(description) .setStartTime(startTime1, TimeUnit.MILLISECONDS) // From first segment .setEndTime(endTime6, TimeUnit.MILLISECONDS) // From last segment .setActivity(FitnessActivities.SLEEP) .build() // Build the request to insert the session. val request = SessionInsertRequest.Builder() .setSession(session) .addDataSet(dataset) .build() // Insert the session into Fit platform Log.i(TAG, "Inserting the session in the Sessions API") Fitness.getSessionsClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .insertSession(request) .addOnSuccessListener { Log.i(TAG,"Session insert was successful!") } .addOnFailureListener { e -> Log.i(TAG, "There was a problem inserting the session", e) }
REST
เมธอด HTTP
PUT
URL คำขอ
https://www.googleapis.com/fitness/v1/users/me/sessions/identifier
เนื้อความของคำขอ
{
"id": identifier,
"name": sessionName,
"description": description,
"startTimeMillis": startTime1,
"endTimeMillis": endTime6,
"version": 1,
"lastModifiedToken": "exampleToken",
"application": {
"detailsUrl": "http://example.com",
"name": "Foo Example App",
"version": "1.0"
},
"activityType": 72 // Sleep
}