在文档中无法理解Android示例

时间:2012-01-20 03:22:40

标签: android

我正在尝试了解Android的Sensor.TYPE_ACCELEROMETER文档: 它给出了这个例子:

显然,为了测量装置的实际加速度,必须消除重力的贡献。这可以通过应用高通滤波器来实现。相反,可以使用低通滤波器来隔离重力。

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];
 }

But it says:
    All values are in SI units (m/s^2)
    values[0]: Acceleration **minus Gx** on the x-axis
    values[1]: Acceleration **minus Gy** on the y-axis
    values[2]: Acceleration **minus Gz** on the z-axis

因此,我应该从加速计传感器检索到的值中移除重力,还是已经移除了重力。

我的意思是,该示例使用称为重力[2]的东西并使用加速度计,但是当我阅读文档时,它说加速度计返回的值已经具有重力量。这是我不明白的。

我认为引力[]是重力传感器的值,对吧? BTW,我可以详细了解两个新传感器的工作原理吗? TYPE_LINEARACCELERATION和TYPE_ROTATIONVECTOR

提前致谢。吉列尔莫。

1 个答案:

答案 0 :(得分:2)

我没有完全得到你的问题..但是如果你想使用传感器Gravity必须在那里。 只需再次阅读文档。他们已经描述了您的查询。

如果您想了解传感器的基本规则,请遵循这个非常棒的教程。

Android Sensor Tutorial