2012-05-14 3 views
2

브로드 캐스트 리시버에서 배경 화면 변경 이벤트를받을 수 있습니까? 사용자가 벽 종이를 변경했는지 감지해야합니다. 어떻게 할 수 있습니까?배경 화면 변경 이벤트

내가하고있는 것 : 나는 자동으로 배경 화면을 변경하는 앱을 가지고있다. 사용자가 다른 응용 프로그램을 사용하여 수동으로 변경하는 경우이를 알아보고 해당 응용 프로그램의 새 배경 화면을 응용 프로그램의 목록에 추가할지 묻습니다.

+0

왜이 작업을 수행해야합니까? 성취하려는 것에 대한 정보를 제공하면 사람들이 질문에 대답하는 데 도움이됩니다. – hackbod

+0

확인. 내가 뭘하는지는 다음과 같습니다. 매일 자동으로 벽지를 변경하는 앱이 있습니다. 사용자가 다른 응용 프로그램을 사용하여 수동으로 변경하는 경우이를 알아 채고 해당 응용 프로그램의 목록에 새 배경 무늬를 추가 할 것인지 묻습니다. – Ton

답변

6

배경 화면 이미지를 변경하는 경우에만 브로드 캐스트가 : http://developer.android.com/reference/android/content/Intent.html#ACTION_WALLPAPER_CHANGED

당신이 원하는 것을 할 일이 배경 화면 이미지 외에 뭔가 변경된 경우, 당신은 결정이를 사용하는 것이 더 논리가 필요합니다 : http://developer.android.com/reference/android/app/WallpaperManager.html#getWallpaperInfo()

변경하려는 배경 화면을 만드는 경우 실제로는 라이브 배경 화면을 작성해야합니다. 이렇게하면 시스템에 훨씬 더 편안하게 들어갈 수 있습니다. 원할 때 언제든지 표시 할 내용을 변경할 수 있으며 라이브 배경 화면이 중단되므로 사용자가 다른 배경 화면을 선택하면 명확합니다.

또한 ACTION_WALLPAPER_CHANGED를 사용하면 다른 응용 프로그램과의 상호 작용이 좋지 않을 수 있으므로 매우주의해야합니다. 다음 API에 표시 될 설명서가 있습니다.

/** 
* Broadcast Action: The current system wallpaper has changed. See 
* {@link android.app.WallpaperManager} for retrieving the new wallpaper. 
* This should <em>only</em> be used to determine when the wallpaper 
* has changed to show the new wallpaper to the user. You should certainly 
* never, in response to this, change the wallpaper or other attributes of 
* it such as the suggested size. That would be crazy, right? You'd cause 
* all kinds of loops, especially if other apps are doing similar things, 
* right? Of course. So please don't do this. 
* 
* @deprecated Modern applications should use 
* {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER 
* WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER} to have the wallpaper 
* shown behind their UI, rather than watching for this broadcast and 
* rendering the wallpaper on their own. 
*/ 

True story.

+1

+1 정보에 새로운 API가 사용되지 않습니다. 이제 배경 화면이 변경되었는지 확인할 방법이 없습니다. –

+1

'현대 응용 프로그램은 # FLAG_SHOW_WALLPAPER'을 사용해야합니다. - Android가 분명히 그렇게 할 방법이 없으므로 앱 뒤에 배경 화면을 흐리게하지 않는 한, 모두 괜찮습니다. – RobinJ

+0

@RobinJ 그것이 정확히 내가하려고하는 것입니다! 이 작업을하기 위해 여기에 미친 것 ... – Boy

2

나는 아무것도 얻지 못한다고 생각합니다. .

WallpaperManager에는 현재 벽지를 드로어 블로 반환하는 일부 게터가 있습니다. 현재 사본을 저장된 사본과 비교하여 변경 사항이 있는지 여부를 판별 할 수 있습니다. 그러나 이미 설정 한 후 배경 화면을 변경하여 사용자를 속이기 위해이 기능을 사용하는 경우 맨발로 어둠 속에서 레고를 들기를 바랍니다.

+0

비교할 때 좋은 해결책이라고 생각하지 않습니다. 얼마나 자주 비교해야합니까? 매 순간? 매시간? (배터리는 금과 같다). 내가하고있는 일은 다음과 같습니다. 저는 자동으로 배경 화면을 변경하는 앱이 있습니다. 사용자가 다른 응용 프로그램을 사용하여 수동으로 변경하는 경우 해당 응용 프로그램의 목록에 새 배경 무늬를 추가 할 것인지 묻는 메시지를 표시하고 사용자에게 묻습니다. – Ton

+0

나는 그것이 유일한 해결책이라고 생각합니다. . 하지만 배터리가 금처럼되면 사람들은 자동 배경 화면 스위처를 사용하지 않을 것입니다 ... – FoamyGuy