Uyku Verilerini Okuma

Uyku, sleep türündeki oturumlar ile temsil edilir. Oturumlar isteğe bağlı olarak uyku verileriyle ilgili daha ayrıntılı bilgiler içeren uyku aşamaları içerebilir. Örneğin, hafif, derin veya REM uykusuysa:

Uyku evresi değerleri
Uyku evresi türü Değer
Uyanma (uyku döngüsü sırasında) 1
Uyku 2
Yatak dışı 3
Hafif uyuma 4
Derin uyuma 5
REM 6

Uyku verilerini yazma rehberi, hem ayrıntılı hem de ayrıntılı olmayan uyku verilerinin Fit'te nasıl temsil edildiğini gösterir.

Android

Aşağıdaki örneklerde, her iki durumda da Fit'ten veri almak için bir SessionClient kullanılır.

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

REST API kullanarak uyku seansları alma iki aşamadan oluşur:

  1. Oturum listesini alın activityType parametresini 72 (SLEEP) olarak ayarlayın. Not: Önceki istekten sonra yeni oturumlar almak için startTime ve endTime kullanabilir veya pageToken kullanabilirsiniz.

    HTTP yöntemi

    GET
    

    URL isteyin

    https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2019-12-05T00:00.000Z&endTime=2019-12-17T23:59:59.999Z&activityType=72
    

    Yanıt

    Örnek bir Oturum yanıtı şunlar olabilir:

    {
     "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"
    }
    
  2. Her oturum için (varsa) uyku aşamalarının ayrıntılarını almak üzere filtrelenmiş listedeki her oturum için aşağıdaki isteği kullanın:

    HTTP yöntemi

    POST
    

    URL isteyin

    https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
    

    İstek metni

    {
      "aggregateBy": [
        {
          "dataTypeName": "com.google.sleep.segment"
        }
      ],
      "endTimeMillis": 1575609060000,
      "startTimeMillis": 1575591360000
    }
    

    Yanıt

    İsteğiniz başarılı olduysa 200 OK HTTP yanıt durumu kodu alırsınız. Yanıt gövdesi, uyku oturumunu oluşturan etkinlik segmentlerinin JSON temsilini içerir. Her intVal, uyku etkinliği türünü temsil eder

    {
     "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": []
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }