Я пытаюсь получить текущее действие, которое пользователь выполняет с SensorsClient , используя эту документацию .
Во фрагменте я добавляю OnDataPointListener в SensorsClient, и я знаю, что он успешно добавлен, так как я вижу "Прослушиватель активности зарегистрирован!" сообщение в Logcat.
private fun requestActivityUpdates() {
Fitness.getSensorsClient(context!!, GoogleSignIn.getLastSignedInAccount(context)!!)
.add(SensorRequest.Builder()
.setDataType(DataType.TYPE_ACTIVITY_SEGMENT)
.setSamplingRate(10, TimeUnit.SECONDS)
.build(), mActivityListener)
.addOnSuccessListener {
Log.i(TAG, "Activity Listener registered!")
}
.addOnFailureListener {
Log.e(TAG, "Activity Listener not registered.", it)
}
}
Вот мой OnDataPointListener
private fun initActivityListener() {
mActivityListener = OnDataPointListener {
Log.i(TAG, "OnDataPoint Called!")
for (field in it.dataType.fields) {
val value: Value = it.getValue(field)
Log.i(TAG, "Detected DataPoint field: " + field.name)
Log.i(TAG, "Detected DataPoint value: ${value.asActivity()}")
}
}
}
Этот слушатель не будет вызван ни разу. Я проверяю разрешения пользователей с помощью этого кода и могу получать количество шагов, калории и расстояние с помощью RecordingClient и HistroyClient с этими разрешениями, но по какой-то причине я не могу получить какие-либо данные об активности с SensorsClient
private fun initFitnessOptions() {
fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_CUMULATIVE, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_STEP_COUNT_CUMULATIVE, FitnessOptions.ACCESS_WRITE)
.addDataType(DataType.TYPE_CALORIES_EXPENDED, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_DISTANCE_CUMULATIVE, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_ACTIVITY_SEGMENT, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_ACTIVITY_SEGMENT, FitnessOptions.ACCESS_WRITE)
.build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this,
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
account,
fitnessOptions);
} else {
accessGoogleFit();
}
}
Разрешения на распознавание активности уже включены в мой AndroidManifest. xml
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
Как вы думаете, в чем здесь проблема?