I have a wearable device where Google Fit is connected with the same account as of my phone. The wearOS device is also connected to my phone.
However the following code returns no data sources corresponding to the DataType.TYPE_HEIGHT, DataType.TYPE_HEART_RATE_BPM, DataType.TYPE_HEART_POINTS, DataType.TYPE_STEP_COUNT_DELTA
data points.
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)
}
}
}
I do get data source for DataType.TYPE_LOCATION_SAMPLE
which is my phone.
My wearOS device is Fossil Gen 5 Carlyle
What am I doing wrong here?
from No Datasources for `DataType.TYPE_HEART_RATE_BPM` even when watch connected
No comments:
Post a Comment