Android 罗盘精度 - 何时校准?

Ber*_*ťák 6 android augmented-reality compass

我开发了一个使用指南针提供一些增强现实功能的应用程序。我发现有时我需要校准我的指南针以使其正常工作。

我怎么知道(以编程方式)需要校准​​?

我的意思是我知道如何使用 8 模式图校准罗盘,但我想检测到是否需要校准并向用户显示一些警报(“您的罗盘不够准确,请校准您的罗盘传感器。”)。

请问这可能吗?谢谢!

小智 7

我的解决方案是使用SensorEventListener 接口的onAccuracyChanged()方法。

这就是我会做的:

//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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

您还应该在这里查看这个答案:https ://stackoverflow.com/a/7877688/7501326

“通常情况下,如果设备没有校准,你会看到小旋转的方位角值有很大变化。这就是我担心的。”