Leer el total de pasos diarios

En esta sección, se muestra cómo leer datos diarios del recuento de pasos mediante la API de Fit para Android y la API de REST de Fit.

Android

Tu app puede leer el total diario actual de pasos llamando a HistoryClient.readDailyTotal, como se muestra en el siguiente ejemplo:

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

El total diario se calcula a partir de la medianoche del día actual en la zona horaria actual del dispositivo.

Para obtener el mismo recuento de pasos diario que en la app de Fit, crea una fuente de datos mediante el paquete de la app com.google.android.gms, como se muestra en el siguiente ejemplo:

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

Para obtener más información sobre cómo trabajar con fuentes de datos agregadas, consulta Cómo trabajar con el Historial de entrenamiento.

REST

Tu app puede leer el total actual de pasos diarios en todas las fuentes de datos si realiza una solicitud POST y consulta el tipo de datos com.google.step_count.delta durante el período especificado.

Método HTTP

POST

Request URL (URL de solicitud)

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

Cuerpo de la solicitud

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

Comando url

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