我目前正在从服务接收触摸事件。
我认为这样做的一种方法是在系统视图上使用 TouchDelegate,将其边界扩展到屏幕,然后从委托中接收触摸事件。
但是,当我使用
((Activity)ctx).getWindow().getDecorView().setTouchDelegate(new TouchDel(bounds, view));
在我的服务中,我得到一个空指针异常和强制关闭。
我目前正在从服务接收触摸事件。
我认为这样做的一种方法是在系统视图上使用 TouchDelegate,将其边界扩展到屏幕,然后从委托中接收触摸事件。
但是,当我使用
((Activity)ctx).getWindow().getDecorView().setTouchDelegate(new TouchDel(bounds, view));
在我的服务中,我得到一个空指针异常和强制关闭。
确实没有一种机制Service
可以直接注册 a 以全局接收来自系统的触摸事件。应用程序中的Activity
UI 需要将它接收到的事件交给你的Service
. 在不了解您对它们的具体用途的情况下,我只能建议一种通用方法。一种可能的方法可能是:
Activity
类中,覆盖dispatchTouchEvent()
以在每个事件发送到您的应用程序时得到通知。注意不要覆盖返回行为,这会破坏视图中的触摸处理。MotionEvent
是Parcelable
,因此您可以将每个事件打包在一个中Intent
,并将它们作为启动命令发送到您的Service
.Service
为绑定服务,以便Activity
应用程序中的每个都可以绑定到它并直接调用方法,并且每个都MotionEvent
通过这种方式。