Разрабатываю приложение счетчика шагов на Android. Чтобы получить шаги, приложение прослушивает событие onSensorChanged (..) Sensor.TYPE_STEP_COUNTER sensor.
Проблема в , что на некоторых устройствах приложение не находится в focus счетчик устройства вообще не увеличивается. Но если в фокусе находится приложение, он считается довольно точным. На других устройствах хорошо работает в обоих режимах. Проблемным устройством c является Samsung note 8 (Android 9). Странно то, что до перезагрузки телефона он работал нормально. Счетчик шагов Samsung Health работает нормально.
Ожидаемый : счетчик шагов увеличивается без зависимости от состояния приложения
Фактический : увеличивается счетчик шагов только если приложение в фокусе
в onResume метод Я регистрирую слушателя.
SensorManager sensorManager =
(SensorManager) getActivity().getSystemService(Activity.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
sensorManager.registerListener(mListener, sensor, SensorManager.SENSOR_DELAY_FASTEST, 0);
Это слушатель.
private final SensorEventListener mListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
mCounterSteps = (int) event.values[0];
if(stepsTextView != null) stepsTextView.setText("" + mCounterSteps);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) { }
};