在任何应用程序中检测Android触摸状态

5
有没有可能从另一个应用程序中检测到触摸事件,特别是滑动?我想要检测用户是否向左或向右滑动(即使使用两个手指-但不是必需的)。也许有一种服务或广播可以侦听。
如果无法实现,是否有一些API可以每秒轮询10次以获取触摸状态,然后我可以计算其余部分(为什么,我记得编写了一个鼠标驱动程序,在XT机器上的8086汇编语言中编写了一个TSR,并通过IN OUTs strobing COM1端口...!)
总之,任何帮助都将不胜感激。(我认为可以通过劫持主要启动器并在顶部创建透明的点击穿透活动来完成,但这非常危险!)

你想要这么做的使用情况是什么? - Rich Schuler
抱歉,错过了这个评论。我打算编写一个任务切换器。向左滑动两个手指以切换到上一个应用程序,向右滑动以切换到下一个应用程序,向下滑动以进入主页/桌面,向上滑动则可以开启或关闭静音模式 - 我会让它们可配置。在我看来,长按主页键进行“alt-tab”操作很繁琐,我想提供另一种选择。此外,所有应用程序几乎都没有使用2个手指滑动(最多只能用2个手指捏或扩展,而不是滑动)。 - Jon
1个回答

2
能否在另一个应用程序中检测触摸事件,特别是滑动?
很幸运,不行。
或者说,是否有一些API可以轮询每秒10次以获取触摸状态,并计算剩余部分?
很幸运,没有。
我认为可以通过劫持主要的启动器并在其上方设置透明的可点击活动来完成。
很幸运,不行。
您可以编写自己的主屏幕应用程序,在这种情况下,您可以跟踪自己主屏幕上的触摸事件。您也可以编写普通应用程序并跟踪自己活动中的触摸事件。

1
我知道这是可以做到的,因为它已经被实现了:http://www.appbrain.com/app/smart-taskbar-(sidebar)/com.smart.taskbar 也许他使用了本地Android代码而不是Java API,但我认为他拦截了一个中间层,从操作系统到启动器。谢谢您的回复 :) - Jon
1
@Jonathan:无论那个应用使用了什么技术,都代表着一个安全漏洞。感谢您指出这一点,这样我们就可以努力纠正这个漏洞,使得应用程序无法拦截基于手势的密码等信息。 - CommonsWare
他所做的是创建了一个小的置顶窗口。我相信这是通过拦截启动器实现的。因此,他没有读取其他应用程序的事件,而是自己应用程序的onTouch事件。我也非常注重安全,如果为了安全起见我自己不能这样做,我会很高兴。我去寻找为什么认为它是启动器,并在这里找到了Sebastian Roth的评论https://dev59.com/lVLTa4cB1Zd3GeqPYTZc。希望这有助于消除任何威胁。 - Jon
我记得那个应用程序,在它推出时我用过一段时间。我非常确定它是通过创建弹出窗口并不断强制将其置于顶部来完成的。PopupWindow 将允许您获取任何外部触摸事件并以任何您想要的方式做出反应。如果我没记错,它没有替换启动器。 - Rich Schuler
啊,好的,有道理。我认为 Toast 也可以像那样运作。从我在这里读到的内容来看,我认为我会把这个答案作为正确的答案,因为我不想让它被滥用,以防有真正的答案会让坏人想入非非! - Jon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接