我正在尝试了解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
提前致谢。吉列尔莫。
答案 0 :(得分:2)
我没有完全得到你的问题..但是如果你想使用传感器Gravity必须在那里。 只需再次阅读文档。他们已经描述了您的查询。
如果您想了解传感器的基本规则,请遵循这个非常棒的教程。