Android Sensors (6) 位置传感器 Position Sensors

 

位置传感器Position Sensors

  

  Android平台提供了两种决定设备位置的传感器:

  地磁场传感器方向传感器(the geomagnetic field sensor and the orientation sensor)。

  还有一种传感器用于检测设备正面和其他物体的距离,叫做接近传感器(proximity sensor)。

  地磁场传感器和接近传感器是基于硬件的。

  方向传感器是基于软件的,它的数据是根据加速度计和地磁场传感器导出的。

  但是方向传感器自从Android 2.2 (API Level 8)开始就被废弃了。

  位置传感器也是返回一个多维向量,放在 SensorEvent中的values数组中。

  返回值见表:

 

方向传感器Orientation Sensor

  方向传感器是根据地磁场传感器加速度计推导出输出数据的。

  使用这两个硬件传感器,方向传感器为下面三个方向提供了数据:

  1. Azimuth:绕Z轴旋转的度数。这是设备的y轴和地磁场北极的夹角。比如,设备的y轴指向东,这个度数就为90。

  2. Pitch:绕X轴旋转的度数。当设备的z轴朝着y轴正向旋转时,这个值是正值,反之,当设备的z轴朝着y轴的负向旋转时,这个值为负值。它的取值范围是-180到180。

  3. Roll:绕Y轴旋转的度数。当设备的z轴朝着x轴正向旋转时,这个值是正值,反之,当设备的z轴朝着x轴的负向旋转时,这个值为负值。它的取值范围是-90到90。

 

  注意这个定义是非常特殊的,因为它在顺时针旋转的时候是正值,而数学上总是逆时针为正值。

  因为方向传感器需要大量的处理运算,所以它的准确度和精度都有所下降。后来,自Android 2.2 (API level 8),方向传感器被废弃。

  官方建议使用下面的方法:

  利用getRotationMatrix()结合getOrientation()方法可以计算方向值。

  还可以利用remapCoordinateSystem()把方向值转换到你的应用的参考坐标系。

 

地磁场传感器Geomagnetic Field Sensor

  地磁场传感器监测地球地磁场变化。

  传感器提供三个坐标上的原始的磁场强度值(in μT)。

  一般情况下,你不需要直接使用这个传感器,你可以使用旋转向量传感器来决定原始的旋转运动;你也可以使用加速度计和地磁场传感器并结合getRotationMatrix()方法来获得旋转矩阵和倾斜矩阵。

  你可以结合 getOrientation()和 getInclination() 方法来使用这些矩阵,从而得到方位和地磁场偏移数据。

 

接近传感器Proximity Sensor

  接近传感器可以让你得到设备离另一个物体的距离。

  接近传感器通常用于检测设备正面和用户头部的距离,比如用户正在打电话。

  大多数Proximity Sensor返回绝对的距离数值,以cm为单位。但是也有一些只返回近或者远。

 

参考资料

  API Guides: Position Sensors

  http://developer.android.com/guide/topics/sensors/sensors_position.html

 

posted @ 2013-03-15 19:26  圣骑士wind  阅读(3679)  评论(0编辑  收藏  举报