Đọc Tổng số bước hằng ngày

Phần này minh hoạ cách đọc dữ liệu về số bước chân hằng ngày hiện tại bằng API Fit Android và API Fit REST.

Android

Ứng dụng của bạn có thể đọc tổng số bước hằng ngày hiện tại bằng cách gọi HistoryClient.readDailyTotal, như trong ví dụ sau:

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)
    }

Tổng số hằng ngày được tính từ nửa đêm của ngày hiện tại theo múi giờ hiện tại của thiết bị.

Để nhận được số bước đi hằng ngày giống như ứng dụng Fit, hãy tạo một nguồn dữ liệu bằng gói ứng dụng com.google.android.gms, như trong ví dụ sau:

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")
    }

Để biết thêm thông tin về cách xử lý các nguồn dữ liệu tổng hợp, hãy xem phần Xử lý Nhật ký hoạt động thể dục.

REST

Ứng dụng của bạn có thể đọc tổng số bước đi hằng ngày hiện tại trên tất cả các nguồn dữ liệu bằng cách đưa ra yêu cầu POST và truy vấn kiểu dữ liệu com.google.step_count.delta cho khoảng thời gian đã chỉ định.

Phương thức HTTP

POST

URL yêu cầu

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

Nội dung yêu cầu

{
  "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
}

Lệnh 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