2012-05-14 4 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. 
*/ 

Настоящая история.

+1

+1 для информации, которую новый API не рекомендует. Теперь нет способа найти, изменились ли обои? –

+1

'Современные приложения должны использовать # FLAG_SHOW_WALLPAPER' - все в порядке, если вы не хотите размывать обои за своим приложением, поскольку Android, по-видимому, не имеет возможности это сделать (о чем я узнал). – RobinJ

+0

@RobinJ это именно то, что я пытаюсь сделать! Исходя из сумасшествия здесь, чтобы получить эту работу ... – Boy

2

Я не считаю, что что-то получает трансляцию ,

WallpaperManager имеет некоторые геттеры, которые возвратят текущие обои вам в качестве вытягиваемого. Возможно, вы могли бы сравнить текущую с сохраненной копией, чтобы определить, была ли она изменена. Однако, если вы используете эту функцию, чтобы обмануть пользователей, изменив обои после того, как они уже установили ее, знайте, я надеюсь, что вы ступите на лего в темноте своей голой ногой.

+0

Я не думаю, что сравнение - хорошее решение. Как часто я должен сравнивать? каждую минуту? каждый час? (батарея похожа на золото). Что я делаю так: У меня есть приложение, которое автоматически меняет обои. Если пользователь меняет его вручную, используя другое приложение, я хотел бы его заметить и спросить пользователей, хочет ли он добавить новые обои в список в моем приложении – Ton

+0

Я думаю, что это единственное решение, которое доступно вам , Но также, если батарея похожа на золото, тогда люди не будут использовать автоматический переключатель обоев для обоев ... – FoamyGuy