我的应用程序将在我的自定义图库中显示完整的图像列表。为此,我正在使用图像缩略图的ContentProvider。选择缩略图后,我需要显示实际图像。根据我的理解,图库的图像在拇指和媒体表中具有相同的唯一ID。
这是代码。首先,我查询了Thumbnail的ContentProvider并保存了URL和ID。
String pictureThumbTemp[] = { MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.DATA };
Cursor imagecursor = context.getContentResolver().query (MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
pictureThumbTemp,null, null, null);
后来我在Grid中显示大拇指。 选择缩略图后,我必须显示原始图像。我正在尝试检索原始图像,如
String pictureImageTemp[] = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
Cursor imagecursor = context.getContentResolver().query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
pictureImageTemp, MediaStore.Images.Media._ID + " = " + mediaID + "", null,
MediaStore.Images.Media._ID);
总的来说,我通过它的网址显示缩略图,点击后我在原始图片表中查询缩略图的媒体ID。
但它返回一个结果为0的游标。
请帮帮我。
谢谢,
沙。
答案 0 :(得分:3)
我找到了解决问题的方法。
检索原始图像的光标。 从那里我为每个图像提取了ID,并查询了ID的缩略图,返回包含路径的光标。
找到下面的代码段。
String pictureCols[] = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
Cursor imagecursor = mContext.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, pictureCols,
null, null, null);
imagecursor.moveToFirst();
mImageUrls = new ArrayList<String>();
try {
// Iterate the cursor for Image urls
for (int index = 0; index < imagecursor.getCount(); index++) {
imagecursor.moveToPosition(index);
preparePicture(imagecursor);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
imagecursor.close();
}
}
以下是preparePicture
方法
private void preparePicture(Cursor imageCursor) {
// get the ID for the original image
int idColumnIndex = imageCursor.getColumnIndex(mSelectedImage.mediaID);
Long id = imageCursor.getLong(idColumnIndex);
// Thumbnail image Cursor for this specific image.
String thumbCols[] = { MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.DATA };
Cursor thumbCursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(mContext.getContentResolver(), id,
Thumbnails.MINI_KIND, thumbCols);
thumbCursor.moveToFirst();
// Save thumbnail URL in MediaInfo
dataColumnIndex = thumbCursor.getColumnIndex(mSelectedThumb.data);
String thumbURL = thumbCursor.getString(dataColumnIndex);
thumbCursor.close();
mImageUrls.add(url);
}
最后,我将把我所有的缩略图网址放在ArrayList中。
同样的逻辑不适用于视频缩略图。当然这是一个不同的问题:)
问候,
沙。
答案 1 :(得分:1)
尝试这个
final String[] pictureImageTemp= { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
Cursor imagecursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, pictureImageTemp, null,
null, MediaStore.Images.Media._ID);