Java 我可以通过键盘上的后台应用程序在Android中编程生成触摸事件吗?

Java 我可以通过键盘上的后台应用程序在Android中编程生成触摸事件吗?,java,android,events,touch,Java,Android,Events,Touch,我想做的是,当我按下某个键盘按钮或组合键时,应该在给定的屏幕坐标下触发一个触摸事件 我想使用连接到Android设备的物理键盘。我想写一段代码,它在后台连续运行,监听特定的组合,然后当按下时,就会创建一个带有特定坐标的触摸事件。触摸事件应该由前台的任何应用程序接收 更具体地说,我发现Facebook Messenger应用程序在我按enter键时不发送消息,而是在文本框中插入一个换行符,这让我很恼火。或者至少有一个选项可以启用或禁用此功能,比如Windows Phone版本的应用程序。但它没有这

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

我想使用连接到Android设备的物理键盘。我想写一段代码,它在后台连续运行,监听特定的组合,然后当按下时,就会创建一个带有特定坐标的触摸事件。触摸事件应该由前台的任何应用程序接收

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


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

应用程序不能生成任意触摸事件,除非可能在根设备上使用超级用户权限。欢迎您使用可访问性框架创建一个
可访问性服务
,但是它的输入选项非常有限。

我按照建议将此应用程序作为可访问性服务编写。工作起来很有魅力

如果有人感兴趣,是的,这只可能在根设备上实现。您可以在根shell中使用
sendevent
命令模拟触摸事件(我正在为此使用进程和DataOutputStream类)。首先,您需要确定当前设备上触摸屏的设备标识符,最后,我需要为一个触摸事件发出8个命令

这篇博文对我帮助很大: