我需要为我的应用程序构建指南针。
通过阅读文档,似乎有两种合理的方法:
非常感谢任何解决此问题的建议。
答案 0 :(得分:8)
看起来mob1lejunkie已经解决了这个问题,但仅供将来参考,让我提一下这里的问题是magnetic declination(磁北和真北的区别)。您可以尝试an online model from NOAA来了解您所在地区域的差异。
Android包含一个名为GeomagneticField的模型,可用于计算给定纬度,经度和海拔高度的近似偏差。所以,我认为你需要做的是计算真北,从Sensor.TYPE_ORIENTATION读出azimuth value,然后添加到那个GeomagneticField.getDeclination()。
答案 1 :(得分:1)
这是为手机制造的紧凑型零件的缺点。我们现在使用的5000美元IMU的误差为+/- 2度,在这个范围内它似乎也很疯狂。
尝试远离干扰,金属表面,看看它是否有所改善。如果没有,我讨厌打破坏消息,但这就是硬件。
你见过这些吗?
http://developer.android.com/reference/android/hardware/SensorManager.html