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

时间:2015-10-16 18:32:34

标签: android service

我不是以英语为母语的人,所以请尽量忽略语法/拼写错误,或在评论中指出它们以改进问题。

快速版:

无论设备状态如何,我如何触发与给定坐标中的屏幕触摸相关的事件?

更长的版本:我的问题:

我的用户无法触摸设备(由于cerebral palsystrokes,他们没有身体移动) 。然后,我正在创建一个监控其他类型输入的设备(例如肌肉收缩,甚至喉咙嗡嗡声等)。

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

然后Android设备必须拦截这些命令,并执行其相关命令,就像用户正常操作设备一样。

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

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

但我没有任何办法可以在我自己的内部执行应用程序(我将为用户提供自动移动“目标”以发出命令/单击)或执行{{{ 3}}或MotionEvent

虽然到目前为止我的研究没有得到回应,但我想问一下:我是否忘记了系统的任何部分或指令可以让我执行任务?

最终的结果,是服务,这项服务只是在等待一个信号,这是由接收者捕获的...这就是我被困住的地方。

感谢您的时间。

4 个答案:

答案 0 :(得分:3)

出于安全原因,您将非常难以将应用中的活动注入任何其他应用。

然而,你可能在本土,C / C ++中有更好的运气。所以希望你的传感器包装器最终会成为一个.SO lib,可以包含在其他项目中......

因为您尝试做的事情听起来像Espresso可以做的(它是一个JUnit测试套件,可以将Motion / Touch / KeyEvents注入视图中)

但是,您可以使用一些可以帮助您的附加辅助功能应用程序来编译您自己的图像。但是你的想法真的不适用于任何现成的Android设备。

答案 1 :(得分:0)

我将在这里输入一个答案,以显示可能存在类似问题的人的替代方案。

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

同样,我计划使用WebView的一个Activity和一个继续移动的游标,当收到信号时,它会使用其下的可聚焦对象的onTouchEvent(仍然在研究。)

我确实理解安全性"缺陷"从我想要做的,但即使是USB HID(通用串行总线 - 人机接口设备)也无法满足我目前的计划,因为用户的需求。

答案 2 :(得分:0)

嗯,你可以在测试时插入事件,因为Robolectric,espresso和所有其他人都运行模拟。在真实设备中执行相同操作的最佳方法是在您的内部沙盒化应用程序。这样,您的应用程序将充当其他人的操作系统。但这样做成本很高,性能也不会很好。

另一种选择是做同样的Xposed。 Xposed截取系统调用以允许在不闪烁任何内容的情况下修改操作系统,因此您可以使用相同的挂钩(或Xposed本身)来添加您的聆听功能。这将需要root,但听起来比沙盒化设备中的每个应用程序或构建自定义ROM要容易得多。

答案 3 :(得分:0)

Have you looked into Android's accessibility features for developers? http://developer.android.com/guide/topics/ui/accessibility/services.html

Also keep in mind that you can use Android as a USB host to external devices, such as homemade trackpads, joysticks, etc (with a bit of hacking probably). http://developer.android.com/guide/topics/connectivity/usb/host.html

As for what might be available on the OS already, take a look at the Accessibility menu in the Settings. Hope this helps!