Android 获取服务中的触摸事件(坐标、运动事件等)

Android 获取服务中的触摸事件(坐标、运动事件等),android,events,service,touch,gesture,Android,Events,Service,Touch,Gesture,如何使用public boolean onTouchEvent(MotionEvent事件)从活动中获取您可以获得的触摸事件?显然,在服务中没有一个onTouchEvent方法可以重写,那么我该怎么做呢?有没有直接的方法或可靠的解决方法 我的想法是创建一个服务,在后台监听用户做某个手势,然后在用户做了正确的手势后做一些事情。谢谢大家! 编辑:此问题旨在回答此问题。您可以创建一个0x0视图,并将其作为始终位于顶部的系统对话框添加到服务窗口中 您可以使用“WindowManager.LayoutPa

如何使用
public boolean onTouchEvent(MotionEvent事件)
从活动中获取您可以获得的触摸事件?显然,在服务中没有一个
onTouchEvent
方法可以重写,那么我该怎么做呢?有没有直接的方法或可靠的解决方法

我的想法是创建一个服务,在后台监听用户做某个手势,然后在用户做了正确的手势后做一些事情。谢谢大家!


编辑:此问题旨在回答此问题。

您可以创建一个0x0视图,并将其作为始终位于顶部的系统对话框添加到服务窗口中


您可以使用“WindowManager.LayoutParams.FLAG\u WATCH\u OUTSIDE\u TOUCH”权限收听事件。不幸的是,您只能获得初始触摸事件,并且无法将该事件传递给较低级别的活动。我很高兴你实际上不能做到这一点;你能想象恶意软件会如何利用这一点来获取用户的凭据。

我不知道100%,所以我不打算把这一点放在答案中,但服务的整体理念是没有任何人机交互。我还认为,10个使用手机的人中有9个不会在应用程序外做手势,因此任何解决方案都可能会带来一个处理器,从而降低整体用户体验。我们来看看这两个应用程序,然后看看。我想知道怎么做。然后我希望有人能回答这个问题,因为我也想知道。尽管如此,我认为这些都是定制的小部件,就像手机桌面上的小部件一样,只是它们总是在上面。如果我没记错的话,Wave Launcher在屏幕外启动,你必须把它拖上去。底部20个像素左右是记录被触摸的部件的边缘。从外观上看,滑动键盘也是这样。两人都不使用服务。不,我想你弄错了,他们都使用服务。如果运行它们并转到“设置”,则可以看到它们都作为服务运行。看看这个问题:哦,好吧。这就是我没有完全回答的问题。很高兴知道这是可能的。谢谢,但如果你提到我的问题,我有一个链接到一个问题,显示如何将工作。我最大的问题实际上是得到移动的触摸手势。Wave Launcher和SwipePad等应用程序都能做到这一点,但我不知道如何做到。