资源描述:
《android编程之多媒体扫描过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、DownloadsByhttp://www.veryhuo.comAndroid多媒体扫描过程(AndroidMediaScannerProcess)下面是系统图MediaScannerReceiver会在任何的ACTION_BOOT_COMPLETED,ACTION_MEDIA_MOUNTED或ACTION_MEDIA_SCANNER_SCAN_FILE意图(intent)发出的时候启动。因为解析媒体文件的元数据或许会需要很长时间,所以MediaScannerReceiver会启动MediaScannerService。MediaScanner
2、Service调用一个公用类MediaScanner去处理真正的工作。MediaScannerReceiver维持两种扫描目录:一种是内部卷(internalvolume)指向$(ANDROID_ROOT)/media.另一种是外部卷(externalvolume)指向$(EXTERNAL_STORAGE).扫描和解析工作位于JAVA层和C++层。JAVA层是启动器。MediaScanner扫描所有目录,如下步骤:1.JAVA层初始化在这一步骤中,它会根据目录是在内部卷还是外部卷打开不同的数据库。2.Java层预扫描首先清除文件和播放列表的缓存条
3、目。然后根据MediaProvider返回的请求结果生成新文件和播放列表缓存条目。3.C++层处理目录列举出所有文件和特定的所有子目录(如果子目录包含一个.nomedia隐藏文件,则不会被列举出来。)。被列举的文件是根据文件扩展来判断文件是否被支持。如果支持这种文件扩展,C++层就会回调到JAVA层扫描文件。这种扩展就会被扫描到MediaFile.java中列出。下面是支持的文件扩展列表。/*Audio*/addFileType("MP3",FILE_TYPE_MP3,"audio/mpeg");addFileType("M4A",FILE_TY
4、PE_M4A,"audio/mp4");addFileType("WAV",FILE_TYPE_WAV,"audio/x-wav");addFileType("AMR",FILE_TYPE_AMR,"audio/amr");addFileType("AWB",FILE_TYPE_AWB,"audio/amr-wb");addFileType("WMA",FILE_TYPE_WMA,"audio/x-ms-wma");addFileType("OGG",FILE_TYPE_OGG,"application/ogg");addFileType("MI
5、D",FILE_TYPE_MID,"audio/midi");addFileType("XMF",FILE_TYPE_MID,"audio/midi");addFileType("RTTTL",FILE_TYPE_MID,"audio/midi");addFileType("SMF",FILE_TYPE_SMF,"audio/sp-midi");addFileType("IMY",FILE_TYPE_IMY,"audio/imelody");/*Video*/addFileType("MP4",FILE_TYPE_MP4,"video/mp4")
6、;addFileType("M4V",FILE_TYPE_M4V,"video/mp4");addFileType("3GP",FILE_TYPE_3GPP,"video/3gpp");addFileType("3GPP",FILE_TYPE_3GPP,"video/3gpp");addFileType("3G2",FILE_TYPE_3GPP2,"video/3gpp2");addFileType("3GPP2",FILE_TYPE_3GPP2,"video/3gpp2");addFileType("WMV",FILE_TYPE_WMV,"vi
7、deo/x-ms-wmv");/*Image*/addFileType("JPG",FILE_TYPE_JPEG,"image/jpeg");addFileType("JPEG",FILE_TYPE_JPEG,"image/jpeg");addFileType("GIF",FILE_TYPE_GIF,"image/gif");addFileType("PNG",FILE_TYPE_PNG,"image/png");addFileType("BMP",FILE_TYPE_BMP,"image/x-ms-bmp");addFileType("WBMP
8、",FILE_TYPE_WBMP,"image/vnd.wap.wbmp");/*AudioPlayList*/addFileType(