先看图:
giphy.gif
1.获取本地视频文件路径,也是最关键步骤。
public List<LocalVideoBean> getList(Context context) { List<LocalVideoBean> sysVideoList = new ArrayList<>(); // MediaStore.Video.Thumbnails.DATA:视频缩略图的文件路径 String[] thumbColumns = {MediaStore.Video.Thumbnails.DATA, MediaStore.Video.Thumbnails.VIDEO_ID}; // 视频其他信息的查询条件 String[] mediaColumns = {MediaStore.Video.Media._ID, MediaStore.Video.Media.DATA, MediaStore.Video.Media.DURATION}; Cursor cursor = context.getContentResolver().query(MediaStore.Video.Media .EXTERNAL_CONTENT_URI, mediaColumns, null, null, null); if (cursor == null) { return sysVideoList; } if (cursor.moveToFirst()) { do { LocalVideoBean info = new LocalVideoBean(); info.setPath(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media .DATA))); info.setDuration(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video .Media.DURATION))); sysVideoList.add(info); } while (cursor.moveToNext()); } return sysVideoList; }
MediaStore内部类所管理的文件类型。
- MediaStore.Audio 是所有音频文件的容器
- MediaStore.Files 多媒体存储中所有文件的索引
- MediaStore.Images 包含所有可用图片的元数据。
- MediaStore.Video包含视频文件的元数据,并提供相应字段和方法。
- MediaStore.Video.Media提供和获取视频文件的Uri,继承VideoColumns
- MediaStore.Video.Thumbnails这个类让开发者去查询并且得到两种略缩图:MINI_KIND: 512 x 384 thumbnail MICRO_KIND: 96 x 96 thumbnail
- MediaStore.Video.VideoColumns代表所有视频文件的列
2.将秒钟的时间转为分:秒的显示格式。除以60得到分钟,取余60得到秒钟。各自除以10得到十位,取余10得到个位,连接起来就成了"00:00"的表示。
public static String parseTime(int seconds) { StringBuilder stringBuilder = new StringBuilder(); int min = seconds / 60; int sec = seconds % 60; int minHeigh = min / 10; int minLow = min % 10; int secHeight = sec / 10; int secLow = sec % 10; stringBuilder.append(minHeigh).append(minLow).append(":").append(secHeight).append(secLow); return stringBuilder.toString(); }
3.封面的显示我采用的是glide,直接传入视频路径可加载到封面图。显示的Imageview我才用的宽高相同的SquareImageview。
Glide.with(getApplicationContext()).load(localVideoBean.getPath()).into(ivCover);
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。