嵌入式设备多存储介质媒体库统一查询的方法.docVIP

嵌入式设备多存储介质媒体库统一查询的方法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式设备多存储介质媒体库统一查询的方法

嵌入式设备多存储介质媒体库统一查询的方法   摘 要:智能手机、带存储介质的嵌入式设备,一般会存储大量的图片、音乐、视频等多媒体文件。只有少部分媒体播放器带有文件的搜索和管理功能,但是功能有限,操作也不统一。首先对磁盘文件目录作递归扫描,根据文件名后缀作过滤和分类,用嵌入式数据库sqlite3来存储扫描结果;然后介绍了分类查询、文件名汉字拼音首字母查询、即输即查的快速模糊查询技术,还特别对多分区和多介质的情况作了处理,支持多介质的统一查询。此方法可用来轻易构建软件,给智能手机或其它嵌入式设备用户一种全方位的媒体库管理体验。   关键词:嵌入式设备;存储介质;模糊查询;媒体库   中图分类号:TP301 文献标识码:A 文章编号2013)003002704   基金项目:国家自然科学基金资助项目;湖北省自然科学基金资助项目(2012FFB07401)   作者简介:李艳红(1973-),女,博士,中南民族大学计算机科学学院讲师,研究方向为现代数据库。   0 引言   嵌入式技术的日益成熟,特别是近几年来苹果ios设备的IPA开发平台和谷歌Android设备的APK开发平台的日益普及,使得嵌入式设备和智能手机的功能越来越多,应用越来越广泛,也越来越吸引更多的消费者去购买。这些设备和智能手机一般具有内置的存储器,并支持外接储存卡或盘,例如SD卡、MicroSD卡、U盘等。   人们购买这些价值不菲的消费品,最大目的是追求其娱乐功能,而这些娱乐功能大多数与图片、音乐、视频等多媒体文件相关。到目前为止,这些消费品的媒体库管理功能还很弱,特别是在有海量媒体文件的设备上,用户想要快速找到一个特定的文件是一件头疼的事情。文件管理器是标准应用程序,设备自带的是基于文件夹管理,查找文件的功能不强。虽然有些播放器也有一些搜索媒体文件的功能,但也只是将其简单地显示出来。   本文提出的方法,将磁盘文件信息保存到嵌入式数据库,可按“all”、“picture”、“music”、“video”、“others”等类别显示,汉字名称支持拼音首字母查询。对于多存储器及多分区的情况,支持即插即用。对于MP3文件,可按“歌手”、“专辑”、“风格”等id3tag信息来查找。所有查询都能支持即输即查。   由于嵌入式设备以Linux内核居多,包括Android也是运行在Linux之上的系统。所以本文的实验选择Linux运行环境。   1 磁盘扫描及其文件信息存储算法   本节介绍磁盘扫描及其文件信息的存储算法。首先获取当前所有可用的存储器,对每个存储器的每个分区分别进行递归文件扫描;然后根据文件名的后缀名,将文件归属到不同的媒体类别,每种类别的共同属性是“folder”(文件所在的文件夹)、“date”(文件的创建日期)、“pathfile”(包含路径的完整文件名)、“pinyin_initial_letter”(文件名汉字拼音首字母)等;再根据这些文件的后缀,将这些属性分别存储到“picture”、“music”、“video”、“other”表。   1.1 磁盘扫描   扫描磁盘前,要获取设备已经挂载的存储设备各个分区。最简单的方法是用Linux的‘df’命令来获取,df的输出是stdout,因此需要popen函数来运行该命令,这样df的输出就会重定向到popen函数返回的文件描述符,然后用getline函数逐行读取就可获取到各分区的信息了。“dff | grep‘/dev/’”的输出如表1所示。   1.2 拼音首字母表示文件名   (1)有两个码表文件,一个是简体一个是繁体,每行是一个拼音,拼音之后接空格或者制表符,然后是UTF8编码的汉字,换行为Unix方式0x0A。如图1、图2所示为文件的片段。   (2)打开这个繁体的码表文件,可看到文件以0xEF、0xBB、0xBF开头,说明是UTF8的文本文件。0x61是‘a’的ASCII码,0x09是制表符,然后是‘阿’的内码0xE998BF…最后0x0A表示换行。下一个是拼音‘ai’。如图3所示。   (3)程序初始化的时候,要将这两个文件的内容读出来进行转换,得到一个由汉字UTF8内码反查拼音首字母的表。表2所示为该表的片段。其中,0xE4BCB8是‘伸’,0XE4BCBA是‘伺’,0XE4BCBC是‘似’,0XE4BCBD是‘伽’,这是个多音字:ga1/qie2/jia1。所以表中放了3个首字母:‘g’‘q’‘j’。   (4)在Linux系统中,是用UTF8来表示文件名和文件夹名的,所以扫描得到的文件名和文件夹名是UTF8的字符串。媒体数据库的表中,可以设一个字段用来存放文件名对应的“首字母串”,比如“还珠格格2”对应“h

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档