【发布时间】:2016-11-15 10:28:06
【问题描述】:
构建图片库我遇到了一个奇怪的问题。我这样查询相册的图片:
String sortBy=MediaStore.Images.Media.DATE_MODIFIED+" desc";
String selection=MediaStore.Images.Media.DATA +" like?";
String[] selectionArgs=new String[]{"%"+folderPath+"%"};
String[] projection = {MediaStore.Images.Media._ID,MediaStore.Images.Media.DATA,MediaStore.Images.Media.DATE_MODIFIED,MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME};
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
Cursor cursor = getContentResolver().query( uri, projection, selection, selectionArgs, sortBy);
之后,我开始收集从查询中获得的所有 id 的图像。我获取特定图像 ID 的位图,如下所示:
Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail( contentResolver, imageId, MediaStore.Images.Thumbnails.MICRO_KIND, null);
在大多数设备上都可以正常工作。今天我测试了一款小米红米 3 设备,它返回的缩略图几乎总是相同的。所以如果一个相册有 200 张图片,我会得到一两张正确的图片,其余的都是完全相同的图片。
但是,如果我请求 MINI_KIND 缩略图,它们都可以正常返回。
这是什么原因造成的,我该如何解决?
【问题讨论】:
-
在运行 CyanogenMod 14.1(夜间构建)的 Nexus 5 上出现同样的问题。
-
我猜这是一个无法避免的错误,所以我使用了 MINI_KIND 并在之后以 MICRO_KIND 大小调整了位图的大小
-
不幸的是,MINI_KIND 慢得多。如果获取 MICRO_KIND 缩略图会导致错误,那就太好了,所以我可以先尝试一下,然后仅在必要时加载 MINI_KIND 缩略图。
标签: android thumbnails