onAccuracyChanged, почему?

это одна из автоматически сгенерированных функций, которые я получаю при реализации

прослушиватель событий сенсора

Я искал и не нашел ничего, кроме этого описания: «Сделайте что-нибудь, если точность датчика изменится». когда и как меняется точность датчика приближения? и как это может быть полезно в моих приложениях?


person Motassem MK    schedule 20.09.2015    source источник
comment
это помогает? stackoverflow.com/questions/6038232/   -  person Marco Acierno    schedule 20.09.2015
comment
Метод OnAccuracyChanged вашего слушателя вызывается системой, когда датчик начинает сообщать с разной точностью, да, это ответ на часть моего вопроса, спасибо. но все же, когда это происходит (когда датчик меняет свою точность) и как это использовать?   -  person Motassem MK    schedule 20.09.2015


Ответы (1)


Насколько я понимаю, метод OnAccuracyChanged вызывается всякий раз, когда датчик сообщает с разной точностью, а метод onSensorChanged вызывается всякий раз, когда датчик сообщает новое значение.

У меня тоже был тот же вопрос, как использовать метод onAccuracyChanged.

Допустим, вам нужны данные датчика только тогда, когда точность высока, не ниже этого. Один из способов сделать это — создать новую глобальную переменную. Внутри метода onAccuracyChanged инициализируйте его некоторым значением, а внутри функции onSensorChanged добавьте условие if..else.

Образец кода:

public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // Do something here if sensor accuracy changes.
        // You must implement this callback in your code.
        if (sensor == mValuen) {
            switch (accuracy) {
                case 0:
                    System.out.println("Unreliable");
                    con=0;
                    break;
                case 1:
                    System.out.println("Low Accuracy");
                    con=0;
                    break;
                case 2:
                    System.out.println("Medium Accuracy");
                    con=0;

                    break;
                case 3:
                    System.out.println("High Accuracy");
                    con=1;
                    break;
            }
        }
    }

Теперь используйте условие как if (con==1), чтобы внести необходимые изменения.

P.S. Согласно документации андроида.

public abstract void onAccuracyChanged (int sensor, int accuracy)

Вызывается при изменении точности датчика. Для получения дополнительной информации см. SensorManager.Parameterssensor Идентификатор отслеживаемого датчика точность Новая точность этого датчика. Поэтому всякий раз, когда точность изменяется, у вас будет ссылка на это изменение. Пожалуйста, дайте мне знать, если я что-то упустил. Спасибо.

person driftking9987    schedule 15.12.2015
comment
Какова ценность mValuen? - person Shivam Kumar; 28.05.2018
comment
mValuen будет типом датчика, который вы будете инициализировать. Например, mValuen = sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED);, а затем sManager.registerListener(this, mValuen, SensorManager.SENSOR_DELAY_UI); - person driftking9987; 28.05.2018