2012-08-24 109 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