问题很简单。我必须模拟 dpad 事件(上、下、右、左、中心),以便在我的 GUI 中导航,该 GUI 由许多按钮和其他元素组成。使用模拟器 D-Pad,我可以在没有行代码的情况下导航抛出此 GUI。但我如何以编程方式执行此操作?
我试了很多都没有成功:
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_LEFT); View.dispatchKeyEvent(事件);
没有任何反应(焦点应该向右移动一个元素)我也阅读了很多有关 windowManager.injectKeyEvent 的内容,但没有发现任何有用的东西。
- Instrumentation 还可以帮助模拟按键事件,但更多的是用于测试,而不是用于应用程序本身。
我认为有一个解决方案,因为对讲可以模拟物理方向键(http://code.google.com/p/eyes-free/source/browse/trunk/ime/latinime/src/com/googlecode/eyesfree/inputmethod/latin/LatinIME.java)
最佳答案
给定
InputConnection ic = getCurrentInputConnection();
您可以通过模拟 DPAD 向下/向上事件在 EditText
中移动光标。 up 事件可能就足够了,但为了安全起见,我正在模拟整个事件。
左
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_LEFT));
右
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_RIGHT));
向上
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_UP));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_UP));
向下
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_DOWN));
关于Android:有没有办法模拟方向键事件(API 10)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568343/