Accelerometer是用来测试手机当前3个方向轴的加速度的Sensor,那这三个方向是如何定义的呢?请看下图:

 accelerometer

从此定义可以看出:

  1. xyz等3个轴,不以手机是portrait放,还是landscape放而变化

另外一个问题是,这三轴的加速度value在android系统里如何给出的?

对于屏幕朝天的这么一种状况,我们有以下结论:

  • x和y轴,都比较好说,即当手机沿着y轴是正向加速时,就给正值,否则给负值。
  • z轴就比较特殊,因为此时有个地球重力加速度的问题,即-9.8m/s^2。但此时手机实际加速度为0,所以android会返回+9.8m/s^2;如此才能得出手机实际加速度为0这么一个结论;
    假设此时手机沿z轴正向加速度为2m/s^2,那么android会返回2+9.8=11.8这么一个值;
    假设此时手机沿z轴负向加速度为2m/s^2,那么android会返回(-2+9.8)=7.8这么一个值

所以说,此种情况下手机z轴实际加速度值aZActual和android返回的z轴加速度值aZAndroid是不同的,他们的关系是:aZActual = aZAndroid – 9.8;

 

练习:

下图中aXActual/aXAndroid,aYActual/aYAndroid,aZActual/aZAndroid,关系如何?

accelerometer_y_90_clockwise

答案:

aXActual = aXAndroid + 9.8
aYActual = aYAndroid
aZActual = aZAndroid

Advertisements