2012-08-24 2 views
1

외부 SD 카드에 저장된 사진이 일부 있는데 GridView에 미리보기 이미지를 표시하고 싶습니다. 표준 갤러리 응용 프로그램을 사용하여 사진 폴더를 탐색 할 수 있기 때문에 미디어 스캐너가 축소판을 만들었지 만 축소판이 어디에 있는지 모르기 때문에 GridView에 추가하는 방법을 알지 못합니다.MediaScannerConnectionClient를 통해 이미지의 콘텐츠 스키마 Uri를 가져옵니다.

내가 가진 작은 이미지 얻으려고 :

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

_imageUri은 열린 우리당 그래서 내 문제는 컨텐츠에 내 이미지의 파일 스키마 URI를 변환하는 방법을 찾는 것입니다 콘텐츠 스키마이어야합니다 -schema Uris. 불행히도 나는 그것을 어떻게하는지 모른다. 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입니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있니? TIA

답변

1

MediaStorage.Images.Thumbnails 클래스를 사용해 보셨습니까? 그것은 당신의 요구를 충족시켜야하는 두 가지 정적 인 방법을 제공합니다.

+0

예, 질문에서 말한대로 해 보았습니다. – Vicent

+0

오, 죄송합니다, 그 라인을 놓친, 나는 아래의 큰 코드 블록을 보았다 ... – Ridcully