2009-12-26 18 views
25

È possibile impostare l'immagine dello sfondo Android programmaticamente? Mi piacerebbe creare un servizio che scarica un'immagine dal web e aggiorna periodicamente lo sfondo della schermata Home.Android - come impostare l'immagine dello sfondo

+0

http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper -immagine/5813607 # 5813607 clicca questo link Scrivo lì codice di esempio. – Maidul

risposta

22

Da this page sul sito degli sviluppatori:

public void setStream (InputStream data) 

cambiare l'attuale sfondo del sistema ad un flusso di byte specifica. Il comando InputStream viene copiato nella memoria permanente e verrà ora utilizzato come sfondo. Attualmente deve essere un'immagine JPEG o PNG.

+7

Nota che l'API è apparsa per la prima volta in 2.0; se si desidera supportare versioni precedenti, utilizzare una delle API originali su Contesto: http://developer.android.com/reference/android/content/Context.html#setWallpaper(java.io.InputStream) – hackbod

+0

ho provato stessa cosa per videoistream ... non funziona ... per imageurl funziona bene ... qualsiasi idea/suggerimento qui. – CoDe

4

OK Ecco come farlo prima di api 2.0:

è necessario chiamare getApplicationContext.setWallpaper() e passarlo bitmap.

Questo metodo è ora obsoleto. Vedi la risposta di ChrisF per i dettagli sul nuovo metodo.

5

Se si dispone di bitmap di immagine di quello che sarà aggiungere questa funzione per impostare come sfondo:

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(); 
    }   
} 

si dovrebbe aggiungere il permesso per questo

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

spero che funzionerà

31

Se hai l'URL dell'immagine quindi usa

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

Se si dispone di un'immagine URI quindi utilizzare

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

Nel file manifest:

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

Ho provato le stesse cose per lo streaming video ... ma sto ricevendo --- "Errore SkImageDecoder :: Factory restituito null" ... qualsiasi suggerimento qui. – CoDe

+0

è possibile impostare lo sfondo animato come sfondo predefinito dall'applicazione. – CoDe

+0

Deve essere una nuova domanda .. comunque che cosa intendi per carta da parati predefinita? – Kishore

Problemi correlati