Android: cómo configurar la imagen del fondo de pantalla

¿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.

Desde esta página en el sitio del desarrollador:

public void setStream (InputStream data) 

Cambia el fondo de pantalla del sistema actual a una secuencia de bytes específica. 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.

Si tiene URL de imagen, use

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

Si tiene URI de imagen, use

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

En tu archivo de manifiesto:

  

Si tiene un bitmap de imagen, 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(); } } 

deberías agregar permiso para esto

  

espero que funcione

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

Debe llamar a getApplicationContext.setWallpaper () y pasarle el bitmap.

Este método ahora está en desuso. Consulte la respuesta de ChrisF para obtener detalles sobre el nuevo método.