Android WallpaperManager.setBitmap(位图位图)有时会设置默认壁纸

时间:2014-12-12 15:28:39

标签: android wallpaper

我正在使用WallpaperManager.setBitmap来设置设备的壁纸。 我已正确设置权限。 99%的情况下它可以正常工作,但有时它只是设置默认值而不是我的默认值。 没有例外(我有try-catch,我有日志。没有例外。没有崩溃。没什么)。 该方法无效,因此调用后也无需检查。 它只是被调用而不是设置给定的位图 - 它设置默认值。

http://developer.android.com/reference/android/app/WallpaperManager.html#setBitmap(android.graphics.Bitmap)

以下是代码:

WallpaperManager.getInstance(context).setBitmap(bitmap);

位图不会被回收(我在到达这行代码之前检查它)。

任何想法可能出错或使用什么替代品?

使用资源不是一个选项,因为位图是在内存中动态生成的。

生成的位图大小,在我的设备的情况下(Nexus 5)始终是相同的:2160x1920,无论成功或失败的结果。 此外 - 它是一个PNG。

我将同时使用setStream运行一些测试: http://developer.android.com/reference/android/app/WallpaperManager.html#setStream(java.io.InputStream)

希望它效果更好......

1 个答案:

答案 0 :(得分:0)

尝试使用此方法,直接将位图作为可绘制资源引用:

WallpaperManager.getInstance(context).setResource(R.drawable.myImageId);

方法调用假设您的位图位于可绘制的资源文件夹中(而不是资产)。

有关详细信息,请参阅API docs