先看圖:
giphy.gif
1.獲取本地視頻文件路徑,也是最關(guān)鍵步驟肚菠。
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內(nèi)部類所管理的文件類型舔箭。
- MediaStore.Audio 是所有音頻文件的容器
- MediaStore.Files 多媒體存儲中所有文件的索引
- MediaStore.Images 包含所有可用圖片的元數(shù)據(jù)。
- MediaStore.Video包含視頻文件的元數(shù)據(jù)蚊逢,并提供相應(yīng)字段和方法层扶。
- MediaStore.Video.Media提供和獲取視頻文件的Uri,繼承VideoColumns
- MediaStore.Video.Thumbnails這個類讓開發(fā)者去查詢并且得到兩種略縮圖:MINI_KIND: 512 x 384 thumbnail MICRO_KIND: 96 x 96 thumbnail
- MediaStore.Video.VideoColumns代表所有視頻文件的列
2.將秒鐘的時間轉(zhuǎn)為分:秒的顯示格式烙荷。除以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);