我想知道当前墙纸的文件名或文件大小。
我知道如何获取当前墙纸的可绘制对象,如下所示:
ImageView view = new ImageView(this);
view.setImageDrawable(WallpaperManager.getInstance(this).getDrawable());
但是,我找不到获取更多指定信息的方法。
我只想设置服务器,并使服务器每小时将一个墙纸发送到某个移动设备,几分钟后,我想检查移动设备的当前墙纸是否是服务器之前发送给它的墙纸。
最佳答案
不幸的是,对于静态墙纸,除了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());
}
}