首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:有办法模拟D事件(API 10)吗?

Android:有办法模拟D事件(API 10)吗?
EN

Stack Overflow用户
提问于 2011-12-19 22:20:11
回答 4查看 3.9K关注 0票数 7

问题很简单。我必须模拟dpad事件(上、下、右、左、中),以便在我的GUI中导航,其中包括许多按钮和其他元素。使用模拟器D,我可以不用一行代码导航这个GUI。但是,我如何以编程的方式做到这一点呢?

我尝试了很多,但没有成功:

  • KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_LEFT); View.dispatchKeyEvent(event); Nothing nothing (焦点应该向右移动)
  • --我也读过很多关于windowManager.injectKeyEvent的文章,但是没有发现任何有用的东西。

也可以帮助模拟关键事件,但更多的是用于测试,而不是用于应用程序本身。

我认为有一个解决方案,因为对讲机可以模拟物理D-Pad (http://code.google.com/p/eyes-free/source/browse/trunk/ime/latinime/src/com/googlecode/eyesfree/inputmethod/latin/LatinIME.java)

EN

回答 4

Stack Overflow用户

发布于 2018-06-09 07:50:26

给定的

代码语言:javascript
复制
InputConnection ic = getCurrentInputConnection();

您可以通过模拟DPAD向下/向上事件在EditText中移动游标。up事件可能就足够了,但为了安全起见,我正在模拟整个事件。

左边

代码语言:javascript
复制
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_LEFT));

正确的

代码语言:javascript
复制
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_RIGHT));

向上

代码语言:javascript
复制
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_UP));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_UP));

向下

代码语言:javascript
复制
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN));
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_DOWN));
票数 3
EN

Stack Overflow用户

发布于 2011-12-21 17:56:07

我找到了灵巧的解决方案(例如,go down):

代码语言:javascript
复制
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);

这就是在您选择的方向上查找下一个元素的内部算法

票数 2
EN

Stack Overflow用户

发布于 2013-08-07 05:50:53

要达到你的目标,你有两种方法:

第一,

代码语言:javascript
复制
Instrumentation inst=new Instrumentation();
inst.sendKeyDownUpSync(int  keycode);

先决条件:在同一过程中。

其次,例如,wo想要模拟KeyEvent.KEYCODE_DPAD_UP。

代码语言:javascript
复制
getCurrentInputConnection().sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_UP));

先决条件:必须绑定inputmethd

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8568343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档