關於應用程序 - 我是一個讓我的應用程序背景模糊的壁紙。在「活動」中使用getWallpaper()
方法很容易將壁紙獲取爲可繪製的。然後,我將drawable轉換爲位圖,並使用模糊算法模糊位圖,然後將其設置爲背景圖像。整個過程需要1到5秒的時間。所以我決定把模糊的壁紙放在SD卡中,所以我需要從SD卡上獲取該圖像,然後它不會花費太多時間。所以每次用戶更換壁紙時,我都需要將壁紙模糊並保存到SD卡。爲此,我需要ACTION_WALLPAPER_CHANGED廣播接收器。壁紙更改廣播接收機android
問題 - ACTION_WALLPAPER_CHANGED意圖過濾器在API 16之前工作正常,但是來自API 16,它已過時並且不會廣播壁紙已更改的操作。
我希望每當用戶更改背景時,我需要將我的應用程序背景更改爲牆紙的模糊圖像。
如何以下不同的方法(不知道這是否會工作):誠如在文檔中,使用標記'WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER'來顯示活動UI背後的壁紙。開始使用'getWallpaper()'生成的位圖模糊處理。由於位圖模糊是一個多階段過程,因此您可以使用5秒延遲來獲得優勢....(續)。 – Vikram
(...)說,你經歷了10個階段來創建模糊的位圖。在每個階段(每〜0.5秒),使用得到的位圖來設置背景:'getWindow()。setBackgroundDrawable(new BitmapDrawable(getResources(),processedBitmap))'。它應該給你一個(平滑的)模糊效果。毋庸置疑,將5秒鐘降到不太明顯的地方會有所幫助。 – Vikram
另一種方式:當您的應用程序啓動時(第一次),使用getWallpaper()檢索位圖,模糊它,並將_original_和_blurred copy_保存到SD卡。在隨後的啓動中,使用'getWallpaper()'檢索位圖,並將它與上次啓動時使用的_original_進行比較:'bitmapFromGetWallpaper.sameAs(originalFromSDCard)'。如果它們相同,則使用SD卡中的模糊副本。否則,模糊'bitmapFromGetWallpaper'並更新SD卡上的原始和模糊副本。延遲現在只應在用戶更換壁紙時:與棄用前相同。 – Vikram