我目前正致力于接收服务中的触摸事件。
我认为这样做的一种方法是在系统视图上使用TouchDelegate,将其边界扩展到屏幕,然后从代理中接收触摸事件。
然而,当我使用
时((Activity)ctx).getWindow().getDecorView().setTouchDelegate(new TouchDel(bounds, view));
从我的服务中我得到一个nullpointerexception和一个力量关闭。
答案 0 :(得分:1)
确实没有机制可以直接注册Service
来全局接收来自系统的触摸事件。您的应用中的Activity
用户界面需要将收到的事件交给Service
。如果不了解您对它们的具体用途,我只能建议一种通用的方法。一种可能的方法可能是:
Activity
班级中,覆盖dispatchTouchEvent()
,以便在每个事件发送到您的应用程序时收到通知。注意不要覆盖返回行为,这会破坏视图中的触摸处理。MotionEvent
为Parcelable
,因此您可以将每个事件打包在Intent
中,然后将其作为开始命令发送到Service
。Service
实现为绑定服务,以便应用程序中的每个Activity
都可以绑定到它并直接调用方法,并使每个MotionEvent
都通过这种方式。