我可以通过按键后台应用程序以编程方式在Android中生成触摸事件吗?

时间:2015-09-24 20:00:11

标签: java android events touch

我想要做的是当我按某个键盘按钮或组合时,应该用给定的屏幕坐标触发触摸事件。

我想使用连接到Android设备的物理键盘。我想编写在后台连续运行的代码并侦听特定组合,然后在按下时,会创建具有特定坐标的触摸事件。触摸事件应该由前景中的任何应用程序接收。

更具体地说,当我按下Enter但在文本框中插入换行符时,我发现Facebook Messenger应用程序不发送消息很烦人。或者至少可以选择启用或禁用此功能,例如应用程序的Windows Phone版本。但它没有这个选项,当我在物理键盘上输入我的消息并且必须触摸手机本身上的小按钮,从键盘上移动我的手,或者我必须使用Tab键导航来选择它时,它会让我发疯按钮控件然后按enter键。

此应用程序主要供个人使用,我问这个问题,以确保甚至可以编写此类代码并提高我的知识。

2 个答案:

答案 0 :(得分:1)

除非在root设备上使用超级用户权限,否则应用无法生成任意触摸事件。欢迎您使用辅助功能框架创建AccessibilityService,但其输入选项非常有限。

答案 1 :(得分:0)

我设法将此应用程序编写为 CommonsWare 建议的辅助功能服务。像魅力一样。

如果有人感兴趣,是的,它只能在root设备上使用。您可以使用root shell中的sendevent命令模拟触摸事件(我使用 Process DataOutputStream 类)。首先,您需要确定当前设备上哪个是触摸屏的设备标识符,最终我只需要为一个触摸事件发出8个命令。

这篇博文给了我很多帮助:

http://ktnr74.blogspot.hu/2013/06/emulating-touchscreen-interaction-with.html