web-dev-qa-db-ja.com

Android-壁紙画像の設定方法

Android壁紙画像をプログラムで設定することはできますか?ウェブから画像をダウンロードしてホーム画面の壁紙を定期的に更新するサービスを作りたいのですが。

26
James Cadd

このページ 開発者サイトから:

public void setStream (InputStream data)

現在のシステムの壁紙を特定のバイトストリームに変更します。 give InputStreamは永続ストレージにコピーされ、壁紙として使用されます。現在、JPEGまたはPNG画像のいずれかである必要があります。

22
ChrisF

画像の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>
31
Kishore

画像のビットマップがある場合は、この関数を追加して壁紙として設定します。

  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>

それがうまくいくことを願っています

5
djk

OKこれがapi2.0の前にそれをする方法です:

GetApplicationContext.setWallpaper()を呼び出して、ビットマップを渡す必要があります。

このメソッドは現在非推奨です。新しい方法の詳細については、ChrisFの回答を参照してください。

4
Jonah