</pre>最近一不小心就整天在搞android了。。。。。<p></p><p>然後各種磕磕絆絆的,</p><p>上午把項目捕捉到安卓手機的返回鍵事件給實現了下,具體如下:</p><p>安卓手機項目的退出有兩種方法:</p><p>1.雙擊返回鍵退出:</p><p></p><pre name="code" class="java">if (keyCode == KeyEvent.KEYCODE_BACK) {
if ((System.currentTimeMillis() - mkeyTime) > 2000) {
mkeyTime = System.currentTimeMillis();
Toast.makeText(this, "再按一次退出遊戲", Toast.LENGTH_LONG).show();
} else {
finish();
System.exit(0);
}
return false;
}
return super.onKeyDown(keyCode, event);
}
2:通過彈出對話框選擇退出:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog();
return true;
}
return true;
}
protected void dialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("確定要退出嗎?");
builder.setTitle("提示");
builder.setPositiveButton("確認",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
//AccoutList.this.finish();
//System.exit(1);
android.os.Process.killProcess(android.os.Process.myPid());
}
});
builder.setNegativeButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
兩種方法任選一個即可,把它加入到這個類中:
,
但是,僅僅做這些,會發現返回鍵還是不可用!
通過查找官方api,會發現
public boolean onKeyDown(int keyCode, KeyEvent event)
這個函數會在用戶按下某個按鍵時候調用,但前提是這個事件沒有被監聽處理!!
因此,返回鍵不可用,是因爲在cocosdx中,已經對安卓進行了返回鍵的監聽處理。
在eclipse中,打開:cocos2d/cocos/platform/android/java/src/org/cpcps2dx/lib/Cocos2dxGLSurfaceView.java
找到這個函數:
public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent) {
switch (pKeyCode) {
case KeyEvent.KEYCODE_BACK:
Cocos2dxVideoHelper.mVideoHandler.sendEmptyMessage(Cocos2dxVideoHelper.KeyEventBack);
case KeyEvent.KEYCODE_MENU:
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_ENTER:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
case KeyEvent.KEYCODE_DPAD_CENTER:
this.queueEvent(new Runnable() {
@Override
public void run() {
Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCode);
}
});
return true;
default:
return super.onKeyDown(pKeyCode, pKeyEvent);
}
}
把
case KeyEvent.KEYCODE_BACK:
Cocos2dxVideoHelper.mVideoHandler.sendEmptyMessage(Cocos2dxVideoHelper.KeyEventBack);
修改爲:
case KeyEvent.KEYCODE_BACK:
return false;
這樣,自己寫的安卓返回鍵監聽就可以使用了。