외부 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
예, 질문에서 말한대로 해 보았습니다. – Vicent
오, 죄송합니다, 그 라인을 놓친, 나는 아래의 큰 코드 블록을 보았다 ... – Ridcully