2013-02-13 3 views
3

В моем приложении я создал GridView, чтобы отобразить изображение из определенной папки. Проблема в том, что я хочу получить изображения из папки DCIM/100ANDRO. Какой тип аргументов должен быть передан через запрос для получения такого типа изображений? Пожалуйста, предоставьте мне решение.Извлечь изображения определенной папки в Android

Я использую следующий код для извлечения, который дает мне изображения, снятые камерой

 //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(); 
      } 
     } 

предложение будет оценено!

+1

Что код вы используете прямо сейчас? –

+0

Я обновил то же самое сейчас в вопросе – void

+0

Это то, что вы хотите получить изображения со своей SD-карты? Если это так, вы можете просто использовать путь к SDK динамически. –

ответ

1

После того, как проверить это один

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

Проверьте, если это печатает правильный путь, который вам требуется Если sdcardPath не равно нулю, то попробуйте следующую логику

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); 
+0

Спасибо, я попробую это – void

+0

ok, если это не помогло вам –

+0

Что такое этот код должен представлять? –

3

Первый, утверждают путь, который вам , а затем используйте Bitmap.DecodePath (путь) для загрузки растрового изображения. Попробуйте это.

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); 

Тогда еще можно было обрабатывать возвращаемый курсор точно так же, как и формат данных, то же самое. Однако возвращенные данные будут содержать только изображения из требуемой папки.

Надеется, что это помогает :)

+2

Я знаю, что это старый пост, но для всех, кто наткнулся на этот ответ ... он не работает. Uri должен быть Uri действительным ContentProvider, а не папкой, с которой вы хотите захватить медиа. – NewGradDev

3
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")); 
    } 
}); 
Смежные вопросы