בקטע הזה נדגים איך לקרוא נתונים עדכניים של מספר הצעדים היומי באמצעות 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