建立图像库我遇到了一个奇怪的问题。我查询这样一张专辑的图片:
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缩略图,它们都会返回正常。
造成这种情况的原因是什么?如何绕过它?
答案 0 :(得分:0)
我找到了解决问题的方法:
大缩略图(MINI_KIND
)存储在DCIM/.thumbnails/*.jpg
中。
小缩略图(MICRO_KIND
)存储在DCIM/.thumbnails/.thumbdata*
和.thumbindex*
中。因此,在删除以.thumbdata
和.thumbindex
开头的文件后,我的应用可以检索正确的MICRO_KIND
缩略图。第一次它很慢,因为必须再次创建缩略图。显然旧的缩略图文件已损坏。