android - 使用 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())
}
根据谷歌代码片段,我不得不暂停主线程,但这也会引发错误。所以我已经注释了代码,而是使用了 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[]
解决方案
嗯....显然我正在测试 AVD 上的代码,而 Google FIT 没有安装在 AVD 中。即使有人在 AVD 中安装了 google fit,也不会显示步数数据(我知道它不会被计算在内,但我希望它能够跨设备同步)。我将该应用程序与 Google FIT 一起安装在物理设备上,并且可以正常工作。
推荐阅读
- spring-batch - SpringBatch:即使使用 NeverRetryPolicy,ChunkStep 也会在编写器中重试异常
- ssl - 如何让 Chrome/Firefox 提示我输入证书而不是默认为我以前使用的证书
- javascript - 尝试创建 Tampermonkey 用户脚本以等待视频期间弹出随机按钮并自动单击它
- r - shinyapp.io 应用程序的性能不如本地闪亮应用程序
- linux - 无法为 ARM 交叉编译 postgresql 12.2
- laravel - 当日期“from”和“to”为空时,Laravel 总是在我的报告中显示 01-Jan-1970 / 01-Jan-1970
- slack-api - Slack API 标记通道读取 2020
- powershell - 如果配置使用 configbuilders,我如何使用 powershell 获取网站的连接字符串?
- android-studio - 如何禁用非详尽的“何时”表达式检查?
- javascript - MongoDB:聚合查询匹配子文档数组的多个条件