Android 如何检测磁干扰

Android 如何检测磁干扰,android,android-sensors,Android,Android Sensors,我想计算指南针的方向,所以我使用以下代码: SensorManager mManager = (SensorManager)mContext.getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer = mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); Sensor magnetometer = mManager.getDefaultSensor(

我想计算指南针的方向,所以我使用以下代码:

    SensorManager mManager = (SensorManager)mContext.getSystemService(Context.SENSOR_SERVICE);
    Sensor accelerometer = mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    Sensor magnetometer = mManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    mManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
    mManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_NORMAL);
    private float mR[] = new float[9];
    private float mI[] = new float[9];
    float mOrientation[] = new float[3];

    ....

public void onSensorChanged(SensorEvent event) 
{
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
        mGravity = event.values;
    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
        mGeomagnetic = event.values;
    if (mGravity != null && mGeomagnetic != null) {
        boolean success = SensorManager.getRotationMatrix(mR, mI, mGravity, mGeomagnetic);
        if (success) {
            SensorManager.getOrientation(mR, mOrientation);
            int azimut = (int) (mOrientation[0]*180/3.14159f); // This is the data
        }
    }
}
它通常很好用。当磁场受到干扰时,它就不工作了——例如在我的汽车收音机下面。在这种情况下,我得到了一个错误的常数读数

如何检测磁干扰?

我想你应该读一下,谢谢。它声称“一些应用程序可以测量磁场的强度”——所以这正是我所需要的——但它没有说明如何测量!?