3.2 各模块之间的关系

影音播放软件工程文件主要包括src文件夹(Java源码)、res文件夹(资源文件)和AndroidManifest.xml(程序清单)。软件主要由8个Activities组成,每个Activity对应于一个模块。不同的Activities通过Intent进行通信和相互调用。

各个模块之间的关系如图1所示。

视频播放调用顺序依次是、、、;

音频播放调用顺序依次是、、、、。在的界面上。点击相应的按钮就可以执行歌词同步显示功能。

在工程目录的AndroidManifest.xml(清单文件)里面,添加各Activity的说明。下面为对应启动画面的描述:

3.3 软件模块

根据影音播放软件功能,可以将软件划分为以下几个模块:

(1)模块。主要功能是显示软件启动画面。利用定时器线程去控制启动画面显示时间,并且当用户按下按键的时候,会立即中断启动画面的显示并跳转到模块。

(2)模块。主要功能是提供播放软件的用户界面。用户界面由Android的XML配置生成。

主菜单提供三个选项,分别是视频播放、音频播放和退出程序;视频播放时,调用模块,让用户选择需要播放的视频文件。音频播放时,调用模块,让用户选择需要播放的列表。

(3)模块。用于浏览内存卡上的文件。如果路径是文件夹,则列出该文件央下的所有文件;如果路径是文件,则先检查文件扩展名是否为支持的视频格式,如果是,则调用系统内置的播放器播放。

(4)模块。它包括以下几个模块:

①模块。主要功能是添加、删除、重命名列表。通过Content providers访问系统的播放列表数据库,并利用修改的结果更新数据库。因为采用的是系统的数据库,所以与系统内置的音乐播放器列表共用。同时,它还提供添加列表内容的接口。通过播放列表管理模块进入到模块。

②模块。主要功能是添加、删除、多选播放列表中的歌曲。在Android中,每个列表都会有一个相应的歹盯表内容库,保存了该列表里面所包含的歌曲ID。通过ContentProviders可以访问并修改。其中,添加功能是基于文件浏览器实现的,在文件浏览器中可以对音乐文件的进行标记和添加。

③模块。主要功能是显示歌曲的相关信息(专辑封面、专辑名称、歌手、长度等)和显示正在播放歌曲的时间进度,控制歌曲的播放。

模块的界面用XML配置生成。

实际使用的效果图如图2所示。

在Android的音乐库已经将歌曲的Idv2或Idv3标签进行解析,并将歌曲的相关信息(包括演唱者、流派、时长等)保存在媒体数据库中。只需要通过Content providers对该数据库进行访问,就可以得到相关的信息并送显示。获取歌曲相关信息的程序源码如下:

通过创建MediaPlayer播放器类对象,调用Android提供的API就可以实现文件的解码和播放。

④模块。程序启动时,对内存卡进行扫描,将扫描到的歌词文件名字和路径保存到歌词数据库中。对正在播放的歌曲,根据歌曲名字自动检索歌词文件,并同步显示歌词。第一次启动该程序时,需要新建歌词数据库,用于保存歌词文件信息。Android提供了类SQLiteOpenHelper用于新建数据库。

DATABASE_CREATE是一个SQL原语的字符串宏,其内容是“create table lyric_meta(_id integerprimary key autoincrement,_disp-alay_name text not null,_date text not null);”表示创建一个歌词文件的表,包含_id,_display_name,_data三列。其中_id是自增的且惟一的整数,_display_name是歌词文件名称,_data是歌词文件路径。歌词显示效果如图3所示。

4 系统测试

首先在Android SDK1.6的模拟器上对影音播放器的各项功能进行调试。调试结束后,将编译生成的安装文件(.APK)拷贝到SD卡,利用Android文件管理器将播放软件安装到OMAP3530开发板的系统上,然后将测试用的视频文件、MP3音乐文件及对应的歌词文件(.lrc)拷贝到SD卡,OMAP3530开发板上的影音播放器可以通过文件浏览器选择视频文件并正常播放,在播放音频文件时可以正常显示匹配的歌词,支持快进、快退、暂停等控制功能。

5 结语

本文以Android上影音播放器的开发为范例,详细给出了Android上应用的开发方法。开发的影音播放器在Android手机模拟器和OMAP35 30开发板上测试通过。

