برنامه شما میتواند دادههای خواب دانهای را بخواند و بنویسد. این شامل مراحل خواب سبک، خواب عمیق، REM و خواب بیداری از نوع برشمرده شده SleepStages است. برای نوشتن داده های خواب باید یک جلسه از نوع FitnessActivities.SLEEP ایجاد کنید. اگر قرار است دادههای خواب در برنامه Google Fit در مجله کاربر ظاهر شوند، باید در یک جلسه کپسوله شوند.
به صورت اختیاری، بخش هایی از نوع SleepStages را در جلسه وارد کنید:
-
SleepStages.SLEEP_LIGHT -
SleepStages.SLEEP_DEEP -
SleepStages.SLEEP_REM -
SleepStages.AWAKE -
SleepStages.OUT_OF_BED
مثال بدون دانه بندی
برای نوشتن یک شب خواب بدون دانه بندی مرحله، مثال زیر را دنبال کنید. یک جلسه با زمان شروع و پایان و activity SLEEP ایجاد کنید.
اندروید
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 را بخوانید.
استراحت
روش 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
}
نمونه دانه بندی مراحل خواب
برای نوشتن خواب با دانه بندی مراحل، هم جلسه خواب سطح بالا و هم بخش هایی را برای مراحل مختلف خواب بنویسید.
بخش های خواب را بنویسید
در این مثال ما چندین بخش برای نمایش چندین مرحله خواب در یک شب خواب خواهیم نوشت.
اندروید
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()
استراحت
ابتدا
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 } ] } ] }
جلسه خواب را بنویسید
در نهایت، با قرار دادن یک جلسه خواب، بخش های بالا را گروه بندی کنید. زمان شروع این جلسه را روی زمان شروع اولین بخش و زمان پایان را بر روی زمان پایان آخرین بخش تنظیم کنید.
اندروید
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) }
استراحت
روش 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
}