获取服务中的触摸事件(坐标,MotionEvents等)
问题描述:
如何使用public boolean onTouchEvent(MotionEvent event)
从活动中获得类似触摸事件?显然,在服务中重写的方法并不是onTouchEvent
,那么我该如何去做这件事呢?有没有直接的方法或可靠的解决方法?获取服务中的触摸事件(坐标,MotionEvents等)
我的想法是创建一个服务,在用户的背景中侦听某个手势,然后在该用户做出正确的手势时执行某些操作。谢谢!
编辑:这个问题的目的是为这个question的答案。
答
您可以创建一个0x0视图并将其作为一个始终位于顶层的系统对话框添加到服务窗口。
您可以使用'WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH'
权限收听活动。不幸的是,你只能得到最初的触摸事件,你不能传递事件来降低活动。我很高兴你不能那样做;你能想象恶意软件如何利用这个获得用户的凭证。
+0
谢谢,但如果你提到我的问题,我有一个问题的链接,显示如何工作。我最大的问题是实际上获得移动触摸手势。像Wave Launcher和SwipePad这样的应用程序能够做到这一点,但我只是不知道如何。 – Brian
我不知道100%,所以我不打算把这个答案,但一个服务的整个想法是没有任何人的互动。我也会认为任何使用手机的人中有9人不会在应用程序之外做手势,所以任何解决方案都可能会引起一个处理程序,这可能会降低整体用户体验。 – DeeV
那么看看这两个应用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
然后我希望有人回答这个,因为我也有兴趣知道。尽管我认为这些定制小部件就像那些在手机桌面上找到的小部件,但它们总是处于最佳状态。如果我没有记错的话,Wave Launcher就会在屏幕外显示,你必须将其拖拽。最下面的20个像素左右是记录它被触摸的小部件的边缘。从它的外观来看,刷卡垫是一样的。既不使用服务。 – DeeV