2013-04-30 57 views
5

通過在Android使用event.accelerationIncludingGravity,它返回的將重力加速度轉換爲純加速度?

x: -0.2 
y: +0.1 
z: +9.1 

在平坦表面上休息時的值。但是,我想獲得沒有重力的加速度,但不支持event.acceleration。有沒有一種方法可以將它轉換爲Math?在HTML5Rocks有一個例子去除重力因素,但它似乎並不奏效。

// Convert the value from acceleration to degrees acceleration.x|y is the 
    // acceleration according to gravity, we'll assume we're on Earth and divide 
    // by 9.81 (earth gravity) to get a percentage value, and then multiply that 
    // by 90 to convert to degrees.         
    var tiltLR = Math.round(((acceleration.x)/9.81) * -90); 
    var tiltFB = Math.round(((acceleration.y + 9.81)/9.81) * 90 * facingUp); 

Example script graphing acceleration values(而不是從的HTML5Rocks)

回答

0

我明白了。你得到的x軸和y軸的數字基本上都是0,繼續把設備的測量值放在一個平坦的表面上,並分別平均所有的x和y值,你將得到每個方向的誤差程度。加速度以m/s^2度量。 (米每平方秒)。地球表面的重力加速度爲9.86m/s^2。在理想的物理問題中,你只需要減去這個數字就可以得到答案。如果你試圖計算速度,那麼這將是一個更復雜的問題,但地球的重力加速度不會加速。在z軸上的誤差程度確實較大,但如果按照實際值的百分比計算誤差程度,則不是。或者你大約在海平面以上300公里。

+0

我剛測試過'9.86 - e.acceleration.z'工作正常,當設備面朝上。但是,只要我傾斜它,重力系數也開始影響其他軸。 [這個腳本](http://developer.android.com/reference/android/hardware/SensorEvent.html#values)我認爲是有幫助的,因爲它需要引力,但我不知道如何使用它。 (它是用Java編寫的) – 2013-05-01 01:54:16

+0

是的,硬件的本地功能似乎暫時勝過移動開發。 – 2013-05-01 01:59:38