Android物理按键事件

Android常用的物理按键及其触发事件

物理键

  1. KEYCODE_POWER: 电源键
  2. KEYCODE_MENU: 菜单键
  3. KEYCODE_BACK: 后退键
  4. KEYCODE_HOME: Home键
  5. KEYCODE_CAMERA: 相机键
  6. KEYCODE_SEARCH: 查找键
  7. KEYCODE_VOLUME_UP: 音量键+
  8. KEYCODE_VOLUME_DOWN: 音量键-
  9. KEYCODE_VOLUME_MUTE: 静音

方向键

  1. KEYCODE_DPAD_CENTER
  2. KEYCODE_DPAD_UP
  3. KEYCODE_DPAD_DOWN
  4. KEYCODE_DPAD_LEFT
  5. KEYCODE_DPAD_RIGHT

键盘键

  1. KEYCODE_0 ~ KEYCODE_9: 数字0~9
  2. KEYCODE_A ~ KEYCODE_Z: 字母A~Z

提供的回调方法有
onKeyUp() 按键被按下,松开后触发
OnKeyDown() 按键被按下触发
onKeyLongPress() 按键被长按触发

让系统调用onKeyLongPress方法,必须要在onKeyDown方法中调用event.startTracking()方法并返回true才可以。

例如这个例子,按下两次返回键退出页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    @Override
// 重写onKeyDown方法可以拦截系统默认的处理
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 后退键将不再响应系统默认事件
if (keyCode == KeyEvent.KEYCODE_BACK) {
exitActivity();
return true;
}
return super.onKeyDown(keyCode, event);
}

private void exitActivity() {
// System.currentTimeMillis()相当于new Date()的毫秒数
if (System.currentTimeMillis() - exitTime > 2000){
Toast.makeText(this,"再次点击返回键退出",Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
}
else {
finish();
}
}