如何在android中校准方向传感器?

xen*_*ite 16 java android android-sensors

我正在Google Android 2.1中编写一个应用程序,需要知道设备(HTC Hero)面向哪个方向(n/w/s/e).传感器及其听众工作得很好,但我从传感器获得的值非常糟糕.例如它告诉我当设备面向SW时我会面向北方......

这似乎是Android设备的已知问题.我在网上找到的"解决方案"如下所示:

  • 摇动设备
  • 像八个一样移动设备
  • 点击设备背面

这被认为是触发传感器重新校准的原因.而且:"四处走动"的东西对我有用......但我觉得这不是很专业......

那么 - 如何从SDK触发方向传感器的重新校准?我需要对传感器进行适当的校准,而没有任何花哨的东西会让这个应用程序的用户看起来像完全白痴,而他们"手动"重新校准他们的手机......

有没有办法做到这个"正确"?

编辑:

或者:有没有办法确定PROGRAMMATICY,如果设备是否正确校准?作为后备选项可以说......然后我可以警告用户该设备需要"手动"重新校准.

Mor*_*ang 3

我认为没有办法以编程方式知道罗盘传感器是否校准正确,除非您使用 GPS 等辅助数据源。如果您可以使用 GPS,那么当用户移动时,您可以将 GPS 移动与罗盘航向进行比较并进行纠正。请记住,局部磁场可能会扰乱罗盘读数,并且设备无法知道您是否在森林中央或变压器旁边。

对于这些微型设备,您总是需要处理一些偏差。如果您还检查加速度计的值,您会发现在静止状态下它们并不总是返回 9.8 m/s^2(或至少在设备之间一致)。

在您的帮助中,您可能只需要告诉用户以 8 字形旋转/扭转手机即可重置指南针。