Android MediaScanner:(一)MediaScanner总体架构
2015-10-12 16:30
567 查看
田海立@csdn
本文是笔者的分析归纳,并用UML图(Class Diagram/Sequence Diagram)来呈现。虽然来源于对Android源码的分析,但文中不会占用大量篇幅罗列源码,所以读者在阅读本文时,手头最好有Android源码,结合源码来解读。本文讲述MediaScanner的架构。
MediaScanner是Android系统Media的基础,系统启动之初,就扫描出Media文件供后续使用,有新媒体加入或者删除掉媒体文件,也需要更新相应的媒体库。Android的Music、Gallery等播放或呈现媒体文件的程序也都基于稳定的MediaScanner扫描媒体文件的结果,否则,会发现程序操作的Media文件的URI根本不是实际对应的Media文件,或者甚至来电铃声和闹铃等都会有问题。
MediaScanner位于packages/providers/MediaProvider下,包含MediaScannerReceiver、MediaScannerService以及MediaProvider。
下图是packages/providers/MediaProvider下的AndroidManifest的内容:
MediaScannerReceiver是一个BroadcastReceiver,接收广播,进行媒体扫描,这也是MediaScanner提供给外界的接口之一。收到广播之后启动MediaScannerService具体执行扫描工作。
MediaScannerService是一个Service,负责媒体扫描,它还要用到Framework中的MediaScanner来共同完成具体扫描工作,扫描的结果在MediaProvider提供的数据库中。
MediaProvider是一个ContentProvider,媒体库(Images/Audio/Video/Playlist等)的数据提供者。负责操作数据库,并提供给别的程序insert、query、delete、update等操作。
另外,IMediaScannerService和IMediaScannerListenter这两个Interface提供给其他程序通过AIDLIPC调用扫描单个文件的能力。定义在framework中,Service中实现接口。
下面针对MediaScanner中的各个部分,分别讲解:
Android MediaScanner:(一)MediaScanner总体架构
讲述MediaScanner的架构。
Android MediaScanner:(二)MediaScannerReceiver
讲述MediaScannerReceiver针对来自Broadcast的不同请求所做的处理。
Android MediaScanner:(三)MediaScannerService
对MediaScannerService的类结构进行静态分析,对创建时和启动时的工作进行动态分析,分析过程中来看MediaScannerService如何处理MediaScannerReceiver所接收到的各种扫描请求。
Android MediaScanner:(四)MediaScanner之scanSingleFile
本文从MediaScannerService的scanFile入口开始,详细分析MediaScanner和MediaScannerClient对单个媒体文件的扫描处理过程。
Android MediaScanner:(五)MediaScanner之scanDirectories
Android MediaScanner:(六)MediaScanner之Native实现
Android MediaScanner:(七)MediaScanner完整过程总结
Android MediaScanner:(八)IMediaScannerService接口实现
本文是笔者的分析归纳,并用UML图(Class Diagram/Sequence Diagram)来呈现。虽然来源于对Android源码的分析,但文中不会占用大量篇幅罗列源码,所以读者在阅读本文时,手头最好有Android源码,结合源码来解读。本文讲述MediaScanner的架构。
MediaScanner是Android系统Media的基础,系统启动之初,就扫描出Media文件供后续使用,有新媒体加入或者删除掉媒体文件,也需要更新相应的媒体库。Android的Music、Gallery等播放或呈现媒体文件的程序也都基于稳定的MediaScanner扫描媒体文件的结果,否则,会发现程序操作的Media文件的URI根本不是实际对应的Media文件,或者甚至来电铃声和闹铃等都会有问题。
MediaScanner位于packages/providers/MediaProvider下,包含MediaScannerReceiver、MediaScannerService以及MediaProvider。
下图是packages/providers/MediaProvider下的AndroidManifest的内容:
MediaScannerReceiver是一个BroadcastReceiver,接收广播,进行媒体扫描,这也是MediaScanner提供给外界的接口之一。收到广播之后启动MediaScannerService具体执行扫描工作。
MediaScannerService是一个Service,负责媒体扫描,它还要用到Framework中的MediaScanner来共同完成具体扫描工作,扫描的结果在MediaProvider提供的数据库中。
MediaProvider是一个ContentProvider,媒体库(Images/Audio/Video/Playlist等)的数据提供者。负责操作数据库,并提供给别的程序insert、query、delete、update等操作。
另外,IMediaScannerService和IMediaScannerListenter这两个Interface提供给其他程序通过AIDLIPC调用扫描单个文件的能力。定义在framework中,Service中实现接口。
下面针对MediaScanner中的各个部分,分别讲解:
Android MediaScanner:(一)MediaScanner总体架构
讲述MediaScanner的架构。
Android MediaScanner:(二)MediaScannerReceiver
讲述MediaScannerReceiver针对来自Broadcast的不同请求所做的处理。
Android MediaScanner:(三)MediaScannerService
对MediaScannerService的类结构进行静态分析,对创建时和启动时的工作进行动态分析,分析过程中来看MediaScannerService如何处理MediaScannerReceiver所接收到的各种扫描请求。
Android MediaScanner:(四)MediaScanner之scanSingleFile
本文从MediaScannerService的scanFile入口开始,详细分析MediaScanner和MediaScannerClient对单个媒体文件的扫描处理过程。
Android MediaScanner:(五)MediaScanner之scanDirectories
Android MediaScanner:(六)MediaScanner之Native实现
Android MediaScanner:(七)MediaScanner完整过程总结
Android MediaScanner:(八)IMediaScannerService接口实现
相关文章推荐
- 【jmeter】jmeter测试网站QPS
- 优秀网站收集
- 002-Impala架构
- 015-Storm计算网站UV(去重计算模式)
- 网站网页中加入各种分享按钮功能 百度分享
- iis上面部署网站
- java常用的网站
- 国内外多个地点检测网站
- ssiOS应用架构谈 本地持久化方案及动态部署
- android学习网站
- 手机网站支付宝配置
- DSP .c 和.h文件架构
- 软件架构设计-五视图方法论
- KeyStone 架构DSP C66x系列高端研发平台
- 2015年网站设计我们将看到这十大趋势
- 014-案例开发.Storm计算网站PV
- 推荐一个国内编程语言排名网站
- Java线程池架构原理和源码解析(ThreadPoolExecutor)
- 简易的抓取别人网站内容
- 构建高并发高可用的电商平台架构实践