2013-11-09 76 views
1

關於應用程序 - 我是一個讓我的應用程序背景模糊的壁紙。在「活動」中使用getWallpaper()方法很容易將壁紙獲取爲可繪製的。然後,我將drawable轉換爲位圖,並使用模糊算法模糊位圖,然後將其設置爲背景圖像。整個過程需要1到5秒的時間。所以我決定把模糊的壁紙放在SD卡中,所以我需要從SD卡上獲取該圖像,然後它不會花費太多時間。所以每次用戶更換壁紙時,我都需要將壁紙模糊並保存到SD卡。爲此,我需要ACTION_WALLPAPER_CHANGED廣播接收器。壁紙更改廣播接收機android

問題 - ACTION_WALLPAPER_CHANGED意圖過濾器在API 16之前工作正常,但是來自API 16,它已過時並且不會廣播壁紙已更改的操作。

我希望每當用戶更改背景時,我需要將我的應用程序背景更改爲牆紙的模糊圖像。

+1

如何以下不同的方法(不知道這是否會工作):誠如在文檔中,使用標記'WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER'來顯示活動UI背後的壁紙。開始使用'getWallpaper()'生成的位圖模糊處理。由於位圖模糊是一個多階段過程,因此您可以使用5秒延遲來獲得優勢....(續)。 – Vikram

+1

(...)說,你經歷了10個階段來創建模糊的位圖。在每個階段(每〜0.5秒),使用得到的位圖來設置背景:'getWindow()。setBackgroundDrawable(new BitmapDrawable(getResources(),processedBitmap))'。它應該給你一個(平滑的)模糊效果。毋庸置疑,將5秒鐘降到不太明顯的地方會有所幫助。 – Vikram

+1

另一種方式:當您的應用程序啓動時(第一次),使用getWallpaper()檢索位圖,模糊它,並將_original_和_blurred copy_保存到SD卡。在隨後的啓動中,使用'getWallpaper()'檢索位圖,並將它與上次啓動時使用的_original_進行比較:'bitmapFromGetWallpaper.sameAs(originalFromSDCard)'。如果它們相同,則使用SD卡中的模糊副本。否則,模糊'bitmapFromGetWallpaper'並更新SD卡上的原始和模糊副本。延遲現在只應在用戶更換壁紙時:與棄用前相同。 – Vikram

回答

0

既然你不再會得到廣播了,對於你來說,嘗試和改善模糊方法的性能並不是最好的方向,並且在沒有SD卡存儲的情況下即時進行呢?

問題是,爲了讓用戶改變背景,他們幾乎不得不離開你的應用程序(並且你仍然可以注意到),並且當他們重新進入時最多隻能說一秒模糊你的應用應該仍然是好用戶體驗。

也許看看這裏(如果你還沒有的話),就在Android的快速圖像模糊:

Fast Bitmap Blur For Android SDK

+0

感謝您的諮詢!我已經在使用快速模糊。取決於圖像,它也需要1-5秒的時間。我在上面評論中使用了第二種方法。 – Sunny