Можно ли программно настроить изображение обоев для Android? Я хотел бы создать службу, которая загружает изображение из Интернета и периодически обновляет обои рабочего стола.
Android - как установить изображение обоев
Ответ 1
От эта страница на сайте разработчика:
public void setStream (InputStream data)
Измените текущие системные обои на определенный поток байтов. Дать InputStream будет скопирован в постоянное хранилище и теперь будет использоваться в качестве обоев. В настоящее время это должно быть изображение JPEG или PNG.
Ответ 2
Если у вас есть 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>
Ответ 3
Если у вас есть растровое изображение, чем вы добавите эту функцию для установки в качестве обоев:
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>
надеюсь, что это сработает
Ответ 4
OK Здесь, как это сделать до api 2.0:
Вам нужно вызвать getApplicationContext.setWallpaper() и передать ему растровое изображение.
Этот метод теперь устарел. См. Ответ ChrisF для получения подробных сведений о новом методе.