外部 SD カードに保存されている写真がいくつかあり、それらのサムネイルをGridView
. 標準のギャラリー アプリケーションで写真フォルダーを参照できるため、メディア スキャナーがサムネイルを作成したことはわかっていますが、それらのサムネイルがどこにあるかがわからないため、GridView
.
私はサムネイルを取得しようとしています:
MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong(_imageUri.getLastPathSegment()), type, null)
_imageUri
コンテンツ スキーマ Uri でなければならないので、私の問題は、画像のファイル スキーマ Uris をコンテンツ スキーマ Uris に変換する方法を見つけることです。残念ながら、私はそれを行う方法がわかりません。使用を推奨するSOスレッドをたくさん見てきましたが、Uri.parse()
うまくいかないので、別の解決策を探しています。
私の現在のアプローチは、個々のファイルをスキャンするためにメディア スキャナーを使用し、コールバックUri
からコンテンツを取得しようとすることです。onScanCompleted
コードは次のとおりです。
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
です。誰かが私が間違っていることを教えてもらえますか? ティア