我正在 Android 传感器上编写一些程序,我对磁力计传感器的读数感到困惑。
磁力计报告手机三个轴上的磁场强度。我观察到在同一位置,如果手机的航向发生变化,磁读数会发生巨大变化。但是,在我的理解中,无论手机的放置姿势如何,特定位置的地球磁场都应该是相对稳定的。
所以,我的问题是,有没有办法将原始读数从 3 轴磁力计传感器转换到世界坐标系?加速度计和方向数据也可在手机上获得。如果是这样,我怀疑即使手机的航向发生变化,转换后的磁力也应该是相同的。
我参考了 Android 源代码,特别是 getOrientation() 函数和 getRotationMatrix() 函数。我希望从他们的代码实现中得到一些帮助。但我不是很明白。有人能解释一下这些函数的算法原理吗?
函数代码链接:http: //www.netmite.com/android/mydroid/cupcake/frameworks/base/core/java/android/hardware/SensorManager.java
谢谢!我真的很急于解决这个问题。