2010-11-27 60 views
4

我在听的传感器值获取信息,并与从磁传感器

if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { 
     for (i=0;i<3; i++) mag[i] = event.values[i]; 

让他们确定在我的处理程序的文档进行Sensor.TYPE_MAGNETIC_FIELD说开发商你: “所有值都在微特斯拉(uT)并测量X,Y和Z轴上的环境磁场。“

如何将该信息转换为方位角,俯仰角和俯仰角?我怎么把它变成罗盘磁标题?

只是提供了与ORIENTATION传感器和ACCELEROMETER传感器相同的信息,一旦您完成矩阵转换?

回答

3

如果有访问加速度计,可以使用getOrientation() 方法,如从两个传感器来确定,并经由getRotationMatrix()方法计算它返回方位角,俯仰和滚转。

编辑

回应意见......现在我看到你的问题。抱歉。只有三轴磁力计,除非设备平行于地球表面,否则无法准确获得方位角,俯仰角和俯仰角。请记住使用针状指南针,并将其放在主轴上,以便您可以看到并手动补偿倾斜,或者b)密封在液体中,以便将气泡水平推到中心位置?获取方位角:

azimuth = arctan(y/x) 

现在,如果您倾斜手机,x/y平面感应中的误差会变大。现在您需要确定倾斜度(使用加速度计),然后测量Z轴磁场强度,然后使用三者进行补偿。这基本上就是你所知道的getRotationMatrix()和getOrientation()。

我认为Sensor.TYPE_ORIENTATION在API 8中被弃用的部分原因是因为没有单独的方向传感器本身。它是磁场和加速度感应的结合。

一篇好的论文,我挖出来,覆盖了一切:

http://www.ssec.honeywell.com/position-sensors/datasheets/sae.pdf

+0

明白了。我的问题更多地沿着“如何对X,Y和Z轴上的环境磁场值做任何有用的事情?” – 2010-11-29 01:07:12