获取手机中的视频

安卓自身带有内容解析者,只要将查询的参数写对,就可以获取所有的视频文件了。

先写个实体类,用于保存视频的信息

    public class VideoInfo{
        public String name;//视频文件名
        public long size;//视频大小
        public long durantion;//视频长度
        public String url;//视频路径

        @Override
        public String toString() {
            return "VideoInfo{" +
                    "name='" + name + '\'' +
                    ", size=" + size +
                    ", durantion=" + durantion +
                    ", url='" + url + '\'' +
                    '}';
        }
    }

然后写个查询条件
        String limit[] = {
                MediaStore.Video.Media.DISPLAY_NAME,//视频名称
                MediaStore.Video.Media.SIZE,//大小
                MediaStore.Video.Media.DURATION,//长度
                MediaStore.Video.Media.DATA,//播放地址
        };
再用一个List来保存所有视频

List<VideoInfo> list = new ArrayList<>();
最后调用内容提供者来获取视频信息,之前最好判断一下SD卡是否挂载了

        ContentResolver cr = getContentResolver();
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//sd卡已挂载
            Cursor cursor = cr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,limit,null,null,null);
            while (cursor.moveToNext()){
                VideoInfo video = new VideoInfo();
                video.name = cursor.getString(0);
                video.size = cursor.getLong(1);
                video.durantion = cursor.getLong(2);
                video.url = cursor.getString(3);
                list.add(video);
            }
        }

下面是我的测试结果:

 手机中的视频信息:[VideoInfo{name='VID_20161002_183641.mp4', size=3009357, durantion=2581, url='/storage/emulated/0/DCIM/Camera/VID_20161002_183641.mp4'},
 VideoInfo{name='VID_20161003_110003.mp4', size=73749429, durantion=72555, url='/storage/emulated/0/DCIM/Camera/VID_20161003_110003.mp4'}, VideoInfo{name='
VID_20161005_082642.mp4', size=81869598, durantion=80661, url='/storage/emulated/0/DCIM/Camera/VID_20161005_082642.mp4'}, VideoInfo{name='test.mp4', size=
17918237, durantion=259181, url='/storage/emulated/0/storage/emulated/0/test.mp4'}]


所有视频都获取到了。这样的方式只能获取非其他APP内部视频以外的所有视频文件,其他APP沙盘下面的文件的话,只能用别的方式获取到了。



猜你喜欢

转载自blog.csdn.net/shirakawakanaki/article/details/52859062