Mam działającą tapetę na żywo i reaguję na zdarzenie SCREEN_ON
, aby wyświetlić zmiany na kanwie. Jednak w niektórych telefonach użytkownik może ustawić inną tapetę blokady i ekranu głównego (Touchwiz, niektóre urządzenia Xperia). Gdy użytkownik ustawi inną tapetę na ekranie blokady, moja animowana tapeta nie zostanie wyświetlona.Sprawdź, czy są ustawione inne tapety do tapet i blokad.
W Galaxy S3 użyłem WallpaperService.Engine.isVisible()
i poprawnie zwróciłem false
, gdy użytkownik ustawił inną tapetę blokady. Na Galaxy S3 Mini to jednak nie działa, ponieważ isVisible()
zwraca true
, czy moja tapeta na żywo jest aktywną tapetą lockscreen.
WallpaperManager.getWallpaperInfo()
lub WallpaperManager.peekDrawable()
nie działa albo, ponieważ getWallpaperInfo()
zwraca moje żywo tapety niezależnie od aktualnego lockscreen tapety i peekDrawable()
zwraca poprawny rozciągliwej nawet jeśli moje tapety na żywo jest ustawiony na obu ekranach. Próbowałem odsłuchać WallpaperService.Engine.onTouchEvent(..)
, ale wydarzenia dotykowe z ekranu blokady nie przenikają do mojej tapety na żywo, ponieważ są pochłaniane przez suwak odblokowujący.
Czy istnieje inny sposób wykrywania, czy moja tapeta na żywo jest tapetą ekranu blokady? Nie mam nic przeciwko refleksyjnym hackom, obejściom, wszystkim, co pozwoli mi to zrobić.
EDIT: działa również na Galaxy Note 2, bot nie na Xperia T LT30p
Czy próbowałeś WallpaperService.Engine.onVisibilityChanged (..)? – StarPinkER
Tak, 'isVisible()' właśnie zwraca ostatnią wartość przekazaną do 'onVisibilityChanged()', więc obaj pracują na tej samej bazie danych – Thrakbad
Czy w końcu rozwiązałeś to? Jeśli tak, niektóre kod byłoby bardzo cenione –