Android MediaScanner:(一)MediaScanner总体架构
2012-05-19
本文是笔者的分析归纳,并用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接口实现
Android MediaScanner:(一)MediaScanner总体架构的更多相关文章
- Android系统的安全设计与架构
Android系统的安全设计与架构 一.安全策略 1.Android 的总体架构由5个主要层次上的组件构成,这5层是:Android应用层. Android框架层.Dalvik虚拟机层.用户空间原生代 ...
- jQuery总体架构
第一章 总体架构 1.设计理念 jQuery的理念就是“写更少的代码,做更多的事”,而且做到代码的高度兼容性. 2.总体架构 大致可以分为三个部分:构造模块,底层支持模块和功能模块. 3.使用自调用 ...
- [转]新型智慧城市总体架构 华为 新ICT 一云二网三平台
本文转自:http://www.jpsycn.com/hangyexinwen/20160801142354.html “十三五”规划提出,充分运用现代信息技术和大数据,建设一批新型示范性智慧城市.日 ...
- Openvswitch原理与代码分析(1):总体架构
一.Opevswitch总体架构 Openvswitch的架构网上有如下的图表示: 每个模块都有不同的功能 ovs-vswitchd 为主要模块,实现交换机的守护进程daemon ...
- jQuery源码分析-01总体架构
1. 总体架构 1.1自调用匿名函数 self-invoking anonymous function 打开jQuery源码,首先你会看到这样的代码结构: (function( window, und ...
- 转: Android 后台任务型App多进程架构演化
评注:android 后台分进程保活方式的实践 Android 后台任务型App多进程架构演化 字数1621 阅读2790 评论8 喜欢35 什么是后台任务型app 类似音乐.录音机,需要用户长时间在 ...
- 在Android应用中使用Clean架构
自从开始开发安卓应用,我一直感觉我可以做得更好.我看过不少烂代码,其中当然有我写的.安卓系统的复杂性加上烂代码势必酿成灾祸,所以从错误中成长就很重要.我Google了如何更好地开发应用,发现了这个叫做 ...
- 转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
- Apache Mesos总体架构
http://developer.51cto.com/art/201401/426507.htm 1. 前言 同其他大部分分布式系统一样,Apache Mesos为了简化设计,也是采用了master/ ...
随机推荐
- Linux基础命令---压缩与打包
GZIP: 普通文件打包成gzip文件:gzip filename(问题:如何测试一个文件是否是gzip文件?) gzip文件解压成普通文件:gzip -d filename(副作用:原始gz文件会被 ...
- 【记录】ACM计划
ACM进阶计划ACM队不是为了一场比赛而存在的,为的是队员的整体提高.大学期间,ACM队队员必须要学好的课程有:lC/C++两种语言l高等数学l线性代数l数据结构l离散数学l数据库原理l操作系统原理l ...
- 状压dp Codeforces Beta Round #8 C
http://codeforces.com/contest/8/problem/C 题目大意:给你一个坐标系,给你一个人的目前的坐标(该坐标也是垃圾桶的坐标),再给你n个垃圾的坐标,这个人要捡完所有的 ...
- 国内的cdn
测试了一下,百度的非常快 ----------------------------------------------------------------------- 原文:https://www. ...
- group_concat()函数总结
group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组, ...
- PHP商品倒计时 php实现当前用户在线人数
//PHP商品倒计时 date_default_timezone_set("Asia/shanghai");//地区 //配置每天的活动时间段 $starttimestr = &q ...
- Linux标准目录
本文参考鸟哥的linux私房菜 /bin 获得最小的系统可操作性所需要的命令 /boot 内核和加载内核所需要的文件 /dev 终端.磁盘.调制解调器等的设备项 /etc 关键的启动文件和配置文件 / ...
- jquer 带左右按钮滚动图片 点击显示大图
<style> ul{ list-style:none; padding:0px; margin:0px;} li{ list-style:none; padding:0px; margi ...
- HUD 1541/BIT(数状数组)
题目链接 /* 按从左到右,从下到上的顺序给出星星的坐标,计算出level为[0,n)的星星的个数. 星星的level为该星星左下边(包括自己正下方的星星,但是不包括自己)星星的个数. BIT模板题. ...
- BCDBOOT命令参数介绍
BCDboot 命令行选项 更新时间: 2013年10月 应用到: Windows 8, Windows 8.1, Windows Server 2012, Windows Server 2012 R ...