从服务接收触摸事件

时间:2012-07-03 21:38:15

标签: android service touch-event

我目前正致力于接收服务中的触摸事件。

我认为这样做的一种方法是在系统视图上使用TouchDelegate,将其边界扩展到屏幕,然后从代理中接收触摸事件。

然而,当我使用

((Activity)ctx).getWindow().getDecorView().setTouchDelegate(new TouchDel(bounds, view));

从我的服务中我得到一个nullpointerexception和一个力量关闭。

1 个答案:

答案 0 :(得分:1)

确实没有机制可以直接注册Service来全局接收来自系统的触摸事件。您的应用中的Activity用户界面需要将收到的事件交给Service。如果不了解您对它们的具体用途,我只能建议一种通用的方法。一种可能的方法可能是:

  • Activity班级中,覆盖dispatchTouchEvent(),以便在每个事件发送到您的应用程序时收到通知。注意不要覆盖返回行为,这会破坏视图中的触摸处理。
  • MotionEventParcelable,因此您可以将每个事件打包在Intent中,然后将其作为开始命令发送到Service
  • 或者,将Service实现为绑定服务,以便应用程序中的每个Activity都可以绑定到它并直接调用方法,并使每个MotionEvent都通过这种方式。