我有一个运行中的动态壁纸,会根据
在Galaxy S3上,我使用
有没有其他方法来检测我的动态壁纸是否为当前锁屏壁纸?我可以接受反射-hacks、变通方法,任何能让我做到这一点的方法。
编辑:在Galaxy Note 2上也可以正常工作,但在Xperia T LT30p上不行。
SCREEN_ON
事件在画布上显示变化。但是,在某些手机上,用户可以设置不同的锁屏和主屏幕壁纸(Touchwiz、一些Xperia设备)。当用户在锁屏界面设置了不同的壁纸时,我的动态壁纸就不能显示了。在Galaxy S3上,我使用
WallpaperService.Engine.isVisible()
,当用户设置了不同的锁屏壁纸时,它能正确地返回false
。然而,在Galaxy S3 Mini上,这个方法不起作用,因为isVisible()
无论我的动态壁纸是否为当前锁屏壁纸,它都会返回true
。
WallpaperManager.getWallpaperInfo()
或WallpaperManager.peekDrawable()
也不起作用,因为getWallpaperInfo()
无论当前锁屏壁纸是什么,它都会返回我的动态壁纸,而peekDrawable()
会返回一个有效的Drawable对象,即使我的动态壁纸被设置为两个屏幕的壁纸。我尝试监听WallpaperService.Engine.onTouchEvent(..)
,但是由于解锁滑块消耗了锁屏界面的触摸事件,所以来自锁屏界面的触摸事件无法传递到我的动态壁纸。有没有其他方法来检测我的动态壁纸是否为当前锁屏壁纸?我可以接受反射-hacks、变通方法,任何能让我做到这一点的方法。
编辑:在Galaxy Note 2上也可以正常工作,但在Xperia T LT30p上不行。
isVisible()
只返回传递给onVisibilityChanged()
的最后一个值,因此它们都使用相同的数据。 - Thrakbad