转于:http://my.oschina.net/AlexZhuang/blog/57695
------------------------------------------------------------------------
android系统启动时会去扫描系统文件,并将系统支持的视频文件(mp4,3gp,wmv)扫描到媒体库(MediaStore)中,下面代码演示如何获得这些文件的信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
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());
}
}
|
有一点需要注意的是:系统的媒体库并不会在我们添加视频文件后自动更新,我们如何去手动扫描媒体库,或者重启系统才能从媒体库中得到更新的视频文件:
1
2
|
sendBroadcast( new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse( "file://" + Environment.getExternalStorageDirectory())));
|
相关推荐
在Android平台上,开发一个应用程序来扫描USB设备中的音视频文件并进行播放,涉及到多个关键知识点。这个项目"android usb扫描音视频,并播放"是基于最新的Android Studio 2021.3.1版本构建的,这表明它利用了最新的...
此外,Android API 19及以上版本提供了`MediaScannerConnection`类,它可以扫描媒体库中的视频文件,这样可以更快地获取到视频信息,但要注意权限问题。 在获取到视频文件后,我们还需要提取视频的元数据,如缩略图...
Android多媒体扫描框架,即Media Scanner,是Android系统中用于检测和处理媒体文件(如音频、视频和图片)的重要组件。当设备启动、媒体设备挂载或接收到特定广播意图时,MediaScannerReceiver会被触发,进而启动...
当有新的多媒体文件被创建或修改时,Android系统需要将这些变化反映到媒体库中,这就涉及到了多媒体文件的扫描机制。 `MediaScannerReceiver`是这一过程的关键组件。它是一个BroadcastReceiver,监听特定的意图...
Android 媒体库框架(MediaScanner)是 Android 平台上的一种媒体文件管理机制,旨在提供一个统一的媒体文件管理方式,帮助用户快速地浏览和管理媒体文件。 媒体文件管理机制 在桌面系统上,媒体文件通常呈树状...
本文将详细介绍如何利用Android系统自带的工具来查找并打开不同类型的文件,同时解决媒体库文件不全的问题。 一、Android文件系统概述 Android系统的文件组织结构基于Linux,主要分为内部存储和外部存储两部分。...
7. **适配多种Android版本**:为了兼容不同版本的Android系统,你可能需要使用支持库,如`androidx`库的`RecyclerView`,并且在代码中使用`Build.VERSION.SDK_INT`进行条件判断,针对不同版本采用不同的实现方式。...
在Android开发中,当涉及到用户在外部存储(如SD卡)上创建、修改或删除多媒体文件时,确保这些更改能够及时反映在系统媒体库中是非常重要的。本文将深入探讨Android媒体库数据更新的方法,以便应用能正确显示新添加...
在Android中,媒体扫描是将新添加或修改的媒体文件(如图片和视频)通知到系统媒体库的过程。使用`MediaScannerConnection`类的`scanFile()`方法可以将文件添加到媒体库。这样,系统相册应用就能立即看到这些新文件...
4. 相册和媒体库:提供媒体文件的存储和检索功能,使得应用能够访问和管理用户媒体库。 5. 多媒体文件格式和编解码器:定义了Android系统支持的多媒体文件格式,以及如何使用编解码器来处理这些格式。 通过这份...
在Android系统中,多媒体扫描过程是一个关键的组件,它负责识别和处理设备上的音频、视频和图像文件。这个过程涉及到多个层次的交互,包括BroadcastReceiver、Service和JNI层的配合。下面将详细解释这一过程: 1. *...
9. **媒体扫描**:Android系统会定期扫描存储设备以构建媒体库,文件管理器可能会有选项来触发即时扫描,确保新添加的音乐、图片或视频能立即出现在对应的媒体应用中。 10. **安全和隐私**:文件管理器可能还包括...
- MediaFile.java文件定义了支持的文件类型,当遇到这些类型的文件时,Android系统会读取元数据,如艺术家、专辑、长度等,并将这些信息存储到数据库中。 - 扫描完成后,这些信息会被更新到系统的媒体库,供用户...
在Android系统中,多媒体开发涵盖音频、视频、图像处理等多个方面。本书可能涵盖了以下关键知识点: 1. **多媒体框架**:Android多媒体框架包括MediaPlayer、AudioTrack、AudioRecord、SurfaceView等组件,用于播放...
MediaScanner是Android系统的一个组件,它负责扫描设备上的媒体文件(包括音频、视频和图片),并将这些文件的信息更新到系统的媒体数据库中。系统在启动时会自动执行这个扫描过程,以便用户能够通过媒体库访问这些...
在Android系统中,源码是理解其工作原理和进行定制化开发的关键。本主题主要探讨的是Android系统的几个关键模块的源码,包括音乐播放器、BasicSmsReceiver、Bluetooth、VideoEditor、Phone、Camera以及Gallery。这些...
扫描视频文件通常是指在指定的目录或存储介质中搜索符合特定格式(如MP4、AVI、MKV等)的视频文件。这个过程涉及文件系统的操作,例如遍历文件夹结构,通过文件扩展名来识别视频文件。在编程中,我们可以使用各种...
`MediaScannerConnection`类可用于扫描新的或更新的媒体文件,并将其添加到系统的媒体库中。这样,你可以通过`MediaStore`接口查询这些文件,获取它们的元数据,如标题、艺术家、长度等。 播放多媒体文件,可以利用...
2. 通过`MediaScannerConnection`扫描新视频,使其立即可被系统媒体库识别。 3. 使用`VideoView`或`ExoPlayer`播放本地视频。 在实际开发中,还需要注意权限管理,例如`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_...