2012-03-11 77 views
2

我想知道当前壁纸的文件名或文件大小。 我知道如何让当前壁纸的绘制这样的:如何获取Android中当前壁纸的相关信息?

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

但是,我找不到越来越指定的信息的方式。

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

回答

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