Android游戲開(kāi)發(fā)之十四:按鍵中斷事件的處理
我們?cè)谕鍭ndroid游戲時(shí),可能會(huì)有一些其他的突發(fā)事件發(fā)生,例如突然有人撥打電話,或者在游戲中按下了一些特殊的鍵(如拍照鍵),這些在Android游戲開(kāi)發(fā)時(shí)都需要考慮,也就是要為按鍵中斷事件進(jìn)行相應(yīng)的處理。
- @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: //拍照鍵半按的對(duì)焦?fàn)顟B(tài)
- // event.getAction() == KeyEvent.ACTION_UP //提示:如果按鍵按下后彈起時(shí)觸發(fā)
- return true; //這些標(biāo)記為處理過(guò),則不在往內(nèi)部傳遞
- default:
- break;
- }
- return super.dispatchKeyEvent(event);
- }
對(duì)于游戲突然來(lái)電話我們一般采取通過(guò)PhoneStateListener類(lèi)提供的public void onCallStateChanged (int state, String incomingNumber) 回調(diào)方法可以獲取電話的狀態(tài),比如常規(guī)空閑時(shí)CALL_STATE_IDLE、來(lái)電時(shí)CALL_STATE_RINGING和 CALL_STATE_OFFHOOK 摘機(jī)通話中,有關(guān)處理的細(xì)節(jié)網(wǎng)友可以查看Android Git項(xiàng)目中的Music,在Android開(kāi)源項(xiàng)目中系統(tǒng)自帶的音樂(lè)播放器可以很好的處理,比如在通話結(jié)束后恢復(fù)音樂(lè)播放,而我們游戲需要做的就是記住 當(dāng)前的游戲狀態(tài)盡量數(shù)據(jù)持久化處理,不能因?yàn)殚L(zhǎng)時(shí)間的通話,游戲的Activity被清理了,這里我們一般通過(guò)onSaveInstanceState來(lái)保存當(dāng)前窗口的一些記錄,通過(guò)Intent標(biāo)記來(lái)讓系統(tǒng)管理好我們游戲的生命周期。