קריאת הסכום הכולל היומי של שלב

בקטע הזה נדגים איך לקרוא נתונים עדכניים של מספר הצעדים היומי באמצעות Fit Android API ו-Fit API בארכיטקטורת REST.

Android

האפליקציה יכולה לקרוא את המספר הכולל של הצעדים היומיים הנוכחיים באמצעות קריאה ל-HistoryClient.readDailyTotal, כמו בדוגמה הבאה:

Fitness.getHistoryClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
    .readDailyTotal(DataType.TYPE_STEP_COUNT_DELTA)
    .addOnSuccessListener { result ->
        val totalSteps =
            result.dataPoints.firstOrNull()?.getValue(Field.FIELD_STEPS)?.asInt() ?: 0
        // Do something with totalSteps
    }
    .addOnFailureListener { e ->
        Log.i(TAG, "There was a problem getting steps.", e)
    }

הסכום היומי הכולל מחושב מחצות של היום הנוכחי לפי אזור הזמן הנוכחי של המכשיר.

כדי לקבל את אותו מספר צעדים יומי כמו באפליקציית Fit, צריך ליצור מקור נתונים באמצעות חבילת APK com.google.android.gms, כמו בדוגמה הבאה:

val startTime = LocalDate.now().atStartOfDay(ZoneId.systemDefault())
val endTime = LocalDateTime.now().atZone(ZoneId.systemDefault())

val datasource = DataSource.Builder()
    .setAppPackageName("com.google.android.gms")
    .setDataType(DataType.TYPE_STEP_COUNT_DELTA)
    .setType(DataSource.TYPE_DERIVED)
    .setStreamName("estimated_steps")
    .build()

val request = DataReadRequest.Builder()
    .aggregate(datasource)
    .bucketByTime(1, TimeUnit.DAYS)
    .setTimeRange(startTime.toEpochSecond(), endTime.toEpochSecond(), TimeUnit.SECONDS)
    .build()

Fitness.getHistoryClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
    .readData(request)
    .addOnSuccessListener { response ->
        val totalSteps = response.buckets
            .flatMap { it.dataSets }
            .flatMap { it.dataPoints }
            .sumBy { it.getValue(Field.FIELD_STEPS).asInt() }
        Log.i(TAG, "Total steps: $totalSteps")
    }

מידע נוסף על עבודה עם מקורות נתונים מצטברים זמין במאמר בנושא עבודה עם היסטוריית הכושר.

REST

האפליקציה יכולה לקרוא את המספר הכולל של הצעדים היומיים מכל מקורות הנתונים על ידי שליחת בקשת POST ושאילתה על סוג הנתונים com.google.step_count.delta לתקופת הזמן שצוינה.

שיטת HTTP

POST

כתובת ה-URL של הבקשה

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

גוף הבקשה

{
  "aggregateBy": [{
    "dataTypeName": "com.google.step_count.delta",
    "dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps"
  }],
  "bucketByTime": { "durationMillis": 86400000 },
  "startTimeMillis": 1438705622000,
  "endTimeMillis": 1439310422000
}

פקודת Curl

curl \
-X POST \
-H "Content-Type: application/json;encoding=utf-8" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d @aggregate.json \
https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate