7

私のアプリケーションではGridView、特定のフォルダから画像を表示するために を作成しました。問題は、DCIM/100ANDRO フォルダーから画像を取得したいということです。そのようなタイプの画像を取得するには、クエリを介してどのタイプの引数を渡す必要がありますか? 解決策を教えてください。

次のコードを使用して、カメラでキャプチャされた画像を取得しています

        //importing only camera images and storing in ArrayList of class Images     type
        String[] projection = {
        MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
        MediaStore.Images.Media.DISPLAY_NAME
        };
        String selection = MediaStore.Images.Media.BUCKET_DISPLAY_NAME + " = ?";
        String[] selectionArgs = new String[] {
            "Camera"
        };

        Cursor mImageCursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null ); 

        if (mImageCursor != null)
        {

            mImageCursor.moveToFirst();

            for (int i = 0; i < mImageCursor.getCount(); i++)
            {
                Images im=new Images();
                eachImageView=new ImageView(this);
                int imageId = mImageCursor.getInt((mImageCursor.getColumnIndex( MediaStore.Images.Media._ID)));
                Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), 
                    imageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
                im.setBitmap(bm);
                eachImageView.setImageBitmap(bm);
                im.setImageView(eachImageView);

                arrayOfImages.add(im);

                mImageCursor.moveToNext();
            }
        }

提案をいただければ幸いです。

4

4 に答える 4

7
File folder = new File(Environment.getExternalStorageDirectory().toString() + "/Folder Name/");
folder.mkdirs();
File[] allFiles = folder.listFiles(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        return (name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png"));
    }
});
于 2016-01-30T12:26:46.967 に答える
3

まず、アクセスしているパスをアサートしてから、Bitmap.DecodePath(path)を使用してビットマップをロードします。これを試してみてください。

File path = new File(Environment.getExternalStorageDirectory(),"DCIM/100ANDRO");
if(path.exists())
{
    String[] fileNames = path.list();
}
for(int i = 0; i < filename.length; i++)
{
     Bitmap mBitmap = Bitmap.decodeFile(path.getPath()+"/"+ fileNames[i]);
     ///Now set this bitmap on imageview
} 
于 2013-02-13T17:45:07.853 に答える
2

一度これをチェックしてください

 File sdcardPath = new File(Environment.getExternalStorageDirectory()
    .getPath() + "/100ANDRO"); 
   Log.v(sdcardPath.getPath());

これにより、必要な正しいパスが出力されるかどうかを確認します sdcardPath が null でない場合は、次のロジックを試してください

int imageCount = sdcardPath.listFiles().length;
  for (int count = 0; count < imageCount - 1; count++) {
   ImageView eachImageView= new ImageView(this);
   Bitmap bmp = BitmapFactory.decodeFile(sdcardPath.listFiles()[count].getAbsolutePath());
   eachImageView.setImageBitmap(bmp);
于 2013-02-13T17:16:50.160 に答える
0

私があなたを正しく理解していれば、デバイス上の特定のフォルダーからの画像を GridView に表示させたいと考えています。

クエリでは、次の Uri を使用します: MediaStore.Images.Media.EXTERNAL_CONTENT_URI. これにより、「プライマリ」外部ストレージのあらゆる場所で画像が検索されます。特定のフォルダーのみを検索する場合は、特定の Uri を使用します。

場所のパスを使用してFileオブジェクトを作成し、そのファイルから Uri を作成できます。例えば:

File myFile = new File("/scard/myfolder");
Uri myUri = Uri.fromFile(myFile);

次に、画像のクエリで、代わりにこの Uri を使用できます。つまり、次のようになります。

Cursor mImageCursor = getContentResolver().query(myUri, projection, selection, selectionArgs, null );

その後、データの形式が同じであるため、返されたカーソルを同じ方法で処理できます。ただし、返されるデータには、目的のフォルダーの画像のみが含まれます。

お役に立てれば :)

于 2013-02-13T18:30:41.270 に答える