自定义图库与android中的图像和视频选择多个项目

mad*_*n V 6 video android gallery

我想创建一个自定义图库,以显示SD卡中的所有图像和视频(以及持续时间).我正在使用以下代码来构建自定义库

码:

final String[] columns = { MediaStore.Images.Media.DATA ,MediaStore.Images.Media._ID};
    final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
    Cursor imagecursor = getContentResolver().query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
            null, orderBy + " DESC");

    this.imageUrls = new ArrayList<String>();


    for (int i = 0; i < imagecursor.getCount(); i++) {
        imagecursor.moveToPosition(i);
        int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
        imageUrls.add(imagecursor.getString(dataColumnIndex));

    }
  String[] parameters = { MediaStore.Video.Media._ID,
                MediaStore.Video.Media.DATA,
                MediaStore.Video.Media.DISPLAY_NAME,
                MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION,
                MediaStore.Video.Media.DATE_TAKEN,MediaStore.Video.Thumbnails.DATA};



     Cursor   videocursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                parameters, null, null, null);

     for (int i = 0; i < videocursor.getCount(); i++) {
         videocursor.moveToPosition(i);
         imageUrls.add(videocursor.getString(videocursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA)));
            }
    options = new DisplayImageOptions.Builder()
        .showStubImage(R.drawable.stub_image)
        .showImageForEmptyUri(R.drawable.image_for_empty_url)
        .cacheInMemory()
        .cacheOnDisc()
        .build();

    imageAdapter = new ImageAdapter(this, imageUrls);
Run Code Online (Sandbox Code Playgroud)

从上面的代码我能够得到视频的路径,我怎样才能获得视频缩略图和视频持续时间.并在画廊中代表它

如果有自定义图库的项目有视频和图像的任何buit请发布我真正想要创建自定义图库的链接,以选择多个图像和视频文件.我在谷歌搜索了很多我发现自定义图库但没有视频请帮助我解决这个问题.

Ami*_*pta 5

您可以从Custom GridView中获取具有多个选项选项的想法.Github有一个开源项目.

https://github.com/paramvir-b/AndroidGridViewCompatLib

在此输入图像描述

在这个例子中你需要改变

 imageView.setImageResource(mThumbIds[position]);
Run Code Online (Sandbox Code Playgroud)

imageView.setImageURI(uri);// URI of Image from SD Card
Run Code Online (Sandbox Code Playgroud)

要么

 imageView.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)

对于视频: -

Video Thumbnail is in the form of Bitmap so you can show in ImageView.
private Bitmap bmThumbnail;
private ImageView videoview = null;
bmThumbnail = ThumbnailUtils.createVideoThumbnail(PATH_OF_THE_VIDEO,Thumbnails.MICRO_KIND);
videoview.setImageBitmap(bmThumbnail);
Run Code Online (Sandbox Code Playgroud)

获得持续时间: -

String[] proj = { MediaStore.Video.Media.DATA ,MediaStore.Video.Media.DURATION};
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
if (cursor == null)
    return null;
int column_index = cursor
        .getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
int column_index_duration = cursor
        .getColumnIndexOrThrow(MediaStore.Video.Media.DURATION);
cursor.moveToFirst();
long duration= cursor.getInt(column_index_duration);
String videoPath= cursor.getString(column_index);
Run Code Online (Sandbox Code Playgroud)