获取服务中的触摸事件(坐标,MotionEvents等)

问题描述:

如何使用public boolean onTouchEvent(MotionEvent event)从活动中获得类似触摸事件?显然,在服务中重写的方法并不是onTouchEvent,那么我该如何去做这件事呢?有没有直接的方法或可靠的解决方法?获取服务中的触摸事件(坐标,MotionEvents等)

我的想法是创建一个服务,在用户的背景中侦听某个手势,然后在该用户做出正确的手势时执行某些操作。谢谢!

编辑:这个问题的目的是为这个question的答案。

+0

我不知道100%,所以我不打算把这个答案,但一个服务的整个想法是没有任何人的互动。我也会认为任何使用手机的人中有9人不会在应用程序之外做手势,所以任何解决方案都可能会引起一个处理程序,这可能会降低整体用户体验。 – DeeV

+0

那么看看这两个应用https://market.android.com/details?id=mobi.conduction.swipepad.android&feature=search_result和https://market.android.com/details?id=com.mobilemerit .wavelauncher&特征= search_result。我试图找出如何做到这一点。 – Brian

+0

然后我希望有人回答这个,因为我也有兴趣知道。尽管我认为这些定制小部件就像那些在手机桌面上找到的小部件,但它们总是处于最佳状态。如果我没有记错的话,Wave Launcher就会在屏幕外显示,你必须将其拖拽。最下面的20个像素左右是记录它被触摸的小部件的边缘。从它的外观来看,刷卡垫是一样的。既不使用服务。 – DeeV

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

您可以使用'WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH'权限收听活动。不幸的是,你只能得到最初的触摸事件,你不能传递事件来降低活动。我很高兴你不能那样做;你能想象恶意软件如何利用这个获得用户的凭证。

+0

谢谢,但如果你提到我的问题,我有一个问题的链接,显示如何工作。我最大的问题是实际上获得移动触摸手势。像Wave Launcher和SwipePad这样的应用程序能够做到这一点,但我只是不知道如何。 – Brian