Отслеживание общего количества шагов за текущий день с помощью Google FIT API
Я пытаюсь получить общее количество шагов за текущий день с помощью Google FIT API. Я использую фрагменты кода из https://developers.google.com/android/reference/com/google/android/gms/fitness/HistoryClient
Это конкретный фрагмент кода, который я использую на этой странице.
val currentTime = Calendar.getInstance()
val midNight = Calendar.getInstance()
val now = Date()
midNight.apply {
time = now
set(Calendar.MILLISECOND, 0)
set(Calendar.SECOND, 0)
set(Calendar.MINUTE, 0)
set(Calendar.HOUR, 0)
}
val response: Task<DataReadResponse> =
Fitness.getHistoryClient(context, GoogleSignIn.getLastSignedInAccount(context)!!)
.readData(
DataReadRequest.Builder()
.read(TYPE_STEP_COUNT_DELTA)
.setTimeRange(
midNight.timeInMillis,
currentTime.timeInMillis,
TimeUnit.MILLISECONDS
)
.bucketByTime(1, TimeUnit.DAYS)
.build()
)
// val readDataResult: DataReadResponse? = Tasks.await(response)
.addOnSuccessListener {
Log.d("Test", "Buckets "+it.buckets.toString())
for (bucket in it.buckets) {
Log.d("Test","Bucket "+bucket)
val dataSets = bucket.dataSets
for (dataSet in dataSets) {
Log.d("Test","dp's"+dataSet.dataPoints.toString())
for (dataPoint in dataSet.dataPoints) {
Log.d("Datapoint", dataPoint.toString())
}
}
}
}
.addOnFailureListener{
Log.d("Test","Failed "+it.toString())
}
Согласно фрагменту Google, мне пришлось приостановить основной поток, но это также вызывает ошибку. Поэтому я прокомментировал код и вместо этого использовал onSuccessListener
Данные в сегментах
Buckets [Bucket{startTime=1589814000000, endTime=1589818566423, activity=4, dataSets=[DataSet{d:step_count.delta:gms:overlay_explicit_input_local []}], bucketType=time, serverHasMoreData=true}]
Bucket Bucket{startTime=1589814000000, endTime=1589818566423, activity=4, dataSets=[DataSet{d:step_count.delta:gms:overlay_explicit_input_local []}], bucketType=time, serverHasMoreData=true}
но точки данных пусты. (Полагаю, здесь хранятся шаги)
dp's[]
1 ответ
Ну.... Очевидно, я тестировал код на AVD, а Google FIT не был установлен в AVD. Даже если установить google fit в AVD, данные о шагах не будут отображаться (я знаю, что они не будут учитываться, но я ожидал, что они будут синхронизированы между устройствами). Я установил приложение на физическое устройство вместе с Google FIT, и оно сработало.