欢迎来到天天文库
浏览记录
ID:34540477
大小:51.17 KB
页数:6页
时间:2019-03-07
《关于mediaprovider的修改说明dy》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于多媒体数据库的解析及修改说明――邓勇主要涉及文件:packagesprovidersMediaProvidersrccomandroidprovidersmediaMediaScannerReceiver.java负责接收广播,并启动MediaScannerService。packagesprovidersMediaProvidersrccomandroidprovidersmediaMediaScannerService.java后台服务进程,根据MediaSc
2、annerReceiver的请求参数调用MediaScanner相关方法扫描对应的目录或文件,在对目录扫描开始及结束时都会发出相应的广播以便上层应用更新界面显示。frameworksbasemediajavaandroidmediaMediaScanner.java工具类,定义一系列对文件进行扫描处理的方法,调用native方法解析文件。frameworksbasemediajavaandroidmediaMediaFile.java工具类,主要定义平台支持的多媒体文件类型。
3、frameworksbasecorejavaandroidproviderMediaStore.java工具类,主要定义几大媒体类型(Image,Audio,Video)的Uri及相关方法。packagesprovidersMediaProvidersrccomandroidprovidersmediaMediaProvider.java多媒体数据库,定义对多媒体数据库中所有表的操作方式(增删改查)。externalopencoreandroidmediascan
4、ner.cpp文件处理类,主要解析文件,获取文件属性。流程简单描述:MediaScannerReceiver接收到系统广播后启动MediaScannerService创建进程,创建MediaScanner对象,MediaScanner.java再调用mediascanner.cpp本地方法递归解析文件返回音视频时长、作者等信息,然后将这些信息存入多媒体数据库以便多媒体模块获取。扫描流程图:多媒体数据库修改说明:1.修改背景1)G1只支持将用户文件存储到SD卡上,如果没有SD卡,那么Camera、Musi
5、c、SoundRecorder等多媒体模块功能皆不可用。因此,我们在手机/data/区域开辟了一小块空间创建目录“/data/HWUserData/”用来存储用户文件,以保证没有SD时用户也可以正常使用各个需要存储文件的应用。而Android平台主要是通过数据库管理文件信息,因此对我们增加的目录中用户存储的所有文件,我们都必须将这些文件信息加入数据库并加以维护。2)用户通过FileManager浏览或管理文件时,如果我们的程序直接从物理设备上读取文件信息,速度相对较慢,比如在搜索文件时,如果用户文件较多
6、,搜索时间将会很长;尤其是在当前搜索的文件夹中嵌套的子文件夹层次较深并且文件也较多时,搜索的过程将会是漫长的等待。参照Gallery,Music等模块在操作文件时都是从多媒体数据库读取文件信息的方案,因此我们考虑在必要的时候也通过操作数据库来管理文件。如果所有文件在数据库里面都有对应的索引信息,在浏览文件列表、搜索文件时从数据库里查循要比直接从物理设备读取文件信息要快得多。因此我们在媒体数据库新加了一张表“file_store”用来存储非多媒体文件与文件夹的信息(文件的大小、文件名、创建时间、最后修改时
7、间等)。2.修改申明1)关于增加手机用户目录①此次变更只针对手机用户可见的文件(手机用户目录及SD卡上的文件),不包括系统默认的多媒体文件(如/system/media下的文件)。②此次修改只是增加功能,不修改原有功能,因此不会对Google原代码与方案有影响。2)关于增加非多媒体文件信息表“file_store”Google发布的原始代码中,关于多媒体文件扫描部分,在扫描的时候,如果文件为当前平台支持的图片、音乐、视频之外的其他文件,不做任何处理,而这些没有被处理的文件,正是我们将要处理的文件。因此我
8、们加了一个分支,将这些被当前平台认为是非多媒体文件的信息也加入数据库,存储到我们新增加的表“file_store”。3.设计1)关于增加手机用户目录①增加手机用户目录“/data/HWUserData”,并增加多媒体数据库external-hw.db用来存储该目录下的所有可见文件信息;②SD卡可用时,将“/sdcard”及“/data/HWUserData”上所有文件信息存储在数据库external-***.db对应的表中;③SD卡状态为u
此文档下载收益归作者所有