如何避免让动态壁纸响应Lollipop上最近任务的触摸事件

时间:2015-01-10 00:29:24

标签: android android-5.0-lollipop ontouchevent live-wallpaper android-recents

背景

我制作了一个可以处理触摸事件的动态壁纸。

问题

在某些情况下,我不希望它处理触摸(或收听其他事件)。这有助于防止奇怪的绘图并节省电池电量。

例如,在Lollipop上,我注意到当你显示最近的任务屏幕时,动态壁纸仍然有焦点。这在前Lollipop上没有发生,因为最近的任务屏幕占据了屏幕上的所有内容。

另一个例子是壁纸选择器,即使您只显示所有动态壁纸的缩略图,您仍然会显示自己的并处理触摸事件,就像用户在启动器上一样。

但是,当您显示通知栏或启动器的菜单时(通过按菜单按钮),动态壁纸将不会获得任何触摸事件。

您可以在其他动态壁纸上看到这些问题,例如“Magic fluid free”。

同样,问题是在某些情况下,没有办法禁用触摸事件,因为你无法知道它们何时发生(最近的任务和壁纸选择器就是这样的例子)。

我尝试了什么

没有太多事要做。 Engine类的所有方法都无法找到我写过的场景图的状态:

onOffsetsChanged,onVisibilityChanged,onSurfaceChanged,onSurfaceRedrawNeeded,onOffsetsChanged

问题

有没有办法克服这个问题? 如果动态壁纸没有聚焦,停止收听事件?

1 个答案:

答案 0 :(得分:0)

如何设置

    setTouchEventsEnabled(false);

在您的WallpaperService Engine类中,当您不希望处理触摸时,并在您执行时将其设置为true。