我想知道当前壁纸的文件名或文件大小。 我知道如何获得当前壁纸的可绘制:
ImageView view = new ImageView(this);
view.setImageDrawable(WallpaperManager.getInstance(this).getDrawable());
但是,我找不到获取更多指定信息的方法。
我只是想设置我的服务器,让我的服务器每小时向一些移动设备发送一个壁纸,几分钟后,我想检查一下移动设备的当前壁纸是我服务器之前发送给它的。
答案 0 :(得分:0)
不幸的是,对于静态壁纸,除了Drawable
公开的信息之外,没有其他信息。您需要将最后发送到服务器的Bitmap
存储在后台服务中,然后退出运行的壁纸并手动比较位图。使用API级别12或更高版本,您可以使用Bitmap.sameAs
方法,但在此之前,您需要手动比较像素。
public static boolean equals(Bitmap bitmap1, Bitmap bitmap2)
{
if (bitmap1 == null || bitmap2 == null)
{
return false;
}
if(Build.VERSION.SDK_INT > 11)
{
return bitmap1.sameAs(bitmap2);
}
else
{
ByteBuffer buffer1 = ByteBuffer.allocate(bitmap1.getHeight() * bitmap1.getRowBytes());
bitmap1.copyPixelsToBuffer(buffer1);
ByteBuffer buffer2 = ByteBuffer.allocate(bitmap2.getHeight() * bitmap2.getRowBytes());
bitmap2.copyPixelsToBuffer(buffer2);
return Arrays.equals(buffer1.array(), buffer2.array());
}
}