Android - 如何设置壁纸图像

问题描述:

是否有可能以编程方式设置android壁纸图像?我想创建一项服务,从网站下载图像并定期更新主屏幕壁纸。Android - 如何设置壁纸图像

+0

http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper -image/5813607#5813607点击此链接我写有示例代码。 – Maidul 2011-04-28 04:30:09

this page在开发者网站:

public void setStream (InputStream data) 

改变当前系统壁纸到一个特定的字节流。给InputStream复制到持久存储中,现在将用作壁纸。目前它必须是JPEG或PNG图像。

+7

请注意,API首先出现在2.0中;如果你想支持旧版本,请在上下文中使用原始API之一: http://developer.android.com/reference/android/content/Context.html#setWallpaper(java.io.InputStream) – hackbod 2009-12-26 20:51:11

+0

我试过了videoistream一样的东西...它不工作... imageurl它工作正常...任何想法/建议在这里。 – CoDe 2012-10-31 12:42:19

确定这里是如何API 2.0之前做到这一点:

你需要调用getApplicationContext.setWallpaper(),并通过它的位图。

现在不推荐使用此方法。有关新方法的详细信息,请参阅ChrisF的答案。

如果您有图像的位图比,你会添加此功能设置为墙纸:

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> 

添加权限希望它会工作

如果你有图像的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> 
+0

我对视频流尝试了相同的东西..但我越来越---“SkImageDecoder :: Factory返回null”错误...在这里的任何建议。 – CoDe 2012-10-31 10:44:34

+0

是否可以将动态壁纸设置为应用程序的默认壁纸。 – CoDe 2012-10-31 12:47:38

+0

它必须是一个新的问题..无论如何,你的意思是默认的壁纸? – Kishore 2012-11-09 04:41:22