1

外部 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です。誰かが私が間違っていることを教えてもらえますか? ティア

4

1 に答える 1

1

MediaStorage.Images.Thumbnailsクラスを試しましたか? ニーズを満たす2 つの静的getThumbnail(...)メソッドを提供します。

于 2012-08-26T08:33:48.087 に答える