Android下媒体库的实现
2010-09-17 17:28
267 查看
转:Android下媒体库的实现
作者:jl 在Android下面,媒体库是以ContentProvider来实现的,所谓媒体库,这里并不是资源管理器,而是一个多媒体的文件的管理,多媒体文件包含很多的信息,如作者、年份、专辑、封面等等,在Android下面,这个Provider的实现是在 frameworks/base/core/java/android/provider/MediaStore.java packages/providers/MediaProvider/src/com/android/providers/media. frameworks/base/media/java/android/media/MediaScanner* frameworks/base/media/jni/android_media_* 这个下面的,具体媒体文件的识别是在 external/opencore/android/mediascanner.cpp 并且为了便于手动控制什么时候去扫描媒体文件,以及得到扫描的消息,这里还要有两个东东,一个是 MediaScannerReceiver,另外一个是 MediaScannerService。他们之间的关系如下: 当 有ACTION_BOOT_COMPLETED, ACTION_MEDIA_MOUNTED 或者ACTION_MEDIA_SCANNER_SCAN_FILE intent 请求的的时候,我们的Service就会启动。但是它会花费很长的时间去扫描文件,因而这是一个异步的过程,存在一个receiver,扫描的地方有两个:外部存储设备和/root/media这两个地方。 /* Audio */ addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg"); addFileType("M4A", FILE_TYPE_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("MID", 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"); 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, "video/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", FILE_TYPE_WBMP, "image/vnd.wap.wbmp"); /* Audio Play List */ addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl"); addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls"); addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl"); 具体的如何解析可以参见mediascanner.cpp的代码。 |
相关文章推荐
- android之媒体硬解OMX的实现
- 【Android】媒体——利用MediaPlayer实现对讲语音播放
- Android应用中使用及实现系统“分享”功能(多个文件,多种媒体格式触发)
- Android下媒体库的实现
- Android媒体文件metadata是如何实现跟解码器结合获取的
- Android媒体文件metadata是如何实现跟解码器结合获取的
- android 媒体OMX的实现(硬解码)
- 转:Android下媒体库的实现
- Android 媒体键监听以及模拟媒体键盘的实现 demo
- 微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案
- android之媒体硬解OMX的实现
- 【手机变身无线音箱-WIFI流媒体传输】--音乐在PC和手机间双向播放-详解Android DLNA使用-使用DLNA实现不同设备间媒体共享
- Android cookieManager & OKHttp以及EasyPlayerPro的媒体流的认证的实现
- android之媒体硬解OMX的实现
- 【Android】媒体——利用MediaRecorder实现录音对讲功能
- android之媒体硬解OMX的实现
- Android CMake轻松实现基于OpenSSL的HmacSHA1签名
- android Fragments详解三:实现Fragment的界面
- android GridView 拖拽Item及滚屏实现
- Android 百度地图-实现POI的搜索(搜索周边)