Android
平台支持很多监测设备运动的传感器。其中有两个传感器一定是基于硬件的(加速度计和陀螺仪),有三个可能基于硬件或软件(重力计、线性加速计和旋转向量传感器)。
比如,某些设备的软传感器利用加速度计和磁力计来报送数据,而其它一些设备可能用陀螺仪来报送数据。 大部分 Android
平台的设备都带有加速计,有很多现在还带有陀螺仪。软传感器的可用性变数更大一些,因为它们常常依靠一个以上硬件传感器来报送数据。
运动传感器对于监测设备的移动非常有用,诸如倾斜、震动、旋转、摇摆等。
这些动作通常是直观反映了用户的输入(比如用户在游戏中操纵汽车或者运球),但也可能反映了设备所处的物理环境变化(比如你在开车,设备也随着移动)。
在第一种场合中,你监测的运动是以设备或应用为参照系;而在第二种场合,运动是以地球为参照系的。
一般情况下,运动传感器不是用来监测设备的方位的,但它们可以与其他传感器合作使用,比如地磁传感器,用于检测设备的在地球参照系中的方位(详见
方位传感器)
所有的运动传感器都会在 float 数组的方式在参数中返回。表
1 列出了 Android 平台支持的所有运动传感器:
表 1.. Android 平台支持的运动传感器。
传感器
传感器事件数据
说明
测量单位
SensorEvent.values[0]
沿 x 轴的加速度(包括重力)。
m/s2
SensorEvent.values[1]
沿 y 轴的加速度(包括重力)。
SensorEvent.values[2]
沿 z 轴的加速度(包括重力)。
SensorEvent.values[0]
沿 x 轴的重力加速度。
m/s2
SensorEvent.values[1]
沿 y 轴的重力加速度。
SensorEvent.values[2]
沿 z 轴的重力加速度。
SensorEvent.values[0]
围绕 x 轴的旋转角速度。
rad/s
SensorEvent.values[1]
围绕 y 轴的旋转角速度。
SensorEvent.values[2]
围绕 z 轴的旋转角速度。
SensorEvent.values[0]]
沿 x 轴的加速度(不包括重力)。
m/s2
SensorEvent.values[1]
沿 y 轴的加速度(不包括重力)。
SensorEvent.values[2]
沿 z 轴的加速度(不包括重力)。
SensorEvent.values[0]]
旋转向量沿 x 轴的部分(x * sin(θ/2))。
无无
SensorEvent.values[1]
旋转向量沿 y 轴的部分(y * sin(θ/2))。
SensorEvent.values[2]]
旋转向量沿 z 轴的部分(z * sin(θ/2))。
SensorEvent.values[3]]