Android - wie das Hintergrundbild festlegen
Frage
Ist es möglich, die android Tapete Bild programmatisch zu setzen? Ich möchte einen Dienst erstellen, dass Downloads ein Bild aus dem Internet und aktualisiert die Tapete Home-Bildschirm in regelmäßigen Abständen.
Lösung
dieser Seite auf der Entwickler-Website:
public void setStream (InputStream data)
Ändern Sie den aktuellen Systemhintergrund zu einem bestimmten Byte-Stream. Das Geben Input in persistente Speicher kopiert und wird nun als Hintergrund verwendet werden. Derzeit muss er entweder ein JPEG oder PNG-Bild sein.
Andere Tipps
Wenn Sie Bild-URL haben, dann verwenden
WallpaperManager wpm = WallpaperManager.getInstance(context);
InputStream ins = new URL("absolute/path/of/image").openStream();
wpm.setStream(ins);
Wenn Sie Bild haben URI dann verwenden
WallpaperManager wpm = WallpaperManager.getInstance(context);
wpm.setResource(Uri.of.image);
In Ihrer Manifest-Datei:
<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
Wenn Sie Bitmap des Bildes haben, als Sie diese Funktion Als Hintergrund hinzufügen werden:
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();
}
}
Sie sollten die Erlaubnis für dieses Add
<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
hoffe, es wird funktionieren
OK Hier ist, wie es zu tun, bevor api 2.0:
Sie müssen getApplicationContext.setWallpaper () und übergeben Sie die Bitmap nennen.
Diese Methode ist veraltet. Siehe ChrisF Antwort für Details zu der neuen Methode.