О приложении - я делаю фон своего приложения размытыми обоями. Легко получить обои как доступные для рисования, используя метод getWallpaper()
в действии. Затем я конвертирую drawable в растровое изображение и использую алгоритм размытия для размытия растрового изображения, а затем устанавливаю его в качестве фонового изображения. Весь этот процесс занимает некоторое время от 1 до 5 секунд. Поэтому я решил поместить размытые обои на SD-карту, поэтому мне нужно просто получить это изображение с SD-карты, тогда это не займет так много времени. Поэтому каждый раз, когда пользователь меняет обои, мне нужно сделать эти обои размытыми и сохранить их на SD-карту. Для этого мне нужен широковещательный приемник ACTION_WALLPAPER_CHANGED.
Проблема: ACTION_WALLPAPER_CHANGED фильтр намерений работает нормально до API 16, но из API 16 он устарел и не транслирует действие смены обоев.
Я хочу, чтобы всякий раз, когда пользователь меняет фон, мне нужно, чтобы фон моего приложения менялся на это размытое изображение обоев.
WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER
, чтобы показать обои за пользовательским интерфейсом вашей активности. Запустите процесс размытия растрового изображения, сгенерированного с помощьюgetWallpaper()
. Поскольку размытие растрового изображения — это многоэтапный процесс, вы можете использовать 5-секундную задержку в своих интересах.... (продолжение). - person Vikram   schedule 16.11.2013getWindow().setBackgroundDrawable(new BitmapDrawable(getResources(), processedBitmap))
. Это должно дать вам (гладкий?) эффект размытия. Излишне говорить, что сокращение 5 секунд до чего-то менее заметного поможет. - person Vikram   schedule 16.11.2013getWallpaper()
, размойте его и сохраните оригинал и размытую копию на SD-карту. При последующих запусках извлекайте растровое изображение, используяgetWallpaper()
, и сравнивайте его с оригиналом, который вы сохранили при последнем запуске, используя:bitmapFromGetWallpaper.sameAs(originalFromSDCard)
. Если они совпадают, используйте размытую копию с SD-карты. В противном случае размойтеbitmapFromGetWallpaper
и обновите оригинал и размытую копию на SD-карте. Теперь задержка должна быть только тогда, когда пользователь меняет обои: так же, как до устаревания. - person Vikram   schedule 16.11.2013