话不多说,直接贴核心代码:
/**
* 获取手机中所有视频的信息
*/
private void getAllVideoInfos() {
List<UploadMovieBean> sysVideoList = new ArrayList<>();
new Thread(() -> {
Uri mImageUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] proj = { MediaStore.Video.Thumbnails._ID
, MediaStore.Video.Thumbnails.DATA
,MediaStore.Video.Media.DURATION
,MediaStore.Video.Media.SIZE
,MediaStore.Video.Media.DISPLAY_NAME
,MediaStore.Video.Media.DATE_MODIFIED};
Cursor mCursor = getContext().getContentResolver().query(mImageUri,
proj,
MediaStore.Video.Media.MIME_TYPE + "=?",
new String[]{"video/mp4"},
MediaStore.Video.Media.DATE_MODIFIED+" desc");
if (mCursor!=null) {
while (mCursor.moveToNext()) {
// 获取视频的路径
int videoId = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Video.Media._ID));
String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Video.Media.DATA));
int duration = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Video.Media.DURATION));
long size = mCursor.getLong(mCursor.getColumnIndex(MediaStore.Video.Media.SIZE))/1024; //单位kb
if (size < 0) {
size = new File(path).length()/1024;
}
String displayName = mCursor.getString(mCursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME));
MediaStore.Video.Thumbnails.getThumbnail(getContext().getContentResolver(), videoId, MediaStore.Video.Thumbnails.MICRO_KIND, null);
String[] projection = { MediaStore.Video.Thumbnails._ID, MediaStore.Video.Thumbnails.DATA};
Cursor cursor = getContext().getContentResolver().query(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI
, projection
, MediaStore.Video.Thumbnails.VIDEO_ID + "=?"
, new String[]{String.valueOf(videoId)}
, null);
String thumbPath = "";
while (cursor.moveToNext()) {
thumbPath = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA));
}
cursor.close();
UploadMovieBean uploadMovieBean = new UploadMovieBean();
uploadMovieBean.setCover(thumbPath);
uploadMovieBean.setUrl(path);
uploadMovieBean.setTitle(displayName);
uploadMovieBean.setSeconds(duration);
uploadMovieBean.setSize(size);
sysVideoList.add(uploadMovieBean);
}
mCursor.close();
}
//更新界面
runOnUiThread(() -> {
uploadMovieBeans = sysVideoList;
mSelectMovieAdapter.setNewInstance(uploadMovieBeans);
});
}).start();
}