我对加速度传感器感到有点困惑。
我用它来计算线性加速度:
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度。
这是正确的行为吗?那我怎么知道如何提高速度呢?
在代码中,重力被过滤掉了,但也许这是我的问题?我应该用重力加速球,而不是。
应该写下我真正想做的事情: 我想在屏幕上按照手机倾斜的方向滚动一个球。我已经可以做到这一点,但我想用加速度进行物理校正,所以如果保持角度,球会继续加速。
答案 0 :(得分:2)
基于android java的加速度计测量加速度减去重力,所以如果设备是静止的,它绝对应该在每个轴上返回0。 我想你要找的是陀螺仪。
或者您需要通过将正负加速度相加来计算倾斜度,但这可能不是测量倾斜的非常准确的方法。