</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;
这样,自己写的安卓返回键监听就可以使用了。