我正在尝试了解 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] 的东西并使用了加速度计,但是当我阅读文档时它说加速度计返回的值已经包含重力。这是我不明白的。
我假设 gravity[] 是来自重力传感器的值,对吗? 顺便说一句,有什么地方可以详细了解这两个新传感器的工作原理? TYPE_LINEARACCELERATION 和 TYPE_ROTATIONVECTOR
提前致谢。吉列尔莫。
最佳答案
我没有完全理解你的问题..但是如果你想使用传感器重力必须在那里。 只需再次阅读文档。他们已经描述了您的查询。
如果您想了解传感器的基本规则,请遵循这个很棒的教程。
关于android - 无法理解文档中的 Android 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936379/