Android 加速度传感器的类型是 Sensor.TYPE_ACCELEROMETER
通过 android.hardware.SensorEvent 返回加速度传感器值。
加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是
values[0]: x-axis 方向加速度
values[1]: y-axis 方向加速度
values[2]: z-axis 方向加速度
其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点(如下图)
x 方向就是手机的水平方向,右为正
y 方向就是手机的水平垂直方向,前为正
y 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负
x<0 x>0
^
|
+-----------+--> y>0
| |
| |
| |
| | / z<0
| | /
| | /
O-----------+/
|[] [ ] []/
+----------/+ y<0
/
/
|/ z>0 (toward the sky) O: Origin (x=0,y=0,z=0)
需要注意的是,由于地球固有的重力加速度g (值为9.8 m/s^2),
因此现实中实际加速度值应该是 z方向返回值 - 9.8 m/s^2.
比如你以 2 m/s^2 的加速度将手机抛起,这时z方向的返回值应该是 11.8 m/s^2.
反之若以手机以2 m/s^2 的加速度坠落,则z方向的返回值应该是 7.8 m/s^2.
x,y方向则没有上述限制.
以上转自:
下面是一些基本概念,转自:http://www.androidegg.com/portal.php?mod=view&aid=612&page=1
1.4 加速度传感器
加速度传感器是为了检测物体的加速度的传感器。物体运动加速度也跟着变化,如果能取到加速度,物体受到什么样的作用力或则物体进行什么样的运动,我们就可以知道。使用加速度,我们就能做模拟计步器、物体运动的应用程序。
1.4.1 通过加速度传感器能取到的值
我们可以通过Android的加速度传感器可以取得x,y,z三个轴的加速度(如图1-4)。
加速度值受地球重力的影响值也不一样。这就涉及到物理知识了,我就不细阐述了。也不是一句两句能说清楚的。在SensorManager类中定义了很多星体的重力加速度值。如表1-7
图 1-4 加速度传感器的轴
表1-7
SensorManager 类被定义的各新星体的重力加速度值
常量名 | 说明 | 实际的值 |
GRAVITY_DEATH_STAR_1 | 死亡星 | 3.5303614E-7 |
GRAVITY_EARTH | 地球 | 9.80665 |
GRAVITY_JUPITER | 木星 | 23.12 |
GRAVITY_MARS | 火星 | 3.71 |
GRAVITY_MERCURY | 水星 | 3.7 |
GRAVITY_MOON | 月亮 | 1.6 |
GRAVITY_NEPTUNE | 海王星 | 11.0 |
GRAVITY_PLUTO | 冥王星 | 0.6 |
GRAVITY_SATURN | 土星 | 8.96 |
GRAVITY_SUN | 太阳 | 275.0 |
GRAVITY_THE_ISLAND | 岛屿星 | 4.815162 |
GRAVITY_URANUS | 天王星 | 8.69 |
GRAVITY_VENUS | 金星 | 8.87 |