Существует только трансляция при изменении изображения обоев: 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.
*/
Правдивая история.
person
hackbod
schedule
15.05.2012