安卓 - 如何设置壁纸图片?

7

可能是重复问题:
Android - 如何设置壁纸图像

我想做的是使用图像URI(不裁剪)设置壁纸

我是Android和开发方面的新手。互联网让我失望了...没有提供设置壁纸的代码。

是的,开发资源站点上说

public void setStream (InputStream data)

但我不理解它,一些示例代码将极大地帮助我。


2个回答

11

如果您有图像路径,您可以使用此代码。

is = new FileInputStream(new File(imagePath));
bis = new BufferedInputStream(is);
Bitmap bitmap = BitmapFactory.decodeStream(bis);
Bitmap useThisBitmap = Bitmap.createScaledBitmap(
    bitmap, parent.getWidth(), parent.getHeight(), true);
bitmap.recycle();
if(imagePath!=null){
    System.out.println("Hi I am try to open Bit map");
    wallpaperManager = WallpaperManager.getInstance(this);
    wallpaperDrawable = wallpaperManager.getDrawable();
    wallpaperManager.setBitmap(useThisBitmap);
如果您有图像URI,则使用此代码。
wallpaperManager = WallpaperManager.getInstance(this);
wallpaperDrawable = wallpaperManager.getDrawable();
mImageView.setImageURI(imagepath);

如果有任何问题,请告诉我。


1
这行代码有什么用? wallpaperDrawable = wallpaperManager.getDrawable(); - Shankar Agarwal

3
如果您有图像URL,您可以使用流(抽象)打开它所代表的资源:new URL("your.image.url.com").openStream()。此方法调用将返回一个InputStream类型的对象,您可以将其作为参数传递给setStream()方法。
如果您不想直接指定流,则可以打开远程流,创建位图,然后使用WallpaperManager实例或执行context.setWallpaper(bitmap)(此方法已过时)将位图设置为壁纸。
有关参考,请查看线程。

这是我的当前代码...InputStream is = getContentResolver().openInputStream(imageUri);bgImage = BitmapFactory.decodeStream(is);Context context = this.getBaseContext();context.setWallpaper(bgImage);`第2和第4行的错误在于bgImage,第3行的错误在于getBaseContext()另外,URI和URL有什么区别? 简短的答案是:“URL是URI,但是URI不是URL”。 - asdf.BEN
我已经修复了第2行和第4行的错误,因为我没有定义Bitmap bgImage。但是,getBaseContext()仍然存在错误。 - asdf.BEN
你知道可以将一个 Activity 实例作为上下文(Context)传递,对吧?不需要使用 this.getBaseContext() 了,你可以传递当前活动(Activity)的实例或者一个上下文对象,如果你有的话("this" 就是一个合法的上下文对象)。 - Samuh
是的,URI和URL之间有区别。 - Samuh
我在这里遇到了问题 --- SkImageDecoder::Factory 返回了 null。有什么建议吗? - CoDe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接