从 Android 磁传感器获取正确方向

Getting correct direction from Android magnetic sensor

在android中,我们从磁传感器获取读数并确定方向。但我们知道磁北不是真北。结果是从真北偏转。同样,所有地方的偏转都不相同。同样在同一个地方,偏转随着时间的推移而变化,因为磁北以每年 40 公里的速度从真北移动。因此,我们从传感器获得的数据如果不经过一些修正是无法使用的。

现在我有两个点 A、B,它们的纬度、经度、高度如下图所示。我需要确定正确的向量。因为,我的位置是 A,我的传感器方向不正确,我无法获得从 A 到 B 的正确矢量 X 和 Y。有没有办法通过过滤磁传感器数据来获得正确的矢量?

http://i.stack.imgur.com/7VAQ2.png

android 中有 GeomagneticField,它为您提供了当前位置与真北的偏差。所以你可以用下面的代码

从真北得到偏转
gmf = new GeomagneticField((float) ur_Latitude(), 
                                       (float) ur_Longitude(),
                                       (float) ur_Altitude(), 
                                       System.currentTimeMillis());
            myAngle = Math.toRadians(-gmf.getDeclination());

现在您可以在 Y 轴上将向量旋转这个角度 myAngle