如何在Android中获取有关当前壁纸的信息?

时间:2012-03-11 05:33:35

标签: android wallpaper

我想知道当前壁纸的文件名或文件大小。 我知道如何获得当前壁纸的可绘制:

ImageView view = new ImageView(this);
view.setImageDrawable(WallpaperManager.getInstance(this).getDrawable());

但是,我找不到获取更多指定信息的方法。

我只是想设置我的服务器,让我的服务器每小时向一些移动设备发送一个壁纸,几分钟后,我想检查一下移动设备的当前壁纸是我服务器之前发送给它的。

1 个答案:

答案 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());
    }
}