我有一些图片存储在外部SD卡中,我想在GridView
中显示他们的缩略图。我知道媒体扫描仪创建了缩略图,因为我可以使用标准画廊应用程序浏览我的图片文件夹,但我不知道这些缩略图的位置,所以我不知道如何将它们添加到我的GridView
中。
我正在尝试使用以下命令获取缩略图:
MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong(_imageUri.getLastPathSegment()), type, null)
_imageUri
必须是内容模式Uri,所以我的问题是找到一种方法将图像的文件模式Uri转换为内容模式Uri。不幸的是,我不知道该怎么做。我见过很多推荐使用Uri.parse()
的SO线程,但它就是不起作用,所以我在寻找一个不同的解决方案。
我目前的方法是使用媒体扫描器扫描单个文件,并尝试从onScanCompleted
回调中检索内容Uri
。代码是:
public class SimpleMediaScanner implements MediaScannerConnectionClient {
private MediaScannerConnection mMSC;
private File mFile;
private MyAdapter mAdapter;
public SimpleMediaScanner(Context c, File f, MyAdapter a) {
mAdapter = a;
mFile = f;
mMSC = new MediaScannerConnection(c, this);
mMSC.connect();
}
@Override
public void onMediaScannerConnected() {
mMSC.scanFile(mFile.getAbsolutePath(), null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
// Store the content scheme Uri of the scanned file
// in a public field of the adapter
mAdapter.mThumbUri = uri;
mMSC.disconnect();
}
}
我从扩展的SimplecursorAdapter
实例化了这个类
SimpleMediaScanner sms = new SimpleMediaScanner(mContext, new File(filepath), this);
遗憾的是,返回的mAdapter.mThumbUri
值始终为null
。谁能告诉我我做错了什么?提亚
发布于 2012-08-26 08:33:48
您尝试过MediaStorage.Images.Thumbnails类吗?它提供了两个静态getThumbnail(...)
方法,可以满足您的需求。
https://stackoverflow.com/questions/12115971
复制相似问题