我想了解在Android爲Sensor.TYPE_ACCELEROMETER文檔瞭解Android的樣本: 它給出了這樣的例子:不能在文檔
應當清楚的是,爲了測量的實際加速裝置,必須消除重力的貢獻。這可以通過應用高通濾波器來實現。相反,可以使用低通濾波器來隔離重力。
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],並使用加速度計,但是當我閱讀文檔,它說,通過加速計返回的值已經具備了重力substructed。這是我不明白的。
我假定重力[]是從重力傳感器的值,是嗎? 順便說一句,任何我可以詳細瞭解兩個新傳感器的工作原理的地方? TYPE_LINEARACCELERATION和TYPE_ROTATIONVECTOR
在此先感謝。吉列爾莫。
是的,'gravity []'從未在該文檔中初始化。我一直在尋找相同的答案 – jmishra