Насколько я понимаю, метод 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