Android服务监听触摸事件

Android service listen to touch event

我想在 Android 5.1 应用程序中收集触摸输入(位置和压力​​)。这可以通过绑定到特定视图的 onTouchListener 来实现。但我想在服务中收集触摸事件(运行 在后台)而不是绑定到特定视图。

是否可以通过某种方式在服务中收集触摸事件?

基本上 - 是的。您可以将任何 View 传递到您的服务中并在那里添加触摸事件侦听器。但是这样你可能会面临严重的内存泄漏问题,因为使用 View 你将通过 FragmentActivity Context。也许它可以与一些 ServiceConnection 一起工作并管理 onCreate/onDestroyactivity/fragment 生命周期)。

但是!真正更好的方法是覆盖 Activity,然后从中继承所有其他活动。在那里你会稍微减少内存泄漏的机会。您可以尝试将 onTouchEvent 侦听器添加到 activity 装饰视图并接收整个屏幕的触摸事件。或者甚至在所有视图前面添加一些不可见的视图并在那里跟踪触摸(我不确定 DecorView 变体是否有效)。然后将触摸传递到任何你想要的地方。