【发布时间】:2013-01-23 16:24:27
【问题描述】:
我有一个正在运行的动态壁纸并对SCREEN_ON 事件做出反应以在画布上显示更改。然而,在某些手机上,用户可以设置不同的锁屏和主屏幕壁纸(Touchwiz,一些 Xperia 设备)。当用户在锁屏上设置了不同的壁纸时,我的动态壁纸不会显示。
在 Galaxy S3 上,我使用了 WallpaperService.Engine.isVisible(),当用户设置了不同的锁屏壁纸时,它会正确返回 false。然而,在 Galaxy S3 Mini 上,这不起作用,因为无论我的动态壁纸是否是活动锁屏壁纸,isVisible() 都会返回 true。
WallpaperManager.getWallpaperInfo() 或WallpaperManager.peekDrawable() 也不起作用,因为getWallpaperInfo() 会返回我的动态壁纸,而不管当前的锁屏壁纸是什么,而peekDrawable() 会返回一个有效的可绘制对象,即使我的动态壁纸为两个屏幕都设置了。我尝试收听WallpaperService.Engine.onTouchEvent(..),但来自锁屏的触摸事件无法传递到我的动态壁纸,因为它们被解锁滑块消耗了。
有没有其他方法可以检测我的动态壁纸是否是当前的锁屏壁纸?我对反射黑客、解决方法以及所有能让我做到这一点的东西都很好。
编辑:它也适用于 Galaxy Note 2,bot 不适用于 Xperia T LT30p
【问题讨论】:
-
你试过 WallpaperService.Engine.onVisibilityChanged(..) 吗?
-
是的,
isVisible()只是返回传递给onVisibilityChanged()的最后一个值,所以它们都在同一个数据库上工作 -
你最终解决了这个问题吗?如果是这样,一些代码将不胜感激
-
@CigogneEveillee 不幸的是没有。我与三星支持进行了交谈,S3 Mini 的行为是固件中的一个错误,但我认为他们没有优先修复它。我就是这么走的。
标签: android live-wallpaper wallpaper