2009-12-26 2 views
25

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

+0

http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper -image/5813607 # 5813607 нажмите эту ссылку Я пишу там пример кода. – Maidul

ответ

22

С this page на сайте разработчика:

public void setStream (InputStream data) 

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

+7

Обратите внимание, что API впервые появился в версии 2.0; если вы хотите поддерживать более старые версии, используйте один из исходных API в Context: http://developer.android.com/reference/android/content/Context.html#setWallpaper(java.io.InputStream) – hackbod

+0

Я попробовал то же самое для видеоисточника ... он не работает ... для imageurl он отлично работает ... любая идея/предложение здесь. – CoDe

4

OK Вот как это сделать, прежде чем API 2.0:

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

Этот метод устарел. См. Ответ ChrisF для получения подробных сведений о новом методе.

5

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

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> 

надеется он будет работать

31

Если у вас есть 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> 
+0

Я пробовал то же самое для видеопотока .. но я получаю --- «SkImageDecoder :: Factory возвратил null» ошибку ... любое предложение здесь. – CoDe

+0

Можно установить обои в качестве фоновых рисунков по умолчанию из приложения. – CoDe

+0

Это должны быть новые вопросы .. в любом случае, что вы имеете в виду по умолчанию обои? – Kishore

Смежные вопросы