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>
それがうまくいくことを願っています
OKこれがapi2.0の前にそれをする方法です:
GetApplicationContext.setWallpaper()を呼び出して、ビットマップを渡す必要があります。
このメソッドは現在非推奨です。新しい方法の詳細については、ChrisFの回答を参照してください。