问题很简单。我必须模拟dpad事件(上、下、右、左、中),以便在我的GUI中导航,其中包括许多按钮和其他元素。使用模拟器D,我可以不用一行代码导航这个GUI。但是,我如何以编程的方式做到这一点呢?
我尝试了很多,但没有成功:
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_LEFT); View.dispatchKeyEvent(event); Nothing nothing (焦点应该向右移动)也可以帮助模拟关键事件,但更多的是用于测试,而不是用于应用程序本身。
我认为有一个解决方案,因为对讲机可以模拟物理D-Pad (http://code.google.com/p/eyes-free/source/browse/trunk/ime/latinime/src/com/googlecode/eyesfree/inputmethod/latin/LatinIME.java)
发布于 2018-06-09 07:50:26
给定的
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));发布于 2011-12-21 17:56:07
我找到了灵巧的解决方案(例如,go down):
bic=new BaseInputConnection(this.getWindow().getDecorView(),false);
KeyEvent event2 = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN,0, KeyEvent.META_SYM_ON, 0, 0, KeyEvent.FLAG_VIRTUAL_HARD_KEY);
bic.sendKeyEvent(event2);这就是在您选择的方向上查找下一个元素的内部算法
发布于 2013-08-07 05:50:53
要达到你的目标,你有两种方法:
第一,
Instrumentation inst=new Instrumentation();
inst.sendKeyDownUpSync(int keycode);先决条件:在同一过程中。
其次,例如,wo想要模拟KeyEvent.KEYCODE_DPAD_UP。
getCurrentInputConnection().sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_UP));先决条件:必须绑定inputmethd
https://stackoverflow.com/questions/8568343
复制相似问题