从Android磁传感器获得正确的方向

从Android磁传感器获得正确的方向,android,android-sensors,Android,Android Sensors,在安卓系统中,我们从磁传感器获取读数并确定方向。但是我们知道磁北不是真北。结果是偏离正北方向。同样,这种偏转对所有地方都不一样。同样在同一个地方,随着时间的推移,磁北以每年40公里的速度从正北移动,偏转也在变化。因此,我们从传感器获得的数据如果没有一些修正是不可用的 现在我有两个点A,B,它们的纬度,经度,海拔高度如下图所示。我需要确定正确的矢量。由于我的位置是A,传感器的方向不正确,我无法从A到B获得正确的矢量X&Y。有没有办法通过过滤磁传感器数据来获得正确的矢量 安卓系统中有一个功能,可以让

在安卓系统中,我们从磁传感器获取读数并确定方向。但是我们知道磁北不是真北。结果是偏离正北方向。同样,这种偏转对所有地方都不一样。同样在同一个地方,随着时间的推移,磁北以每年40公里的速度从正北移动,偏转也在变化。因此,我们从传感器获得的数据如果没有一些修正是不可用的

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

安卓系统中有一个功能,可以让你在当前位置上偏离正北方向。所以你可以用下面的代码得到从正北的偏转

gmf = new GeomagneticField((float) ur_Latitude(), 
                                       (float) ur_Longitude(),
                                       (float) ur_Altitude(), 
                                       System.currentTimeMillis());
            myAngle = Math.toRadians(-gmf.getDeclination());
现在你可以通过这个角度在Y轴上旋转你的向量
myAngle

android中有一个可以让你在当前时间从你当前位置的正北偏位。所以你可以用下面的代码得到从正北的偏转

gmf = new GeomagneticField((float) ur_Latitude(), 
                                       (float) ur_Longitude(),
                                       (float) ur_Altitude(), 
                                       System.currentTimeMillis());
            myAngle = Math.toRadians(-gmf.getDeclination());

现在你可以在Y轴上通过这个角度旋转向量,让我看看它是否有效。顺便说一句,我如何通过Y轴旋转向量?如果你想知道更多@shohelrayhan,你需要问一个单独的问题让我看看它是否有效。顺便说一句,我如何通过Y轴旋转向量?如果你想知道更多@ShohelRayhan,你需要问一个单独的问题