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


¿Es posible configurar 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 pantalla de inicio periódicamente.

Author: James Cadd, 2009-12-26

4 answers

Desde esta página en el sitio del desarrollador:

public void setStream (InputStream data)

Cambie el fondo de pantalla del sistema actual a una secuencia de bytes específica. El flujo de entrada give se copia en el almacenamiento persistente y ahora se utilizará como fondo de pantalla. Actualmente debe ser una imagen JPEG o PNG.

 22
Author: ChrisF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-26 19:54:39

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 su archivo de manifiesto:

<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
 31
Author: Kishore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-18 10:06:55

Si tiene un mapa de bits 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();
    }         
}

Debe agregar permiso para esto

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

Espero que funcione

 5
Author: djk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-17 05:41:37

OK Aquí está cómo hacerlo antes de api 2.0:

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

Este método ahora está obsoleto. Vea la respuesta de ChrisF para detalles sobre el nuevo método.

 4
Author: Jonah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-25 21:16:04