如何以编程方式在Android上发出点击事件

我不是一个说英语的母语人士,所以请尽量忽略语法/拼写错误,或者在评论中指出这些错误来改善问题。

快速版本:

无论设备状态如何 ,我怎样才能在给定的坐标中触发与屏幕触摸有关的事件?

更长的版本:我的问题:

我有用户无法触摸设备(由于脑瘫或脑卒中 ,他们缺乏身体运动)。 然后,我正在创build一个监视其他typesinput(例如肌肉收缩,甚至是喉咙嗡嗡声等)的设备。

重要的部分是我有一个电路,发出一个单一的命令。

这些命令必须被Android设备拦截,并执行相关的命令,就好像用户正在操作设备一样。

请注意以下几点:我将不会有任何运行的活动。 应用程序的目的是将传感器与设备连接,因此我无法使用View元素。

我想我想要执行的是为Android创build一个mouse-like元素。

但是我没有任何方法可以在我自己内部执行一个应用程序(在这里我会提供一个自动移动的“目标”给用户发出命令/点击),或者执行一个MotionEvent或KeyEvent的方法 。

虽然迄今为止我的研究没有得到任何答复,但我想问一下:我忘记了系统的任何部分或指令,可以让我执行我的任务吗?

最后的结果是一个Service,这个服务只是在等待一个信号,这个被Receiver捕获…这就是我被卡住的地方。

感谢您的时间。

Solutions Collecting From Web of "如何以编程方式在Android上发出点击事件"

由于安全原因,您将很难从应用程序中将事件注入任何其他应用程序。

但是,你可能在本土C / C ++中运气更好。 所以希望你的传感器包装将最终作为一个.SO lib可以包含在其他项目中…

因为你试图做的东西听起来像Espresso可以做的(这是一个JUnittesting套件, 可以将Motion / Touch / KeyEvents注入到视图中)

但是,您可以使用一些添加的辅助function应用程序来编译自己的图像,这些应用程序可能会将您带到那里 但是你的想法实际上并不适用于任何现成的android设备。

我将在这里input一个答案,以显示可能有类似问题的人的替代scheme。

从开始,设备是一个独立的对象,发出GET请求到Android设备的内部networking服务器(我今天使用PAW服务器 ,2015年10月26日),我可以发出一些简单的命令。

同样,我正计划使用WebView和一个不断移动的游标来访问Activity,并且在接收到信号时,它将使用它下面的可聚焦对象的onTouchEvent(仍在学习)。

我明白我所要做的安全“缺陷”,但即使是USB HID(通用串行总线 – 人机界面设备)也不会因为用户的需要而工作在我目前的计划中。

那么,您可以在testing时插入事件,因为Robolectric,espresso和所有其他人都在运行模拟。 在真实设备中执行相同操作的最佳方式是在您的内部对沙盒进行沙盒处理。 这样,你的应用程序将作为其他人的操作系统。 但是,这将是昂贵的,performance不好。

另一种select是做同样的Xposed。 Xposed拦截系统调用,以允许修改操作系统而不闪烁任何东西,所以也许你可以使用相同的钩子(或Xposed本身)来添加你的监听function。 这将需要root权限,但比沙箱中的每个应用程序或构build自定义ROM听起来要容易得多。

你有没有看过Android的开发人员的辅助function? http://developer.android.com/guide/topics/ui/accessibility/services.html

另外请记住,您可以使用Android作为USB主机到外部设备,例如自制的触控板,游戏杆等(可能有点黑客)。 http://developer.android.com/guide/topics/connectivity/usb/host.html

至于操作系统上可用的function,请查看“设置”中的“辅助function”菜单。 希望这可以帮助!