我需要为我的应用构建指南针。

通过阅读文档,似乎有两种合理的方法:

  • Sensor.type_orientation方法:这是这样做的简单方法。问题在于它不准确。当我将阅读与Snaptic Compass进行比较时,它大约是10-15度,而对于我的目的来说,这是不可接受的。
  • Sensor.type_accelerometer,sensor.type_magnetic_field和getRotationMatrix()与RemapCoorDinatesystem()和Getorientation()方法()方法:文档表示“通常更准确”。问题是我在听众中注册的延迟,即使设备固定在平坦的表面上,指南针也会发疯。

解决此问题的任何建议将不胜感激。

有帮助吗?

解决方案

看起来Mob1lejunkie已经弄清楚了,但是仅供将来参考,我提到这里的问题是 磁偏斜 (磁性北部和真实北部之间的差异)。你可以尝试 NOAA的在线模型 了解您在世界各地的区别。

Android包括一个称为的模型 地磁菲尔德 可以用来计算纬度,经度和高度的近似下降。因此,我相信您需要做的才能计算真实的北方 方位角值 从sensor.type_orientation,然后添加到geomagneticfield.getDeclination()。

其他提示

这是为手机制作的紧凑零件的缺点。我们现在正在使用的5000美元IMU的错误+/- 2度,在该范围内,它似乎也变得疯狂了。

尝试摆脱干扰,金属表面,看看它是否有所改善。如果没有,我讨厌打破坏消息,但这就是硬件。

你看过这些吗?

http://developer.android.com/reference/android/hardware/sensormanager.html

http://groups.google.com/group/android-developers/browse_thread/thread/thread/bbb0e8b97c673cf9/5c16bc2e49f6e972?lnk = raot

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top