Узнайте, установлены ли разные обои для домашнего и фиксированного экрана

У меня есть текущие живые обои и реагировать на событие 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-производителей.