MediaStore
には、カメラのすべての写真が表示されます。 の写真とデバイスの他のイメージメディア(ダウンロード、スクリーンショットなど)との区別に注意してください。 MediaStore
には、多くの異なるディレクトリまたは「バケット」があり、デフォルトのカメラ/画像の場所がその1つです。しかし、このバケットの名前には何の基準もないようです。私のSony Z5では、Samsung GAPAX S3の「100ANDRO」です。単に「カメラ」です。Androidストアを介して、MediaStoreから写真(カメラ撮影)を一貫して読み込みます。
様々なposts on StackOverflowを読んで、manufactorerによって異なりますようですが、私はだから私はそのパスでMediaStore
にクエリをフィルタすることができ
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
で、従来の「カメラフォルダ」へのパスを見つけることができるはずです(例えば、私のS3では/storage/emulated/0/DCIM
)。ユーザーが、おそらくサードパーティのカメラアプリを使用して、まったく違った場所に写真を保存することを選択した場合、それは問題ありません。私はここでもっとも "普通の"ユースケースをカバーすることを望んでいます。
しかし、外付けSDカードがあれば、その写真もロードしたいのですが?
私の知る限り見ることができるように、「内部メモリ」の写真・SDカード上のものはMediaStore
に同じBUCKET_DISPLAY_NAME
(およびBUCKET_ID
)を持つことになります。しかし、のパスをにすることは、デバイス間で非常に難しいと思われます。
だからあなたは(すべての写真を取得するために)このアプローチについてどう思いますか:
は、このパスで濾過
クエリ
MediaStore
、(上記のように)「カメラフォルダ」のパスを見つけます。対応BUCKET_DISPLAY_NAME
クエリが再び
MediaStore
は、ステップ2からBUCKET_DISPLAY_NAME
上で濾過し、パスが
ステップ2のものと異なるところは、ステップ2のすべての写真を検索します検索内部メモリ。 ステップ3では、SDカードに写真がある場合はそれを検索します。 カードがマウントされていない場合、または写真が含まれていない場合は、ステップ3は空になりますので、はと思われるかもしれません。
「SDカードの写真のディレクトリへのパスがデバイス間で非常に難しいようです」 - リムーバブルストレージへのファイルシステムのパスはありません。一般に、リムーバブルストレージへの任意のファイルシステムアクセスはありません。 – CommonsWare
はい。だから私は提案されたアプローチについて、パスを持たないようにするために何を考えていますか? – joakimk
私はそのようなことは何も試していないので、現実にはどれくらいうまくいくか分かりません。 – CommonsWare