Android如何在我的直接路径中使用Cursor获取图像和视频缩略图?

时间:2015-06-02 03:53:01

标签: java android bitmap cursor

如何在同一光标的直接路径中使用Cursor获取图像和视频缩略图?

我需要在/ DCIM / 100ANDRO文件夹中获取图像和视频缩略图。

但我可以分开在sd卡上获取图像和视频的所有数据。

  private ArrayList<ImageItem> getData() {
          final ArrayList<ImageItem> imageItems = new ArrayList<>();

          ContentResolver cr = mContext.getContentResolver();

   String[] projection = {MediaStore.Images.Thumbnails.DATA, MediaStore.Video.Thumbnails.DATA};
          Cursor cursor = cr.query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,projection,null,null,null);

          for( int i = 0 ; i < cursor.getCount(); i++)
          {
              cursor.moveToPosition(i);
              String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA));
              Log.i("info","filePath:"+filePath);
              File file = new File(filePath);

              Bitmap myBitmap =       BitmapFactory.decodeFile(file.getAbsolutePath());

              imageItems.add( new ImageItem(myBitmap, "Image#" + i) );
          }


          cursor =       cr.query(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,projection,null,null,null);
          for( int i = 0 ; i < cursor.getCount(); i++)
          {
              cursor.moveToPosition(i);
              String filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA));
              Log.i("info","filePath:"+filePath);
              File file = new File(filePath);

              Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());

              imageItems.add( new ImageItem(myBitmap, "Image#" + i) );
          }

          cursor.close();
  return imageItems;
      }

是否可以使用光标直接文件夹获取缩略图并获取视频和图像缩略图?

非常感谢你。

1 个答案:

答案 0 :(得分:2)

我找到了答案。

我们应该反转这个方法。

我们可以找到真正的道路。然后获取ID。

通过ID获取图像和视频缩略图。

要使用光标获取图像和视频,请参考articles

使用以下代码获取图片缩略图:

 bitmap = MediaStore.Images.Thumbnails.getThumbnail(context
                        .getApplicationContext().getContentResolver(), item.getImgId(),
                MediaStore.Images.Thumbnails.MICRO_KIND, null);

使用以下代码获取视频缩略图:

  bitmap = MediaStore.Video.Thumbnails.getThumbnail(context
                       .getApplicationContext().getContentResolver(), item.getImgId(),
               MediaStore.Images.Thumbnails.MICRO_KIND, null);