1

我目前正在从服务接收触摸事件。

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

但是,当我使用

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

在我的服务中,我得到一个空指针异常和强制关闭。

4

1 回答 1

1

确实没有一种机制Service可以直接注册 a 以全局接收来自系统的触摸事件。应用程序中的ActivityUI 需要将它接收到的事件交给你的Service. 在不了解您对它们的具体用途的情况下,我只能建议一种通用方法。一种可能的方法可能是:

  • 在您的Activity类中,覆盖dispatchTouchEvent()以在每个事件发送到您的应用程序时得到通知。注意不要覆盖返回行为,这会破坏视图中的触摸处理。
  • MotionEventParcelable,因此您可以将每个事件打包在一个中Intent,并将它们作为启动命令发送到您的Service.
  • 或者,将您实现Service为绑定服务,以便Activity应用程序中的每个都可以绑定到它并直接调用方法,并且每个都MotionEvent通过这种方式。
于 2012-07-03T22:29:21.500 回答