Đọ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 đi hằng ngày hiện tại bằng ứng dụng Fit API Android và API Fit REST.

Ứng dụng của bạn có thể đọc tổng số bước hiện tại trong ngày 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 trên thiết bị múi giờ hiện tại.

Để nhận được số bước hằng ngày giống với số bước trong ứng dụng Fit, hãy tạo một nguồn dữ liệu bằng cách sử dụ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 làm việc với các nguồn dữ liệu tổng hợp, hãy xem Làm việc với Nhật ký tập thể dục.

Ứng dụng của bạn có thể đọc tổng số bước hiện tại hằng ngày trên tất cả dữ liệu bằng cách gửi yêu cầu POST và truy vấn Loại dữ liệu com.google.step_count.delta trong khoảng thời gian cụ thể.

Phương thức HTTP

ĐĂNG

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