Android加速度计在静止时返回0?

时间:2014-03-07 00:51:04

标签: android accelerometer android-sensors

我对加速度传感器感到有点困惑。

我用它来计算线性加速度:

 public void onSensorChanged(SensorEvent event)
 {
      // alpha is calculated as t / (t + dT)
      // with t, the low-pass filter's time-constant
      // and dT, the event delivery rate

      final float alpha = 0.8;

      gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
      gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
      gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

      linear_acceleration[0] = event.values[0] - gravity[0];
      linear_acceleration[1] = event.values[1] - gravity[1];
      linear_acceleration[2] = event.values[2] - gravity[2];
 }

来自:http://developer.android.com/reference/android/hardware/SensorEvent.html#values

它返回0静止。因此,当我将手机倾斜到45度时,我只会获得一个临时加速度,但是当我以45度保持时,我得到0度。

这是正确的行为吗?那我怎么知道如何提高速度呢?

在代码中,重力被过滤掉了,但也许这是我的问题?我应该用重力加速球,而不是。

应该写下我真正想做的事情: 我想在屏幕上按照手机倾斜的方向滚动一个球。我已经可以做到这一点,但我想用加速度进行物理校正,所以如果保持角度,球会继续加速。

1 个答案:

答案 0 :(得分:2)

基于android java的加速度计测量加速度减去重力,所以如果设备是静止的,它绝对应该在每个轴上返回0。 我想你要找的是陀螺仪。

或者您需要通过将正负加速度相加来计算倾斜度,但这可能不是测量倾斜的非常准确的方法。