Uyku Verilerini Okuma

Uyku, sleep türünde oturumlarla temsil edilir. Oturumlar isteğe bağlı olarak uyku verileri hakkında daha ayrıntılı bilgiler içeren uyku aşamalarını içerebilir. Örneğin, hafif, derin veya REM uykusu:

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

Uyku verilerini yazma kılavuzunda, hem ayrıntılı hem de ayrıntılı olmayan uyku verilerinin Fit'te nasıl gösterildiği açıklanmaktadır.

Android

Aşağıdaki örneklerde, her iki durumda da Fit'ten veri almak için 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'yi kullanarak uyku oturumlarını alma işlemi iki aşamadan oluşur:

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

    HTTP yöntemi

    GET
    

    İstek URL'si

    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ı şu şekilde 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 oturumun uyku aşamalarıyla ilgili ayrıntıları (varsa) almak için filtrelenmiş listedeki her oturum için aşağıdaki isteği kullanın:

    HTTP yöntemi

    POST
    

    İstek URL'si

    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ı olursa 200 OK HTTP yanıt durum kodu alırsınız. Yanıt gövdesinde, uyku seansını oluşturan etkinlik segmentlerinin JSON gösterimi bulunur. 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": []
            }
           ]
          }
         ]
        }
       ]
      }
     ]
    }