1.概述
多媒体系统,是Android平台中非常庞大的一个系统.MediaScanner是多媒体系统中重要的一员, MediaScanner和媒体文件扫描有关,例如,在music应用程序中见到的歌曲专辑名、歌曲时长等信息, 都是通过它扫描对应的歌曲而得到。
2. android.process.media分析
媒体扫描功能是通过一个APK实现的,它位于packages/providers/MediaProvider目录下,通过APK的AndroidManifest.xml文件可知,该APK运行时定义了一个进程名,如下:
application android:process="android.process.media"
从Android应用程序的四大组件来看,它使用了三个组件:
- MediaScannerService(从Service派生)模块负责扫描媒体文件,然后将扫描的信息插入数据库。
- MediaProvider(从ContentProvider派生)模块负责处理针对这些媒体文件的数据库操作请求,例如查询、删除、更新等
- MediaScannerReceiver(从BroadcastReceiver派生)模块负责接收外界发来的扫描请求,是MS对外的接口。
3. MSR模块分析
MSR的核心是MediaScannerReceiver,从BroadcastReceiver派生,专门用于接收广播,其代码如下:
public class MediaScannerReceiver extends BroadcastReceiver {