【问题标题】:Geting touch events (coordinates, MotionEvents, ect.) in a service在服务中获取触摸事件(坐标、运动事件等)
【发布时间】:2011-10-05 22:49:00
【问题描述】:

如何使用public boolean onTouchEvent(MotionEvent event) 从 Activity 中获取触摸事件?在服务中显然没有 onTouchEvent 方法可以覆盖,那么我该怎么做呢?是否有直接的方法或可靠的解决方法?

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

编辑:这个问题是为了回答这个question

【问题讨论】:

  • 我不知道 100%,所以我不会把它放在答案中,但服务的整个想法是没有任何人机交互。我还认为,十分之九的人会使用手机不会在应用程序之外做手势,所以任何解决方案都可能会带来一个可能会降低整体用户体验的处理程序。
  • 看看market.android.com/…market.android.com/… 这两个应用程序。我正在尝试弄清楚如何做到这一点。
  • 那么我希望有人回答这个问题,因为我也有兴趣知道。虽然,我认为这些是自定义小部件,就像手机桌面上的小部件一样,只是它们始终位于顶部。如果我没记错的话,Wave Launcher 会在屏幕外启动,您必须将其向上拖动。底部 20 像素左右是记录它被触摸的小部件的边缘。从外观上看,滑动板是相同的方式。既不使用服务。
  • 不,我认为你错了,他们都使用服务。如果您运行它们并转到设置,您可以看到它们都作为服务运行。看看这个问题:stackoverflow.com/questions/4481226/…
  • 哦,那好吧。那是我没有完全回答的问题。很高兴知道这是可能的。

标签: android events service touch gesture


【解决方案1】:

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

您可以使用'WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH' 权限收听事件。不幸的是,您只能获得初始触摸事件,而不能将事件传递给较低的活动。我很高兴您实际上不能这样做;你能想象恶意软件如何利用它来获取用户的凭据。

【讨论】:

  • 谢谢,但如果你提到我的问题,我有一个问题的链接,它显示了它是如何工作的。我最大的问题实际上是获得移动的触摸手势。 Wave Launcher 和 SwipePad 之类的应用可以做到这一点,但我就是不知道怎么做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多