Узнайте, установлены ли разные обои для домашнего и фиксированного экрана
У меня есть текущие живые обои и реагировать на событие SCREEN_ON
, чтобы отображать изменения на холсте. Однако на некоторых телефонах пользователь может установить различные блокировки экрана и обои рабочего стола (Touchwiz, некоторые устройства Xperia). Когда пользователь установил разные обои на экране блокировки, мои живые обои не отображаются.
В Galaxy S3 я использовал WallpaperService.Engine.isVisible()
, и он правильно возвращает false
, когда пользователь установил разные обои для экрана. Однако на Galaxy S3 Mini это не работает, потому что isVisible()
возвращает true
, являются ли мои живые обои активными обоими экранами экрана.
WallpaperManager.getWallpaperInfo()
или WallpaperManager.peekDrawable()
тоже не работают, потому что getWallpaperInfo()
возвращает мои живые обои, независимо от текущих обоев экрана, и peekDrawable()
возвращает допустимый чертеж, даже если мои живые обои установлены для обоих экранов. Я пробовал слушать WallpaperService.Engine.onTouchEvent(..)
, но события касания с экрана блокировки не доходят до моих живых обоев, потому что они потребляются слайдером разблокировки.
Есть ли другой способ определить, являются ли мои живые обои текущими обоими экранами экрана? Я в порядке с размышлениями, обходными решениями, всем, что позволит мне это сделать.
EDIT: он также работает на Galaxy Note 2, бот не на Xperia T LT30p
Ответы
Ответ 1
Обои для Lockscreen не поддерживаются версией Android AOSP. Эта особенность полностью реализована OEM-производителями (Samsung, Sony, LG и т.д.), И поэтому API для работы с обоими затворами полностью отличаются между OEM-производителями. Кроме того, некоторые OEM-производители только не поддерживают живые обои на сетчатых экранах, а другие делают.
Так как они добавлены OEM APIS, вы должны использовать отражения для доступа к ним. Однако он будет работать на одном OEM-устройстве, но тот же код не будет работать на других устройствах OEM-производителей.