2012-01-20 25 views
3

我想了解在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

在此先感謝。吉列爾莫。

+0

是的,'gravity []'從未在該文檔中初始化。我一直在尋找相同的答案 – jmishra

回答

2

如果你想使用Sensor重力必須在那裏我沒有得到你的問題很好..但是。 只需再次閱讀文檔,他們已經描述了您的查詢。

,如果你想了解的傳感器基本規則只要按照這個真棒教程。

Android Sensor Tutorial

+1

我在試圖澄清的問題中增加了更多細節。 – polonskyg

+0

你想要更多的例子在TYPE_LINEARACCELERATION和TYPE_ROTATIONVECTOR上? – NovusMobile

+0

這不是問題,而是!我想要些! – polonskyg