קריאת נתוני השינה
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
שינה מיוצגת על ידי סשנים
מסוג sleep
.
סשנים יכולים לכלול שלבי שינה, שכוללים פרטים מפורטים יותר.
על נתוני שינה. לדוגמה, אם הוא היה קל, עמוק או REM
שינה:
הערכים של שלבי השינה
סוג שלב השינה |
ערך |
ערות (במהלך מחזור השינה) |
1 |
שינה |
2 |
מחוץ למיטה |
3 |
שינה קלה |
4 |
שינה עמוקה |
5 |
שנת חלום (REM) |
6 |
במדריך לכתיבת נתוני שינה אפשר לראות איך
נתוני שינה מפורטים ולא מפורטים מיוצגים ב-Fit.
Android
בדוגמאות הבאות נעשה שימוש ב-SessionClient
כדי לאחזר נתונים מ-Fit, בשני המקרים.
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
אחזור של סשנים של שינה באמצעות API ל-REST מתבצע בתהליך דו-שלבי:
אחזור של רשימת סשנים
להגדיר את הפרמטר activityType
כ-72
(SLEEP
).
הערה: אפשר להשתמש ב-startTime
וב-endTime
, או להשתמש בpageToken
כדי לאחזר סשנים חדשים מאז הבקשה הקודמת.
שיטת HTTP
GET
כתובת ה-URL של הבקשה
https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72
תגובה
סשן לדוגמה
התשובה יכולה להיות:
{
"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"
}
כדי לקבל פרטים על שלבי השינה בכל סשן (אם יש כזה), תוכלו להשתמש
את הבקשה הבאה לכל סשן ברשימה המסוננת:
שיטת HTTP
POST
כתובת ה-URL של הבקשה
https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
גוף הבקשה
{
"aggregateBy": [
{
"dataTypeName": "com.google.sleep.segment"
}
],
"endTimeMillis": 1575609060000,
"startTimeMillis": 1575591360000
}
תגובה
אם הבקשה תסתיים בהצלחה, תקבלו סטטוס של תגובת HTTP 200 OK
גוף התשובה מכיל ייצוג JSON של הפעילות
הפלחים שמרכיבים את סשן השינה. כל intVal
מייצג את
סוג הפעילות של השינה
{
"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": []
}
]
}
]
}
]
}
]
}
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-31 (שעון UTC).
[null,null,["עדכון אחרון: 2025-08-31 (שעון UTC)."],[[["\u003cp\u003eSleep data in Google Fit is stored as sessions of type \u003ccode\u003esleep\u003c/code\u003e and can optionally contain detailed sleep stage information.\u003c/p\u003e\n"],["\u003cp\u003eSleep stages are categorized with specific values, such as 1 for awake, 4 for light sleep, and 6 for REM sleep.\u003c/p\u003e\n"],["\u003cp\u003eAndroid developers can use the \u003ccode\u003eSessionClient\u003c/code\u003e and \u003ccode\u003eSessionReadRequest\u003c/code\u003e to retrieve both basic and detailed sleep data.\u003c/p\u003e\n"],["\u003cp\u003eREST API access involves a two-step process: retrieving a list of sleep sessions, then requesting detailed sleep stage data for each session if available.\u003c/p\u003e\n"],["\u003cp\u003eSleep stage details from the REST API are provided as \u003ccode\u003eintVal\u003c/code\u003e values within the response, corresponding to the sleep stage categories.\u003c/p\u003e\n"]]],[],null,["# Read Sleep Data\n\nSleep is represented by [sessions](https://developers.google.com/fit/rest/v1/using-sessions)\nof type [`sleep`](https://developers.google.com/fit/rest/v1/reference/activity-types).\nSessions can optionally contain sleep stages, which have more granular details\nabout sleep data. For example, if it was light, deep or REM\nsleep:\n\n##### Sleep stage values\n\n| Sleep stage type | Value |\n|----------------------------|-------|\n| Awake (during sleep cycle) | 1 |\n| Sleep | 2 |\n| Out-of-bed | 3 |\n| Light sleep | 4 |\n| Deep sleep | 5 |\n| REM | 6 |\n\nThe [write sleep data](/fit/scenarios/write-sleep-data) guide shows how both\ngranular and non-granular sleep data is represented in Fit. \n\n### Android\n\nThe follow samples uses a [SessionClient](https://developers.google.com/android/reference/com/google/android/gms/fitness/SessionsClient.html)\nto retrieve data from Fit, for both cases. \n\n```kotlin\nval SLEEP_STAGE_NAMES = arrayOf(\n \"Unused\",\n \"Awake (during sleep)\",\n \"Sleep\",\n \"Out-of-bed\",\n \"Light sleep\",\n \"Deep sleep\",\n \"REM sleep\"\n)\n\nval request = SessionReadRequest.Builder()\n .readSessionsFromAllApps()\n // By default, only activity sessions are included, so it is necessary to explicitly\n // request sleep sessions. This will cause activity sessions to be *excluded*.\n .includeSleepSessions()\n // Sleep segment data is required for details of the fine-granularity sleep, if it is present.\n .read(DataType.TYPE_SLEEP_SEGMENT)\n .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)\n .build()\n\nsessionsClient.readSession(request)\n .addOnSuccessListener { response -\u003e\n for (session in response.sessions) {\n val sessionStart = session.getStartTime(TimeUnit.MILLISECONDS)\n val sessionEnd = session.getEndTime(TimeUnit.MILLISECONDS)\n Log.i(TAG, \"Sleep between $sessionStart and $sessionEnd\")\n\n // If the sleep session has finer granularity sub-components, extract them:\n val dataSets = response.getDataSet(session)\n for (dataSet in dataSets) {\n for (point in dataSet.dataPoints) {\n val sleepStageVal = point.getValue(Field.FIELD_SLEEP_SEGMENT_TYPE).asInt()\n val sleepStage = SLEEP_STAGE_NAMES[sleepStageVal]\n val segmentStart = point.getStartTime(TimeUnit.MILLISECONDS)\n val segmentEnd = point.getEndTime(TimeUnit.MILLISECONDS)\n Log.i(TAG, \"\\t* Type $sleepStage between $segmentStart and $segmentEnd\")\n }\n }\n }\n }\n```\n\n### REST\n\nRetrieving sleep sessions using the REST API is a two stage process:\n\n1. [Retrieve a list of sessions](https://developers.google.com/fit/rest/v1/using-sessions#list_existing_sessions)\n setting the [`activityType`](https://developers.google.com/fit/rest/v1/reference/activity-types) parameter to `72` (`SLEEP`).\n Note: You can use a `startTime` and `endTime`, or use a [pageToken](https://developers.google.com/fit/rest/v1/reference/users/sessions/list#parameters)\n to retrieve new sessions since the previous request.\n\n **HTTP method** \n\n GET\n\n **Request URL** \n\n https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72\n\n **Response**\n\n An example [Session](https://developers.google.com/fit/rest/v1/reference/users/sessions/list#response_1)\n response might be: \n\n {\n \"session\": [\n {\n \"id\": \"Sleep1575505620000\",\n \"name\": \"Sleep\",\n \"description\": \"\",\n \"startTimeMillis\": \"1575505620000\",\n \"endTimeMillis\": \"1575526800000\",\n \"modifiedTimeMillis\": \"1575590432413\",\n \"application\": {\n \"packageName\": \"com.example.sleep_tracker\"\n },\n \"activityType\": 72 // Sleep\n },\n {\n \"id\": \"Run2939075083\",\n \"name\": \"Mud\",\n \"description\": \"\",\n \"startTimeMillis\": \"1576594403000\",\n \"endTimeMillis\": \"1576598754000\",\n \"modifiedTimeMillis\": \"1576616010143\",\n \"application\": {\n \"packageName\": \"com.example.run_tracker\"\n },\n \"activityType\": 8 // Running\n }\n ],\n \"deletedSession\": [],\n \"nextPageToken\": \"1576598754001\"\n }\n\n2. To obtain details of sleep stages for each session (if present), use the\n following request for each session in the filtered list:\n\n **HTTP method** \n\n POST\n\n **Request URL** \n\n https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate\n\n **Request body** \n\n {\n \"aggregateBy\": [\n {\n \"dataTypeName\": \"com.google.sleep.segment\"\n }\n ],\n \"endTimeMillis\": 1575609060000,\n \"startTimeMillis\": 1575591360000\n }\n\n **Response**\n\n If your request was successful, you'll get a `200 OK` HTTP response status\n code. The response body contains a JSON representation of activity\n segments that comprise the sleep session. Each `intVal` represents the\n sleep [activity type](#sleep_activity_values) \n\n {\n \"bucket\": [\n {\n \"startTimeMillis\": \"1575591360000\",\n \"endTimeMillis\": \"1575609060000\",\n \"dataset\": [\n {\n \"point\": [\n {\n \"startTimeNanos\": \"1575591360000000000\",\n \"endTimeNanos\": \"1575595020000000000\",\n \"dataTypeName\": \"com.google.sleep.segment\",\n \"originDataSourceId\": \"...\",\n \"value\": [\n {\n \"intVal\": 4, // Light sleep\n \"mapVal\": []\n }\n ]\n },\n {\n \"startTimeNanos\": \"1575595020000000000\",\n \"endTimeNanos\": \"1575596220000000000\",\n \"dataTypeName\": \"com.google.sleep.segment\",\n \"originDataSourceId\": \"...\",\n \"value\": [\n {\n \"intVal\": 1, // Sleep\n \"mapVal\": []\n }\n ]\n },\n\n // .... more datapoints\n\n {\n \"startTimeNanos\": \"1575605940000000000\",\n \"endTimeNanos\": \"1575609060000000000\",\n \"dataTypeName\": \"com.google.sleep.segment\",\n \"originDataSourceId\": \"...\",\n \"value\": [\n {\n \"intVal\": 4, // Light sleep\n \"mapVal\": []\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }"]]