我正在使用加速度計控制角色的遊戲。我的問題是:我需要使用OnSensorChanged()中無法訪問的類和方法中傳感器接收的值。我相信我需要在OnSensorChanged中實現回調,但我不知道該怎麼做。誰能幫我嗎?Android加速度計問題
回答
我相信在這篇文章(How to Define Callbacks in Android?)的答案會幫助你。
總之,創建回調接口:
// The callback interface
interface MyCallback {
void callbackCall(SensorEvent event);
}
實現的回調中是應該做計算類的接口:
class Callback implements MyCallback {
void callbackCall(SensorEvent event) {
// callback code goes here
}
}
從你的活動,你必須讓通話onSensoreChanged():
// The class that takes the callback
class Worker extends Activity implements SensorEventListener {
MyCallback callback;
public void onSensorChanged(SensorEvent event) {
callback.callbackCall(event);
}
}
我希望這有助於。
UPDATE:
我假設你已經知道進程和線程(如果沒有,請看看Android的文檔約Processes and Threads)。
onSensorChanged方法是一個I/O,在單獨的線程(而不是主UI線程)中執行I/O操作是一種很好的做法。
調用回調方法後,可以將事件存儲在另一個變量中,並使用該類中的那些局部變量。
由於您正在編寫遊戲,因此您的應用不太可能需要每一個事件。因此,當應用程序忙於計算遊戲數據時,其他事件可能會被丟棄。你可以通過設置一個「繁忙」標誌(布爾值)並在這個if塊中包含計算代碼。
void callbackCall(SensorEvent event) {
if (!busy) {
// Set the busy flag to block other event changes
busy = true;
// callback code goes here
// Once finished, reset the busy flag to allow other events to come in
busy = false;
}
}
因此,如果我想在一個類中使用我的字符X和Y座標,並且在另一個類中使用加速度計sensorlistener,則會調用OnSensorChanged中的回調函數,但是如何在其他類中存在event.values修改座標?那麼一旦從處理玩家位置的類中調用另一種方法,這些值是否會被拋出? – vulgarknight 2013-03-10 21:14:20
我已更新上述答案,以回答您的問題。 – Armin 2013-03-10 21:39:25
好的,所以回調在類的同一個線程上調用它?所以當回調爲變量賦值時,該變量在該類中是持久的? – vulgarknight 2013-03-10 21:47:20
- 1. Android加速度計問題
- 2. SpriteKit加速度計問題
- 3. cocos2d +加速度計問題
- 4. Cocos2d加速度計問題?
- 5. Android加速度計
- 6. Android加速度計
- 7. Android加速度計精度
- 8. 加速度計的性能問題
- 9. 加速度計傾斜問題
- 10. 問題時實現加速度計(Andengine)
- 11. IOS加速度計/陀螺儀問題
- 12. Android加速度計角度計算
- 13. 加速度計在Android
- 14. Android加速度計服務
- 15. android加速度計registerListener
- 16. Android加速度計遊戲
- 17. Android加速度計困難
- 18. Android加速度計讀數
- 19. 科爾多瓦加速度計插件觀察加速問題
- 20. Android的listactivity與加速度計滾動問題
- 21. 訪問Kinect加速度計
- 22. Cocos2d搖/加速計問題
- 23. android加速度計精度極差
- 24. 更高精度的Android加速度計
- 25. Android加速度計和Android版本
- 26. Android加速度計 - 測量緩慢加速度
- 27. 代碼中使用加速度計爲android平板電腦構建速度計的問題
- 28. UIA加速度計檢測角度問題
- 29. 角速度和計算問題
- 30. iphone GPS速度計算問題
我們可以看到一些代碼嗎? – Geobits 2013-03-10 20:38:28
嗯,我只是將SensorListener註冊到我的加速計類中,並且在該類中有OnSensorChanged。這幾乎是我的所有代碼,因爲沒有其他工作。我得到我的加速度計值很好,但我似乎無法拿走它們並將它們保存到變量中。這就是我真正想做的事情,但變量總是隻存在於OnSensorChanged內部。如果我能保存這些價值觀,我就不會有更多的問題。 – vulgarknight 2013-03-10 20:48:06
爲什麼你不能定義一個類成員來保存由onSensorChanged傳遞的值。 – 2013-03-10 21:16:08