Android - ThumbnailUtils.getThumbnail返回错误的图像

时间:2016-07-13 01:51:17

标签: android thumbnails

建立图像库我遇到了一个奇怪的问题。我查询这样一张专辑的图片:

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

在大多数设备中,它工作正常。今天我测试了一个小米Redmi 3设备,它几乎总是返回相同的缩略图。因此,如果一张专辑有200张图片,我会得到一两个正确的图像,其余的图像完全相同。

但是,如果我请求MINI_KIND缩略图,它们都会返回正常。

造成这种情况的原因是什么?如何绕过它?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法:

大缩略图(MINI_KIND)存储在DCIM/.thumbnails/*.jpg中。 小缩略图(MICRO_KIND)存储在DCIM/.thumbnails/.thumbdata*.thumbindex*中。因此,在删除以.thumbdata.thumbindex开头的文件后,我的应用可以检索正确的MICRO_KIND缩略图。第一次它很慢,因为必须再次创建缩略图。显然旧的缩略图文件已损坏。