Đọc dữ liệu tổng số bước hằng ngày

Phần này trình bày việc đọc dữ liệu số bước đi hiện tại bằng cách sử dụng API Fit Android và API Fit REST.

Android

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

Để có cùng số bước hằng ngày như ứ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 Lịch sử thể dục.

Kiến trúc chuyển trạng thái đại diện (REST)

Ứ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ả các nguồn dữ liệu bằng cách đưa ra 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 đã chỉ định.

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