2013-11-09 4 views
1

앱 정보 - 내 앱 배경이 흐릿하게 보이게 만듭니다. 액티비티에서 getWallpaper() 메서드를 사용하여 드로어 블로 배경 무늬를 얻는 것은 쉽습니다. 드로어 블을 비트 맵으로 변환하고 블러 알고리즘을 사용하여 비트 맵을 흐리게 만든 다음 배경 이미지로 설정합니다. 이 전체 과정은 약 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 (새 BitmapDrawable (getResources(), processedBitmap))'. 그것은 당신에게 흐릿한 효과를 줄 수 있습니까? 말할 것도없이 5 초를 덜 눈에 띄게 만드는 것이 도움이 될 것입니다. – Vikram

+1

또 다른 방법 : 앱을 시작할 때 (처음으로) getWallpaper()를 사용하여 비트 맵을 검색하고 흐리게 처리 한 다음 _original_ 및 _blurred 복사본 _을 SD 카드에 저장합니다. 후속 실행에서'getWallpaper()'를 사용하여 비트 맵을 검색하고'bitmapFromGetWallpaper.sameAs (originalFromSDCard)'를 사용하여 마지막 실행시 저장 한 _original_과 비교하십시오. 동일한 경우 SD 카드에서 흐려진 사본을 사용하십시오. 그렇지 않으면'bitmapFromGetWallpaper'을 흐릿하게하고 SD 카드에 원본과 흐려진 사본을 업데이트하십시오. 지연은 이제 사용자가 배경 화면을 변경할 때만 가능합니다. 사용 중지 전과 동일합니다. – Vikram

답변

0

브로드 캐스트를 더 이상 사용하지 않으므로 흐리게 처리 방법의 성능을 향상시키고 SD 카드 저장 장치없이 바로 수행 할 수있는 최선의 방법이 될 수 없습니까?

사용자가 배경을 변경하려면 사용자가 다시 앱을 떠날 필요가 있습니다 (그리고 여전히 눈치 채실 수 있음). 다시 들어가면 흐리게 표시되는 경우가 많습니다. 당신의 앱은 여전히 ​​ok-ish 사용자 경험이어야합니다.

어쩌면 안드로이드에 빠른 이미지 블러에 대해 (당신이 이미하지 않은 경우) 여기 봐 :

Fast Bitmap Blur For Android SDK

+0

조언 해 주셔서 감사합니다! 이미 빠른 흐림 효과를 사용하고 있습니다. 또한 이미지에 따라 약 1-5 초 정도 걸립니다. 위의 주석에서 두 번째 방법을 사용했습니다. – Sunny

관련 문제