基于android的影音设计,基于Android系统的影音播放器设 - 音响技术 - 电子发烧友网...相关推荐

  1. linux步进电机驱动程序,基于Linux的步进电机驱动程序设 - 嵌入式操作系统 - 电子发烧友网...

    定义时钟节拍函数time_tick() static void time_tick(unsigned long data) { static int i=0; switch(status) { cas ...

  2. 嵌入式linux系统电源管理器,嵌入式Linux系统的动态电源管理技 - 嵌入式操作系统 - 电子发烧友网...

    嵌入式Linux系统的动态电源管理技术 通过用户层制定策略与内核提供管理功能交互,实时调整电源参数而同时满足系统实时应用的需求,允许电源管理参数在短时间的空闲或任务运行在低电源需求时,可以被频繁地.低 ...

  3. 基于android系统的音乐播放器,基于Android系统的音乐播放器软件设计与实现.doc

    基于Android平台的音乐播放器 The Development of Mobile Music Player Based on Android platform system 学生学号: 学生姓名 ...

  4. android音乐播放器 毕业论文,毕业论文-- 基于Android系统的音乐播放器的实现 .doc...

    毕业论文-- 基于Android系统的音乐播放器的实现 .doc 还剩 31页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! ...

  5. 基于C#结合SQL设计学生成绩系统系统

    基于C#结合SQL设计学生成绩系统系统 错误集合 以下为C#部分 呈现效果 C#代码 这是数据库大作业,原本想的是用python和SQL,但遇到了很多错误,相对C#也很麻烦,因此换了C#.但还是先记录 ...

  6. 基于Java毕业设计游戏论坛设计源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计游戏论坛设计源码+系统+mysql+lw文档+部署软件 基于Java毕业设计游戏论坛设计源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  7. Android 12.0 系统多个播放器app时,设置默认播放器

    目录 1.概述 2.系统多个播放器app时,设置默认播放器的核心类

  8. Mac如何更改系统默认的播放器?

    Mac怎么更改系统默认的播放器?Mac系统中想要更换播放器,该怎么更换呢?下面我们就来看看mac默认播放器的更换方法,需要的朋友可以参考下. Mac下面如何设置或更改默认的视频播放器,之前看到一些经验 ...

  9. win10系统专用DVD播放器安装的方法--win7w.com

    win10系统性能稳定受到广大用户的喜爱,但也不尽完美,在使用过程中,难免会遇到win10系统专用DVD播放器安装的问题.碰到win10系统专用DVD播放器安装的问题.很多用户不知道win10系统专用 ...

  10. Android遥控车软件设计,基于Android系统和蓝牙通信的手机遥控车设计

    1 设计背景 现有每个普通家庭中的遥控器包括空调遥控器.电视遥控器.DVD遥控器.汽车遥控器.门窗遥控器等,门类繁多且不通用,而另一方面,手机已成为人人必备的工具,如果可以用我们必备的手机去遥控所有这 ...

最新文章

  1. php常用案例,PHP常用数组处理函数总结,附带运行案例
  2. 11_短信发送器_快速回复页面实现
  3. Linux下第一个java程序没有成功
  4. 58同城创始人姚劲波:未来十年是中国创业最好机会
  5. top,right,bottom,left设置为0有什么用?
  6. C语言中变量的链接属性
  7. Qt之QTemporaryDir用法(创建临时目录)
  8. oracle的视图表,oracle 常用视图和表
  9. centos7 /etc/profile 文件模板
  10. java 数据结构 数据库_数据库索引背后的数据结构
  11. java日期大小比较
  12. mybatis笔记之使用Mapper接口注解
  13. 计算1970距今的秒数
  14. struts2(2012/2/25)
  15. 买的是ARM指令集授权,不是已设计好的CPU核?
  16. linux shell let命令,linux shell let, expr 命令详解
  17. 计算机二级考试vb内容,计算机二级VB考试考什么内容?(一)
  18. 修改移动光猫,提升上网速度
  19. webpack随笔06-bulma
  20. 计算机如何共享手机网络热点,怎么在电脑上建立热点WIFI与手机共享网络

热门文章

  1. codecademy SQL 编程系列一Introduction
  2. 小程序Dialog弹出窗
  3. 田忌赛马java代码算法,AcWing 1489. 田忌赛马——Java版代码
  4. 【论文精读】Learning Bounds for Importance Weighting
  5. 网络推广100种方法_免费在线推广业务的6种方法
  6. 数论学习笔记之解线性方程 a*x + b*y = gcd(a,b)
  7. python数据录入和分析_基于 Python 和 Pandas 的数据分析(3) --- 输入/输出 基础
  8. snapchat_如何在Snapchat快照中添加背景
  9. android power 按键,android 添加按(power键)电源键结束通话(挂断电话)
  10. 阿里云ESC搭建SVN服务端-----实测有效,并补充了一些坑点