我正在使用Google Fit Android API来读取用户当前手机的步数和距离。为此,我订阅了DataSource,如下所示:
val dataSource = DataSource.Builder()
.setDevice(Device.getLocalDevice(this))
.setDataType(DataType.TYPE_STEP_COUNT_DELTA)
.setType(DataSource.TYPE_DERIVED)
.build()
Fitness.getRecordingClient(this, GoogleSignIn.getLastSignedInAccount(this))
.subscribe(dataSource)
.addOnSuccessListener {
// access step data
}
.addOnFailureListener {
// handle exception
}
由于我只想从当前手机获取数据,我使用上面的代码。但是当我开始使用HistoryClient
访问数据时,它不会提供任何数据。
以下是我访问步骤数据的代码:
Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this))
.readDailyTotalFromLocalDevice(DataType.TYPE_STEP_COUNT_DELTA)
.addOnSuccessListener { displayData(it) }
.addOnFailureListener { Log.d("MainActivity", "Step Count Reading Exception: $it") }
但如果我在录制客户端订阅代码中使用DataType
而不是DataSource
,则会正确记录数据。
DataSource
的代码是否正确?我是否需要以不同的方式阅读DataSource
的历史数据?