2012-08-15 82 views
0

當我從加速度計(在X軸和Y軸上)得到數值後,我將這個值賦給xSpeed和ySpeed變量,然後根據這個數值移動一個球。問題在於,無論加速度計的值是什麼,我都希望在活動開始時xSpeed和ySpeed爲0(直到電話被移動時球纔會移動)。我想做這種校準。加速度計開始位置

對於Y軸我試過,但不適用於手機的所有起始位置。

ball.setYSpeed(ySpeed-startAccelY); 

其中startAccelY是在Y軸上,並ySpeed加速度計的初始值將被asigned新值。

回答

2

我建議你採取原始的起始值,並從當前讀數中減去它。

例如你有一個變量在你的代碼:

float initialPosition = 1.4; // 1.4 is just an example, you'd set it to the reading of the accelerometer 

然後,當你申請的當前的加速度閱讀你的球,你可以減去initialPosition值使球移動。這樣球就會在開始時停頓。

我希望這會有所幫助。

+0

這正是我爲Y軸所做的。它工作的很好,但是當手機直線向上時,它不會很好地工作。但是這對X軸不起作用。 – Alex 2012-08-15 16:35:00

+0

X軸的任何解決方案? – Alex 2012-08-15 16:43:50

+0

也應該爲X軸工作,爲什麼它不工作? – 2012-08-15 17:12:33

1

我假設您使用TYPE_ACCELEROMETER傳感器?請嘗試使用TYPE_LINEAR_ACCELERATION傳感器。它會自動從傳感器讀數中減去重力,所以如果你不移動手機accln保持在0(ish)。

Api 9 +雖然。

+0

這沒有解決問題。 – Alex 2012-08-15 16:52:01