我最近开始使用GoogleFit API。我已经浏览了几个关于这个问题的stackoverflow帖子,但还没有看到一个对我有用的好答案。大多数答案都指向过时的API。
我想完成的任务很简单: 从服务器中读取每日步数。
理想情况下,我希望检索的步数与choice上显示的相匹配,但我无法这样做。
这是我的设置:
请求访问权限:
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.build()
if (GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions)) {
Toast.makeText(this, "Already Has permission", Toast.LENGTH_SHORT).show()
} else {
GoogleSignIn.requestPermissions(
this, // your activity
FIT_REQUEST_CODE,
GoogleSignIn.getLastSignedInAccount(this),
fitnessOptions)
}
据我了解,下面的方法应该与服务器联系并检索步数。
根据文档,有readDailyTotalFromLocalDevice(...)
方法,所以如果我想从设备获取数据,我会使用该方法。但这两种方法似乎都返回了相同的确切值。
查询数据
Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this))
.readDailyTotal(DataType.TYPE_STEP_COUNT_DELTA)
.addOnSuccessListener {
tvResult.text = "Steps: ${it.dataPoints[0].getValue(Field.FIELD_STEPS)}"
}
.addOnFailureListener {
tvResult.text = "Error"
}
对于上下文:https://fit.google.com/上的步数(在撰写本文时) 6000 ,我从上述方法中获得的值是 4 此外,我没有看到在GoogleAPI控制台上为健身api生成任何流量,这证实了请求永远不会发送到服务器的假设。
我尝试过的(没有成功):
如何阅读存储在云健身数据存储中的每日步数数据?