Вопрос

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

Это было полезно?

Решение

От эта страница на сайте разработчика:

public void setStream (InputStream data)

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

Другие советы

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

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

  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>

надеюсь, это сработает

Хорошо, вот как это сделать до api 2.0:

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

Теперь этот метод устарел.Смотрите ответ ChrisF для получения подробной информации о новом методе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top