Android游戲開發之十四:按鍵中斷事件的處理
我們在玩Android游戲時,可能會有一些其他的突發事件發生,例如突然有人撥打電話,或者在游戲中按下了一些特殊的鍵(如拍照鍵),這些在Android游戲開發時都需要考慮,也就是要為按鍵中斷事件進行相應的處理。
- @Override
- public boolean dispatchKeyEvent(KeyEvent event)
- {
- switch (event.getKeyCode())
- {
- case KeyEvent.KEYCODE_VOLUME_UP: //音量鍵+
- case KeyEvent.KEYCODE_VOLUME_DOWN: //音量鍵-
- case KeyEvent.KEYCODE_CAMERA: //拍照鍵
- case KeyEvent.KEYCODE_FOCUS: //拍照鍵半按的對焦狀態
- // event.getAction() == KeyEvent.ACTION_UP //提示:如果按鍵按下后彈起時觸發
- return true; //這些標記為處理過,則不在往內部傳遞
- default:
- break;
- }
- return super.dispatchKeyEvent(event);
- }
對于游戲突然來電話我們一般采取通過PhoneStateListener類提供的public void onCallStateChanged (int state, String incomingNumber) 回調方法可以獲取電話的狀態,比如常規空閑時CALL_STATE_IDLE、來電時CALL_STATE_RINGING和 CALL_STATE_OFFHOOK 摘機通話中,有關處理的細節網友可以查看Android Git項目中的Music,在Android開源項目中系統自帶的音樂播放器可以很好的處理,比如在通話結束后恢復音樂播放,而我們游戲需要做的就是記住 當前的游戲狀態盡量數據持久化處理,不能因為長時間的通話,游戲的Activity被清理了,這里我們一般通過onSaveInstanceState來保存當前窗口的一些記錄,通過Intent標記來讓系統管理好我們游戲的生命周期。