我的图片文件没有缩略图。 (使用NFC从我的外部卡梅拉进口)
我想为我的图片选择器视图创建缩略图。 (必须快)
此时此刻,我甚至不确定" MEDIA SCAN"意味着"生成缩略图"或者是什么
我尝试使用mMediaScannerConnection.scanFile(mPath, null);
onScanCompleted
被调用,我尝试使用以下两个版本的函数来获取缩略图。
我得到两个函数的null thumbnailPath,我不明白为什么......
private String getThumbnailPath(long imageId) {
ContentResolver cr = this.mContext.getContentResolver();
Cursor c = MediaStore.Images.Thumbnails.queryMiniThumbnail(cr, imageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
try {
if (c.moveToNext()) {
int dataId = c.getColumnIndex( Images.Thumbnails.DATA);
String strThumPath = c.getString(dataId);
Log.i("ScanTest", "strThumPath = " + strThumPath );
return strThumPath;
}
} finally {
if (c != null) c.close();
}
return null;
}
private String getThumbnailPath2( long imageId ){
// http://wikicloud.blogspot.kr/2010/10/scanfile.html
ContentResolver cr = this.mContext.getContentResolver();
Cursor c = cr.query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Thumbnails.IMAGE_ID + "= ?" , new String[]{String.valueOf(imageId)}, null);
try {
if (c.moveToNext()) {
int dataId = c.getColumnIndex( Images.Thumbnails.DATA);
String strThumPath = c.getString(dataId);
Log.i("ScanTest", "strThumPath = " + strThumPath );
return strThumPath;
}
} finally {
if (c != null) c.close();
}
return null;
}
- 编辑 -
以下是我尝试获取缩略图的方式。
首先创建从image-id到thumbnail-path的映射。
protected Map getThumbnailPathFromDB(){ Map result = new HashMap(); Cursor thumbCursor = null; thumbCursor = getContentResolver()。query( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 空值, 空值, null,null);
if (thumbCursor.moveToFirst()) {
do {
String path = thumbCursor.getString(thumbCursor
.getColumnIndex(MediaStore.MediaColumns.DATA));
long imageId = thumbCursor.getLong(thumbCursor
.getColumnIndex(MediaStore.Images.Thumbnails.IMAGE_ID));
result.put(new Long(imageId), path);
} while(thumbCursor.moveToNext());
}
thumbCursor.close();
return result;
接下来我迭代所有图像并尝试从我上面创建的映射中找到缩略图
ContentResolver cr = getContentResolver();
光标游标= cr.query(
Images.Media.EXTERNAL_CONTENT_URI,null,
null,null,Images.ImageColumns.DATE_MODIFIED +" DESC&#34);
// thumbnailPathList是我在上面创建的映射,imageId是从光标
获得的图像的id
String thumbnailPath = thumbnailPathList.get(new Long(imageId));
// thumbnailPath偶尔会在这里为空!,
我在大约10台设备上测试了我的代码 它们都有我无法找到缩略图的图像。