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开发板上测试通过。