@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT) {
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_UP);
simulateKey(keyEvent);
return true;
} else if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT) {
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN);
simulateKey(keyEvent);
return true;
}
}
return super.dispatchKeyEvent(event);
}
public void simulateKey(final KeyEvent keyCode) {
new Thread() {
@Override
public void run() {
try {
InputMethodManager systemService = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
systemService.dispatchKeyEventFromInputMethod(getRootView(), keyCode);
} catch (Exception e) {
}
}
}.start();
}
android 拦截按键 改变按键
最新推荐文章于 2021-10-28 13:25:34 发布
本文探讨了在Android系统中如何通过按键事件的监听与派发机制,实现DPAD_LEFT和DPAD_RIGHT按键的映射到DPAD_UP和DPAD_DOWN的功能。文中详细介绍了dispatchKeyEvent方法的覆盖,用于捕捉特定的按键事件并创建新的KeyEvent对象来模拟其他按键行为。此外,还介绍了一个在新线程中运行的simulateKey方法,用于与输入法管理器交互,从而完成按键的模拟。
1143

被折叠的 条评论
为什么被折叠?



