Android罗盘精度 - 什么时候校准?

时间:2015-01-27 16:37:07

标签: android augmented-reality compass

我开发了一个应用程序,它使用罗盘提供一些增强现实功能。我发现有时候我需要校准指南针以使其运行良好。

我如何(以编程方式)知道需要校准?

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

这可能吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

我的解决方案是使用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;
        }
    }

您还应该在此处查看此答案:https://stackoverflow.com/a/7877688/7501326

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