【问题标题】:Can I programatically generate a touch event in Android from background app on keypress?我可以通过按键在后台应用程序中以编程方式在 Android 中生成触摸事件吗?
【发布时间】:2015-09-24 20:00:10
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java android events touch


    【解决方案1】:

    应用程序不能生成任意触摸事件,除非在 root 设备上使用超级用户权限。欢迎您使用无障碍框架创建AccessibilityService,但其输入选项非常有限。

    【讨论】:

      【解决方案2】:

      我设法按照 CommonsWare 的建议将此应用程序编写为可访问性服务。像魅力一样工作。

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

      这篇博文对我帮助很大:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        • 2014-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多