Как я могу получить информацию о текущих обоях в Android? - PullRequest
2 голосов
/ 11 марта 2012

Что я пытаюсь узнать по имени файла или размеру файла текущих обоев. Я знаю, как получить текущие обои, как это:

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

Однако я не могу найти способ получения более подробной информации.

Я просто хочу настроить свой сервер и заставить мой сервер отправлять один фоновый рисунок в час на какое-либо мобильное устройство, и через несколько минут я хочу убедиться, что текущие фоновые изображения мобильного телефона соответствуют тому, что мой сервер отправлял на него раньше.

1 Ответ

0 голосов
/ 16 января 2013

К сожалению, для статических обоев нет никакой дополнительной информации, кроме информации, предоставляемой 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());
    }
}
...