Android - как установить фоновое изображение

Можно ли программно установить изображение обоев Android? Я хотел бы создать службу, которая загружает изображение из Интернета и периодически обновляет обои на главном экране.


person James Cadd    schedule 26.12.2009    source источник
comment
stackoverflow.com /questions/2205092/ нажмите на эту ссылку, я пишу там пример кода.   -  person Maidul    schedule 28.04.2011


Ответы (4)


С этой страницы на странице разработчика сайт:

public void setStream (InputStream data)

Измените текущие системные обои на определенный поток байтов. Give InputStream копируется в постоянное хранилище и теперь будет использоваться в качестве обоев. В настоящее время это должно быть изображение в формате JPEG или PNG.

person ChrisF    schedule 26.12.2009
comment
Обратите внимание, что API впервые появился в версии 2.0; если вы хотите поддерживать более старые версии, используйте один из исходных API в контексте: developer.android.com/reference/android/content/ - person hackbod; 26.12.2009
comment
я пробовал то же самое для видеоистрима... это не работает... для imageurl это работает нормально... любая идея/предложение здесь. - person CoDe; 31.10.2012

Если у вас есть URL-адрес изображения, используйте

WallpaperManager wpm = WallpaperManager.getInstance(context);
InputStream ins = new URL("absolute/path/of/image").openStream();
wpm.setStream(ins);

Если у вас есть URI изображения, используйте

WallpaperManager wpm = WallpaperManager.getInstance(context);
wpm.setResource(Uri.of.image);

В вашем файле манифеста:

<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
person Kishore    schedule 18.10.2012
comment
Я пробовал то же самое для видеопотока ... но я получаю --- SkImageDecoder:: Factory вернул нулевую ошибку ... любое предложение здесь. - person CoDe; 31.10.2012
comment
можно ли установить живые обои в качестве обоев по умолчанию из приложения. - person CoDe; 31.10.2012
comment
Это должны быть новые вопросы .. в любом случае, что вы подразумеваете под обоями по умолчанию? - person Kishore; 09.11.2012
comment
Спасибо за разрешение. Я забыл об этом. - person Thiago; 12.08.2013

Если у вас есть растровое изображение, вы добавите эту функцию для установки в качестве обоев:

  public void SetBackground(int Url) {

    try {
        File file = new File("/sdcard/sampleimage");
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), Url);
        bitmap.compress(CompressFormat.JPEG, 80, new FileOutputStream(file));
        Context context = this.getBaseContext();
        context.setWallpaper(bitmap);            
        Toast.makeText(getApplicationContext(), "Wallpaper has been set",             Toast.LENGTH_SHORT).show();            
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }         
}

вы должны добавить разрешение для этого

<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>

надеюсь, это сработает

person djk    schedule 17.04.2012

OK Вот как это сделать до API 2.0:

Вам нужно вызвать getApplicationContext.setWallpaper() и передать ему растровое изображение.

Этот метод сейчас устарел. Подробнее о новом методе см. Ответ ChrisF.

person Jonah    schedule 20.04.2010