2013-01-23 22 views
10

Ich habe ein Live-Hintergrundbild und reagieren auf SCREEN_ON Ereignis, um Änderungen auf der Leinwand anzuzeigen. Bei einigen Telefonen kann der Benutzer jedoch einen anderen Sperrbildschirm und Homescreen-Hintergrund einstellen (Touchwiz, einige Xperia-Geräte). Wenn der Benutzer ein anderes Hintergrundbild auf dem Sperrbildschirm eingestellt hat, wird mein Live-Hintergrundbild nicht angezeigt.Finden Sie heraus, ob verschiedene Home- und Lockscreen-Hintergründe eingestellt sind

Auf dem Galaxy S3 habe ich WallpaperService.Engine.isVisible() verwendet und es gibt false korrekt zurück, wenn der Benutzer ein anderes Lockscreen-Hintergrundbild festgelegt hat. Auf dem Galaxy S3 Mini funktioniert dies jedoch nicht, denn isVisible() gibt true zurück, ob mein Live Wallpaper das aktive Lockscreen-Hintergrundbild ist oder nicht.

WallpaperManager.getWallpaperInfo() oder WallpaperManager.peekDrawable() auch nicht arbeiten, weil getWallpaperInfo() mein Live-Wallpaper liefert unabhängig von den aktuellen Lockscreen Tapeten und peekDrawable() gibt einen gültigen ziehbar auch wenn mein Live-Wallpaper für beiden Bildschirme eingestellt ist. Ich habe versucht, WallpaperService.Engine.onTouchEvent(..) zu hören, aber die Berührungsereignisse vom Lockscreen gelangen nicht zu meinem Live-Hintergrundbild, weil sie vom Unlock-Schieberegler verbraucht werden.

Gibt es eine andere Möglichkeit zu erkennen, ob mein Live Wallpaper das aktuelle Lockscreen Wallpaper ist? Mir geht es gut mit Reflection-Hacks, Workarounds, alles, was mich das tun lässt.

EDIT: es funktioniert auch auf dem Galaxy Note 2, bietet nicht auf der Xperia T LT30p

+0

Haben Sie versucht, WallpaperService.Engine.onVisibilityChanged (..)? – StarPinkER

+0

Ja, 'isVisible()' gibt nur den letzten Wert zurück, der an 'onVisibilityChanged()' übergeben wurde, so dass beide an derselben Datenbank arbeiten. – Thrakbad

+0

Haben Sie das Problem gelöst? Wenn ja, würde ein wenig Code geschätzt werden –

Antwort

2

Lockscreen Tapete wird nicht von AOSP-Version von Android unterstützt. Das Feature wird vollständig von OEMs (Samsung, Sony, LG, etc.) hergestellt und somit sind APIs für den Umgang mit dem Lockscreen-Hintergrundbild bei den OEMs völlig unterschiedlich. Darüber hinaus unterstützen einige OEMs nur Live-Hintergrundbilder auf Bildschirmschirmen, während andere dies tun.

Da sie OEM APIS hinzugefügt werden, sollten Sie Reflexionen verwenden, um auf sie zuzugreifen. Es wird jedoch auf einem OEM-Gerät funktionieren, aber der gleiche Code wird nicht auf Geräten anderer OEMs funktionieren.

+0

Danke, ich weiß das alles und mir geht es im Moment mit gerätespezifischen Hacks gut. – Thrakbad