2009-12-26 12 views
25

¿Es posible establecer la imagen del fondo de pantalla de Android programáticamente? Me gustaría crear un servicio que descargue una imagen de la web y actualice el fondo de la pantalla de inicio periódicamente.Android: cómo configurar la imagen del fondo de pantalla

+0

http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper -image/5813607 # 5813607 haga clic en este enlace Escribo el código de muestra. – Maidul

Respuesta

22

De this page en el sitio de desarrolladores:

public void setStream (InputStream data) 

cambiar el sistema actual fondo de pantalla para un flujo de bytes específico. El comando InputStream se copia en un almacenamiento persistente y ahora se usará como fondo de pantalla. Actualmente debe ser una imagen JPEG o PNG.

+7

Tenga en cuenta que la API apareció por primera vez en 2.0; si desea admitir versiones anteriores, use una de las API originales en Contexto: http://developer.android.com/reference/android/content/Context.html#setWallpaper(java.io.InputStream) – hackbod

+0

intenté Lo mismo para videoistream ... no funciona ... para imageurl funciona bien ... cualquier idea/sugerencia aquí. – CoDe

4

Aceptar He aquí cómo hacerlo antes de API 2.0:

es necesario llamar a getApplicationContext.setWallpaper() y pasarle el mapa de bits.

Este método ya no está disponible. Consulte la respuesta de ChrisF para obtener detalles sobre el nuevo método.

5

Si tiene mapa de bits de la imagen que va a agregar esta función para establecer como fondo de pantalla:

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

se debe añadir el permiso para este

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

esperanza de que funcione

31

Si tiene URL de imagen y luego usa

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

Si tienes una imagen URI a continuación, utilizar

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

En el archivo de manifiesto:

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

Probé las mismas cosas para la transmisión de video ... pero estoy obteniendo el error "SkImageDecoder :: Factory returned null" ... cualquier sugerencia aquí. – CoDe

+0

es posible establecer fondo de pantalla en vivo como fondo de pantalla predeterminado de la aplicación. – CoDe

+0

Debe ser una nueva pregunta ... de todos modos, ¿a qué te refieres con un fondo predeterminado? – Kishore

Cuestiones relacionadas