Android:有没有办法模拟方向键事件(API 10)?

标签 android simulation keyevent d-pad

问题很简单。我必须模拟 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/

相关文章:

java - 在 Java 中模拟 JUnit 测试

delphi - 模拟旋转球体由于摩擦和重力而减速的公式的简单代码示例?

javascript - 在 geckoWebBrowser 中模拟 HTML 文本框中的击键

python - numpy 对象数组

java - Android - 获取键盘按键

java - jbutton 上的 keyListener 不工作

android - 如何使用单个导航文件将 Drawer Navigator 包含在 Tab Navigator 中的 Stack Navigator 中

Android 2.2 与更高版本不处理连接管理器相同

java - 访问远程服务功能

android - 火力地堡不工作。安卓