Точность компаса Android — когда калибровать?

Я разрабатываю приложение, которое предоставляет некоторые функции дополненной реальности с использованием компаса. Я обнаружил, что иногда мне нужно откалибровать свой компас, чтобы он работал правильно.

Как узнать (программно), что необходима калибровка?

Я имею в виду, что знаю, как откалибровать компас, используя 8-шаблонную фигуру, но я хочу определить, что необходима калибровка, и отобразить предупреждение пользователю («Ваш компас недостаточно точен, пожалуйста, откалибруйте датчик компаса»).

Это возможно, пожалуйста? Спасибо!


person Berťák    schedule 27.01.2015    source источник


Ответы (1)


Моим решением было бы использовать метод onAccuracyChanged() интерфейса SensorEventListener.

Вот как бы я поступил:

//In SensorEventListener interface implementation    
@Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        switch(sensor.getType()){
            case Sensor.TYPE_MAGNETIC_FIELD :
                switch(accuracy) {
                    case SensorManager.SENSOR_STATUS_ACCURACY_LOW :
                        doSomething();
                        break;
                    case SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM :
                        doSomethingElse();
                        break;
                    case SensorManager.SENSOR_STATUS_ACCURACY_HIGH :
                        doNothing();
                        break;
                }
                break;
            default:
                break;
        }
    }

Вы также должны посмотреть этот ответ здесь: https://stackoverflow.com/a/7877688/7501326

"Обычно, если устройство не откалибровано, вы увидите большие различия в значении азимута при малых оборотах. Это то, о чем я беспокоюсь."

person Kerat    schedule 13.04.2017