我有一个可穿戴设备,其中 Google Fit 与我的手机相同的帐户连接。wearOS 设备也连接到我的手机。
但是,以下代码不返回与数据点对应的数据源DataType.TYPE_HEIGHT, DataType.TYPE_HEART_RATE_BPM, DataType.TYPE_HEART_POINTS, DataType.TYPE_STEP_COUNT_DELTA
。
private val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_HEART_POINTS, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_HEIGHT, FitnessOptions.ACCESS_READ)
.build()
fun setUp() {
val signInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile()
.requestScopes(Fitness.SCOPE_ACTIVITY_READ_WRITE, Fitness.SCOPE_BODY_READ_WRITE)
.addExtension(fitnessOptions)
.build()
GoogleSignIn.getClient(activity, signInOptions).apply {
activity.startActivityForResult(signInIntent, 1234)
}
account = GoogleSignIn.getAccountForExtension(activity, fitnessOptions)
}
private fun findDataSources() {
Fitness.getSensorsClient(activity, account)
.findDataSources(
DataSourcesRequest.Builder()
.setDataTypes(
DataType.TYPE_HEIGHT,
DataType.TYPE_HEART_RATE_BPM,
DataType.TYPE_HEART_POINTS,
DataType.TYPE_STEP_COUNT_DELTA,
DataType.TYPE_LOCATION_SAMPLE
)
.setDataSourceTypes(DataSource.TYPE_RAW)
.build()
)
.addOnSuccessListener { dataSources ->
Timber.i("Play fitness $dataSources")
dataSources.forEach {
Timber.i("Data source found: ${it.streamIdentifier}")
Timber.i("Data Source type: ${it.dataType.name}")
addSensorListener(it)
}
}
.addOnFailureListener { e ->
Timber.e(e)
}
}
private fun addSensorListener(dataSource: DataSource) {
val listener = OnDataPointListener { dataPoint ->
for (field in dataPoint.dataType.fields) {
val value = dataPoint.getValue(field)
Timber.i("Detected DataPoint field: ${field.name}")
Timber.i("Detected DataPoint value: $value")
}
}
Fitness.getSensorsClient(activity, account)
.add(
SensorRequest.Builder()
.setDataSource(dataSource) // Optional but recommended for custom data sets.
.setDataType(dataSource.dataType) // Can't be omitted.
.setSamplingRate(10, TimeUnit.SECONDS)
.build(),
listener
)
.addOnCompleteListener { task ->
when (task.isSuccessful) {
true -> Timber.i("Listener registered!")
else -> Timber.e(task.exception)
}
}
}
我确实得到了DataType.TYPE_LOCATION_SAMPLE
我的手机的数据源。
我的 wearOS 设备是Fossil Gen 5 Carlyle
我在这里做错了什么?