2012-08-24 69 views
1

我在外部SD卡中存储了一些图片,我想在GridView中显示它们的缩略图。我知道媒体扫描器已创建缩略图,因为我可以使用标准的Gallery应用程序浏览我的图片文件夹,但我不知道这些缩略图位于哪里,因此我不知道如何将它们添加到我的GridView通过MediaScannerConnectionClient获取content-scheme Uri图像

我试图获得与缩略图:

MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong(_imageUri.getLastPathSegment()), type, null) 

_imageUri必须是内容开放的架构,所以我的问题是要找到我的图片的文件架构尤里斯转换为内容的一种方式-schema Uris。不幸的是我不知道该怎么做。我看到很多SO线程建议使用Uri.parse(),但它不起作用,所以我正在寻找不同的解决方案。

我目前的做法是使用媒体扫描仪扫描各个文件,并尝试从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。有人能告诉我我做错了什么吗? TIA

回答

1

您是否尝试过MediaStorage.Images.Thumbnails类?它提供了两个应该满足您需求的静态方法getThumbnail(...)

+0

是的,我已经完成了,就像在问题中所说的那样。 – Vicent

+0

哦,对不起,错过了那一行,我只看到下面的大代码块... – Ridcully