Датчик счетчика Android шагов обновляется только если приложение находится в фокусе на некоторых устройствах - PullRequest
0 голосов
/ 21 июня 2020

Разрабатываю приложение счетчика шагов на 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) { }
};
...