android 获取video列表和缩略图 亲测()

本文介绍如何在Android应用中获取视频列表及其缩略图,通过关键代码展示实现过程,适用于需要显示视频信息的场景。推荐使用开源库MultiImageSelector进行适配。

废话不多说,有效果图:



由于时间关系,只贴出获得video 数据的代码,请自行去做适配gridview 的工作 (红色字体是关键点)

  class MyRunnable implements Runnable {

        @Override
        public void run() {


            final String[] COLUMNS = {
                    MediaStore.Video.Media._ID,
                    MediaStore.Video.Media.DISPLAY_NAME,
                    MediaStore.Video.Media.DATE_ADDED,
                    MediaStore.Video.Media.DATA,
                    MediaStore.Video.Media.WIDTH,
                    MediaStore.Video.Media.HEIGHT,
                    MediaStore.Video.Media.DURATION,
                    MediaStore.Video.Media.SIZE
            };
            final String[] TNUMB_COLUMNS = {
                    MediaStore.Video.Thumbnails.DATA,
                    MediaStore.Video.Thumbnails.VIDEO_ID
            };
            Cursor data = getActivity().getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, COLUMNS,
                    null, null, COLUMNS[2] + " DESC");
            List<ViewNewSelectBean> images = new ArrayList<>();
            int count = data.getCount();
            if (count > 0) {
                data.moveToFirst();
                do {
                    ViewNewSelectBean image = new ViewNewSelectBean();//<span style="color:#ff0000;">储存数据的bean</span>
                    long id = data.getLong(data.getColumnIndexOrThrow(COLUMNS[0]));
                    image.set_id(id);
                    String name = data.getString(data.getColumnIndexOrThrow(COLUMNS[1]));
                    image.setName(name);
                    long dateTime = data.getLong(data.getColumnIndexOrThrow(COLUMNS[2]));
                    image.setDataTime(dateTime);
                    String path = data.getString(data.getColumnIndexOrThrow(COLUMNS[3]));
                    image.setPath(path);
                    int width = data.getInt(data.getColumnIndexOrThrow(COLUMNS[4]));// 视频宽
                    image.setWidth(width);
                    int height = data.getInt(data.getColumnIndexOrThrow(COLUMNS[5]));// 视频高
                    image.setHeight(height);
                    long duration = data.getLong(data.getColumnIndexOrThrow(COLUMNS[6]));// 时长
                    image.setDuration(duration);
                    long size = data.getLong(data.getColumnIndexOrThrow(COLUMNS[7]));
                    image.setSize(size);
                  <span style="color:#ff0000;">  //缩略图地址</span>
                    Cursor thumbCursor = getActivity().getContentResolver().query(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, TNUMB_COLUMNS,MediaStore.Video.Thumbnails.VIDEO_ID + "="+id,null,null );
                    if(thumbCursor.moveToFirst()){
                        String thumbPath = thumbCursor.getString(thumbCursor.getColumnIndexOrThrow( MediaStore.Video.Thumbnails.DATA));
                        image.setThumbPath(thumbPath);
                    }

                    images.add(image);
                } while (data.moveToNext());
                Message msg = new Message();
                msg.obj = images;
                msg.what = 110;
                h.sendMessage(msg);<span style="color:#cc0000;">//数据搞完了  交给handler处理</span>
            }
        }
    }

注: 此图处于重口味修改 开源库:

MultiImageSelector

原库只能多选图片,由于工作需要,被我修改成了图片和视频混合多选的了。具体过程,如有需求,我会在后期补上。谢谢



评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值