问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何扫描出Android系统媒体库中视频文件

发布网友 发布时间:2022-04-23 08:59

我来回答

1个回答

热心网友 时间:2022-06-18 18:16

android系统启动时会去扫描系统文件,并将系统支持的视频文件(mp4,3gp,wmv)扫描到媒体库(MediaStore)中,下面代码演示如何获得这些文件的信息:
public static List<VideoInfo> sysVideoList = null;// 视频信息集合
sysVideoList = new ArrayList<VideoInfo>();
setVideoList();

private void setVideoList() {
// MediaStore.Video.Thumbnails.DATA:视频缩略图的文件路径
String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,
MediaStore.Video.Thumbnails.VIDEO_ID };

// MediaStore.Video.Media.DATA:视频文件路径;
// MediaStore.Video.Media.DISPLAY_NAME : 视频文件名,如 testVideo.mp4
// MediaStore.Video.Media.TITLE: 视频标题 : testVideo
String[] mediaColumns = { MediaStore.Video.Media._ID,
MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE,
MediaStore.Video.Media.MIME_TYPE,
MediaStore.Video.Media.DISPLAY_NAME };

cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
mediaColumns, null, null, null);

if(cursor==null){
Toast.makeText(SystemVideoChooseActivity.this, "没有找到可播放视频文件", 1).show();
return;
}
if (cursor.moveToFirst()) {
do {
VideoInfo info = new VideoInfo();
int id = cursor.getInt(cursor
.getColumnIndex(MediaStore.Video.Media._ID));
Cursor thumbCursor = managedQuery(
MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID
+ "=" + id, null, null);
if (thumbCursor.moveToFirst()) {
info.setThumbPath(thumbCursor.getString(thumbCursor
.getColumnIndex(MediaStore.Video.Thumbnails.DATA)));
}
info.setPath(cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)));
info.setTitle(cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)));

info.setDisplayName(cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)));
LogUtil.log(TAG, "DisplayName:"+info.getDisplayName());
info.setMimeType(cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)));

sysVideoList.add(info);
} while (cursor.moveToNext());
}
}

有一点需要注意的是:系统的媒体库并不会在我们添加视频文件后自动更新,我们如何去手动扫描媒体库,或者重启系统才能从媒体库中得到更新的视频文件:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...每次文字比较多超出屏幕大小就不知道怎么截屏,求教大佬! 我国政策性 广西明士清医疗器械有限公司怎么样? 广西禾力药业有限公司怎么样? 广西龙母圣商贸有限公司怎么样? 安徽合肥有什么去痔的好地方 我女朋友的谷丙转氨酶过高(达到121),而且两对半检测为阴性,是肝功能有... 泸州丽人女子医院开展科室 自由之子本次世界杯是否将在小组赛中被菜? 世界杯谁会嬴 肉食动物大木年龄 脱口秀大会第四季第三期谁淘汰了 关于安卓文档扫描,有什么APP做的还不错的? 肉食动物组合大木是什么设计师? 什么安卓扫描软件是比较好用的啊? 脱口秀大会第四季排名 李诞为何力推漫才? 如何Android中加入扫描名片功能 脱口秀大会4决赛名单 安卓手机如何进行安全扫描? 脱口秀大会漫才大木怎么了 肉食动物总决赛为什么一个人 《脱口秀大会4》完结,周奇墨拿下冠军奖杯,你觉得谁是你的意难平? 《脱口秀大会4》 七强正式诞生,都有哪些选手顺利晋级? 肉食动物大木为什么没参加决赛? 《脱口秀大会》肉食动物大木为什么没参加决赛? 长春市在哪里啊? 长春公交专用道限制时间 元宵节的由来是什么 元宵节的习俗大盘点 关于长春的知识 安卓手机怎么扫描图片? 脱口秀大会 大木怎么了 如何评价李诞在《脱口秀大会》第四季的表现? android编程中,如何实现对全盘文件的扫描? 吃肉的动物有哪些? Android 二维码扫描怎样实现第二次重复扫描 食肉动物有哪些? android手机怎么做一维码扫描,要获取到扫描的信息!(两个点:一个扫描,一个获取信息) 肉食性动物、杂食性动物和草食性动物有哪些? 肉食动物有哪些 vf控制和矢量控制的区别 TikTok要贱卖美国,这真的是TikTok最好的归宿了吗? 谁能给我说30种肉食动物?30种食草动物?40种杂食动物?急急急急1!!!!!!!! 字节跳动已提交许可申请,这意味着什么? 中方宁愿TikTok关停美国业务,字节跳动如何回应? TikTok对那些不实的传言都有何表示? 关于TikTok时间的来龙去脉,大家能不能详细说一下? TikTok要求竞购方出资300亿美元? 媒体报道字节跳动同意剥离 TikTok 美国业务,这意味着什么? 字节跳动或分拆TikTok为美国公司是怎么回事?