Android组合按键功能定制(Framework)
涉及文件
alps/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
修改位置
interceptKeyBeforeQueueing函数中
示例代码
isF1Pressed为自定义变量
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (event.getKeyCode() == KeyEvent.KEYCODE_F1) {
isF1Pressed = true;
} else if (isF1Pressed) {
int currentBLLevel = adioGetBLLevel();
int keyValue = event.getKeyCode();
if (keyValue == KeyEvent.KEYCODE_DPAD_UP) {
//F1 和 上键组合
} else if (keyValue == KeyEvent.KEYCODE_DPAD_DOWN) {
//F1 和 下键组合
}
}
} else if (event.getAction() == KeyEvent.ACTION_UP) {
if (event.getKeyCode() == KeyEvent.KEYCODE_F1) {
isF1Pressed = false;
}
}
追加:
可以在组合键处,利用Instrumentation模拟按键发放,可自定义向应用层发送按键。
萌新,欢迎讨论。