當我從加速度計(在X軸和Y軸上)得到數值後,我將這個值賦給xSpeed和ySpeed變量,然後根據這個數值移動一個球。問題在於,無論加速度計的值是什麼,我都希望在活動開始時xSpeed和ySpeed爲0(直到電話被移動時球纔會移動)。我想做這種校準。加速度計開始位置
對於Y軸我試過,但不適用於手機的所有起始位置。
ball.setYSpeed(ySpeed-startAccelY);
其中startAccelY是在Y軸上,並ySpeed加速度計的初始值將被asigned新值。
當我從加速度計(在X軸和Y軸上)得到數值後,我將這個值賦給xSpeed和ySpeed變量,然後根據這個數值移動一個球。問題在於,無論加速度計的值是什麼,我都希望在活動開始時xSpeed和ySpeed爲0(直到電話被移動時球纔會移動)。我想做這種校準。加速度計開始位置
對於Y軸我試過,但不適用於手機的所有起始位置。
ball.setYSpeed(ySpeed-startAccelY);
其中startAccelY是在Y軸上,並ySpeed加速度計的初始值將被asigned新值。
我建議你採取原始的起始值,並從當前讀數中減去它。
例如你有一個變量在你的代碼:
float initialPosition = 1.4; // 1.4 is just an example, you'd set it to the reading of the accelerometer
然後,當你申請的當前的加速度閱讀你的球,你可以減去initialPosition值使球移動。這樣球就會在開始時停頓。
我希望這會有所幫助。
我假設您使用TYPE_ACCELEROMETER傳感器?請嘗試使用TYPE_LINEAR_ACCELERATION傳感器。它會自動從傳感器讀數中減去重力,所以如果你不移動手機accln保持在0(ish)。
Api 9 +雖然。
這沒有解決問題。 – Alex 2012-08-15 16:52:01
這正是我爲Y軸所做的。它工作的很好,但是當手機直線向上時,它不會很好地工作。但是這對X軸不起作用。 – Alex 2012-08-15 16:35:00
X軸的任何解決方案? – Alex 2012-08-15 16:43:50
也應該爲X軸工作,爲什麼它不工作? – 2012-08-15 17:12:33