1、本科毕业论文(20 届)基于 Android 的音乐播放器的设计与实现所在学院专业班级 计算机科学与技术学生姓名指导教师完成日期摘要当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉,因此,也逐步的提高了对系统的要求,本文主要是对 Android 系统上一款音乐播放器应用程序的设计与实现进行讨论。Android 是一个开源的系统,它底层是基于 Linux 的操作系统,本论文的音乐播放器采用了 Android 开源系统技术,利用 Java 语言和 Eclipse 编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界
2、面图及主要功能运行流程图。本文还对高度过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、歌词显示等功能于一体,性能良好,在 Android 系统中能独立运行。该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式、以及歌词开闭状态的友好设置.MP3 的全名是 MPEG Audio Layer-3,是一种声音文件的压缩格式,由于本播放器只限于应用层程序的探讨,所以对具体的压缩算法不作深究。关键词:Android ; 开源系统; 音乐播放器 1AbstractThe pace of life in todays society is quicke
3、r and quicker, with more advanced hardware mobile devices for mobile devices, which is required more and more high from the previous pursuit to pursue the visual technology, therefore, the people also gradually improve the system requirements, the paper mainly is to take on a music player from syste
4、m design and realization of the application .Android is an open source system, it is based on the Linux operating system, the music player of the paper adopt the Android open-source system technology and take advantage of the Java language and editing tools to Eclipse players. Simultaneously, it giv
5、es the detailed design process, the part of the system and the main functions of operation interface diagram of height, the paper has detailed discussions about problems and solving methods in flow process, the music player covers episode, pause, stop, up, next, volume adjustment and lyrics display
6、functions etc, because of good performance, it can operate independently in the Android system. This player has access to the file browser phone functions, songs and played pattern, open and close condition of friendly words. The full name of MP3 is MPEG Audio Layer -3 and a kind of sound files comp
7、ressed format. Because the players is only limited to the exploration of applied program, it doesnt study the specific compression algorithm.Key Words:Android ; Open source system ; music player2目 录1 绪论 .11.1 课题的背景和意义 .11.2 国内外现状分析 .11.3 论文组织结构 .32 相关技术介绍 .42.1 Android 简介 .42.1.1 Android Features 特性
8、 .42.1.2 Android 基本框架 .42.1.3 Android 系统的四大组件 .62.2 搭建 Android 开发环境 .72.2.1 安装 Java JDK.72.2.2 安装 SDK 模拟器 .72.2.3 管理 SD 卡文件 .93 可行性及系统需求分析 .113.1 可行性分析 .113.1.1 经济可行性分析 .113.1.2 技术可行性分析 .113.1.3 社会可行性分析 .113.2 系统需求分析 .113.2.1 功能需求 .113.2.2 界面需求 .123.2.3 性能需求 .123.2.4 可靠性要求 .123.2.5 运行环境需求 .124 Andro
9、id 音乐播放器的工程 .134.1 播放流程 .134.2Android 项目 .144.3 Android 工程程序结构 .144.4 AndroidManifest.xml 文件 .155 音乐播放器主界面功能实现 .185.1 播放器主界面 .185.2 播放界面音轨的实现 .195.3 播放器播放、暂停、停止等功能 .215.4 播放列表功能 .225.5 歌词显示实现 .235.6 手机扩展卡的访问 .256 结论 .26参考文献 .27致 谢 .28附录 .2931 绪论1.1 课题的背景和意义现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以
10、播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放 Mp3,Wav 等多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。 本项目是一款基于 Android 手机平台的音乐播放器,使 Android 手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练 Android 的技术和其它在市场上的特点。随着科技的进步,手机的功能也不断的得到丰富,从最早的“大哥大”到现在的商务 PDA 手机,
11、智能手机,音乐手机等等,功能也从单纯的打电话发展到了发短信,听歌,上网手机和我们生活的联系越来越紧密,手机的功能也是很多人们关注的焦点。 目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少在人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器,而且还具有网上听音乐功能,所以开发一款受欢迎的手机音乐播放软件是具有良好的市场和应用前景的 1。一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自
12、带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以网上就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是Google 的 Android 手机平台,所以本课题就致力于开发出一款基于 Android 手机平台的音乐播放器,来满足用户的使用需求 2。1.2 国内外现状分析首先简单的介绍一下 Google 的 Android。Android 原本是一家独立的手机操作系统公司,2005 年被 Google 收购。2007
13、 年 11 月,Google 宣布推出基于 Linux 的 Android开放式手机操作系统,沿袭至今,已发展到 4.4 版本。此系统的“开放” 尤其体现在任何手机制造商均可无需支付专利费即可将此系统运用在自己的手机。Google 的以 Linux为内核的 Android 移动手机平台从诞生之日起短时间内便在世界范围里获得了广泛的关注。最近的报告显示在中国,一个拥有最大的人口,拥有最多的手机用户,拥有巨大的增长潜力的国家,这个系统的占有率沿着一个倒抛物线的增长曲率成为手机操作4系统中的霸主。同时国外的 Android 市场也正在如日中天的扩展,据市场调研机构NPD Group 最近发布的一份报
14、告称,今年第一季度基于 Android 操作系统的智能手机在美国智能手机总销量中所占比例达到 68%,超过苹果 iPhone,苹果 iPhone 约为21%,相信在不久的将来会有更多的用户选择 Android 系统的手机或是无线终端设备 3。国内目前中国移动、LG、三星、华为、 等正在积极筹备 Android 产品和相关的电子市场,3G 时代的到来,给中国企业追赶国际厂商带来了腾飞的机会,据预测亚太区域将来会占据全球 Android 市场中最大的收入份额。目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能
15、的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器所。 一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是google 的 android 手机平台。 Android 播放器是近年来手机当中比较
16、流行的音乐播放软件.通过结合自己所学的知识来设计和开发 Android 音乐播放器,可以深入学习 Android 多媒体框架结构和多媒体框架核心 Open core,并通过对 Open core 的学习进一步的认识和理解 Android 多媒体播放机制,而且还可以在开发软件实物的过程中,熟悉软件开发流程,掌握 Android领域小应用开发的方法,学习新的计算机知识,丰富自己的知识面。 Android 平台是完全开放的平台,智能手机里的各种应用软件也越来越完备,在 Android 平台设计和开发一款音乐播放器可以摆脱不够智能音乐播放器的因素,并且具有很广阔的前景 4。在 Linux 上流行的播放
17、器有多种主要有Xmms,RealPlayer,Xmovie,QuickTime ,Mplayer 等,以下对这些播放器进行分析介绍。 (1)Xmms Xmms 是 X-Window 系统下最流行的多媒体播放器之一,大多数 Linux 版本都捆绑了改产品最为 Linux 下的标配音频播放器,Xmms 可以播放 MP3、MOD、Wav 等多媒体文件,而且只要提供相应的插件,它还可以支持而更多的多媒体类型。(2)Xmovie Xmovie 最早是作为电视节目的播放软件。它的播放界面非常简单。界面上除了播放、快进、快退、播放时间显示和播放进度显示这几个主要功能外,没有其他控制功能。界面上方的选单条不含
18、有任何播放控制功能,基本上都是对播放画面的调整和环境变量的控制。Xmovie 支持 mpg,mov,vob,m2v 等视频格式,同时它还能够播放5MP2和 MP3音频格式的文件。 (3)RealPlayer RealPlayer 在低带宽下支持音频、视频多媒体的低损失传输,同时具有优秀的流媒体在线播放能力。RealPlayer for Linux 版本的操作界面与其 Windows 平台下的版本类似。RealPlayer 的后续版本增加了对微软视频和音频的支持,并支持便携式设备。 (4)QuickTime QuickTime 是苹果公司开发的流式音视频解决方案,也是出现较早的流媒体文件格式之一
19、,它由三个不同部分组成:QuickTime Move(电影)文件格式,QuickTime媒体抽象层、QuickTime 内置媒体服务系统。这类文件扩展名通常是.mov,它所对应的播放器是“QuickTime” 。 (5)MPlayer MPlayer 是 Linux 上的电影播放器,它的功能十分强大,能够播放众多格式的文件。MPlayer 能使用众多本地的 Xanim,RealPlayer 和 Win32DLL 边解码器,播放大多数MPEG、VOB、AVI、OGG、ASF/WMV 等文件,也能播放 Video CD、SVCD、DVD和 DivX 格式的电影。MPlayer 的另一个大的特色是支
20、持广泛的输出设备,它可以在Xll、Xv、DGA、OpenGL 、SVGAlib 等下工作 5。 目前,媒体播放器主要趋向以下几个方向:首先,支持多样化格式。Xmms、Xmovie、QuickTime 主要是针对固定的媒体格式类型或传输协议,具有一定的专用性,因此难以满足广大消费者的的需求,如今的音频,视频格式越来越多,如常见的音频 WMA,MP3 ,MIDI 以及视频的 RM,AVI 等。如何能将能播放所有这些,是现今研究的方向。其次,可扩展性也是一个必要的趋势,如今的播放器功能越来越强大,如何在现有的基础上使功能更全面,也是人们接受的一个因素。这就是本课题选用开放式 Android 平台的一
21、个原因,代码完全公开,为其功能扩展提供方便的条件1.3 论文组织结构本文的主要内容是研究、分析和实现基于 Android 手机平台的音乐播放器系统,包括以下几个部分:第一章简要介绍了 Android 手机平台的背景及国内外发展情况。第二章主要写了本程序的可行性及需求分析。第三章详述了音乐播放器的系统流程设计。第四章主要叙述了 Android 项目,搭建 Android 开发环境及音乐播放器的工程。第五章主要写了播放器主界面的实现及读取 SD 卡部分的实现。62 相关技术介绍2.1 Android 简介Android 一词的本义指“ 机器人 ”,同时也是 Google 于 2007 年 11 月
22、 5 日宣布的基于 Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前最好的是 Android2.0 的摩托罗拉 Droid Android 是基于 Linux 内核的软件平台和操作系统,早期由 Google 开发(在华注册商标名为 “安致”) ,后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层 ) 的 架 构 , 主 要分 为 三 部 分 。 低 层 以 Linux 内 核 工 作 为 基 础 , 只 提 供 基
23、本 功 能 ; 其 他 的 应 用 软 件 则由 各 公 司 自 行 开 发 , 以 Java 作 为 编 写 程 序 的 一 部 分 。 另 外 , 为 了 推 广 此 技 术 ,Google 和 其 它 几 十 个 手 机 公 司 建 立 了 开 放 手 机 联 盟 。 Android 在 未 公 开 之 前 常 被传 闻 为 Google 电 话 或 gPhone。 大 多 传 闻 认 为 Google 开 发 的 是 自 己 的 手 机 电 话 产品 , 而 不 是 一 套 软 件 平 台 。 到 了 2010 年 1 月 , Google 开 始 发 表 自 家 品 牌 手 机 电
24、话的 Nexus One。 目 前 最 新 SDK 版 本 为 Android 2.16。2.1.1 Android Features 特性Android 系统有如下的几大特性:(1)应用程序框架 支持组件的重用与替换(2)Dalvik 虚拟机 专门为移动设备做了优化(3)内部集成浏览器 该浏览器基于开源的 WebKit 引擎(4)优化的图形库 包括 2D 和 3D 图形库,3D 图形库基于 OpenGL ES (5)SQLite 用作结构化的数据存储(6)多媒体支持 包括常见的音频、视频和静态印象文件格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
25、(7)GSM 电话(依赖于硬件)(8)蓝牙 Bluetooth, EDGE, 3G, and WiFi (依赖于硬件)(9)照相机,GPS,指南针,和加速度计(依赖于硬件)(10)丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse 集成开发环境插件2.1.2 Android 基本框架(1)ApplicationsApplication Android 会 同 一 个 核 心 应 用 程 序 包 一 起 发 布 , 该 应 用 程 序 包 包 括email 客 户 端 , SMS 短 消 息 程 序 , 日 历 , 地 图 , 浏 览 器 , 联 系 人 管 理 程
26、序 等 。 所 有的 应 用 程 序 都 是 用 JAVA 编 写 的 。7(2)Application FrameWork 开 发 者 完 全 可 以 访 问 核 心 应 用 程 序 所 使 用 的 API 框 架 。 该 应 用 程 序 架 构 用 来简 化 组 件 软 件 的 重 用 ; 任 何 一 个 应 用 程 序 都 可 以 发 布 它 的 功 能 块 并 且 任 何 其 它 的 应用 程 序 都 可 以 使 用 其 所 发 布 的 功 能 块 ( 不 过 得 遵 循 框 架 的 安 全 性 限 制 ) 。 该 应 用 程序 重 用 机 制 使 得 组 建 可 以 被 用 户 替
27、换 。所 有 的 应 用 程 序 都 由 一 系 列 的 服 务 和 系 统 组 成 , 包 括 :可 扩 展 的 视 图 ( Views) 可 以 用 来 建 应 用 程 序 , 包 括 列 表 ( lists) , 网 格( grids) , 文 本 框 ( text boxes) , 按 钮 ( buttons) , 甚 至 包 括 一 个 可 嵌 入 的 web 浏览 器 。内 容 管 理 器 ( Content Providers ) 使 得 应 用 程 序 可 以 访 问 另 一 个 应 用 程 序 的 数据 ( 如 联 系 人 数 据 库 ) , 或 者 共 享 它 们 自 己
28、的 数 据 。资 源 管 理 器 ( Resource Manager) 提 供 非 代 码 资 源 的 访 问 , 如 本 地 字 符 串 , 图形 , 和 分 层 文 件 ( layout files ) 。通 知 管 理 器 ( Notification Manager) 使 得 应 用 程 序 可 以 在 状 态 栏 中 显 示 客 户 通知 信 息 。活 动 类 管 理 器 ( Activity Manager) 用 来 管 理 应 用 程 序 生 命 周 期 并 提 供 常 用 的 导航 回 退 功 能 。( 3) Libraries 库Android 包 括 一 个 被 Andr
29、oid 系 统 中 各 种 不 同 组 件 所 使 用 的 C/C+库 集 。 该 库通 过 Android 应 用 程 序 框 架 为 开 发 者 提 供 服 务 。 以 下 是 一 些 主 要 的 核 心 库 :系 统 C 库 一 个 从 BSD 继 承 来 的 标 准 C 系 统 函 数 库 ( libc ) , 专 门 为 基 于embedded linux 的 设 备 定 制 。媒 体 库 -基 于 PacketVideo OpenCORE; 该 库 支 持 录 放 , 并 且 可 以 录 制 许 多 流行 的 音 频 视 频 格 式 , 还 有 静 态 印 像 文 件 包 括 MP
30、EG4, H.264, MP3, AAC, AMR, JPG, PNG。Surface Manager-对 显 示 子 系 统 的 管 理 , 并 且 为 多 个 应 用 程 序 提 供 2D 和 3D 图层 的 无 缝 融 合 。 LibWebCore - 一 个 最 新 的 web 浏 览 器 引 擎 用 来 支 持 Android 浏 览 器 和 一 个 可嵌 入 的 web 视 图 。SGL - 一 个 内 置 的 2D 图 形 引 擎 3D libraries - 基 于 OpenGL ES 1.0 APIs 实 现 ; 该 库 可 以 使 用 硬 件 3D 加 速 ( 如果 可 用
31、 ) 或 者 使 用 高 度 优 化 的 3D 软 加 速 。FreeType-位 图 ( bitmap) 和 向 量 ( vector) 字 体 显 示 。SQLite 一 个 对 于 所 有 应 用 程 序 可 用 , 功 能 强 劲 的 轻 型 关 系 型 数 据 库 引 擎 。( 4) Android Runtime Android 包 括 了 一 个 核 心 库 , 该 核 心 库 提 供 了 JAVA 编 程 语 言 核 心 库 的 大 多 数功 能 。 每 一 个 Android 应 用 程 序 都 在 它 自 己 的 进 程 中 运 行 , 都 拥 有 一 个 独 立 的Dal
32、vik 虚 拟 机 实 例 。 Dalvik 是 针 对 于 同 时 高 效 地 运 行 多 个 VMs 来 实 现 的 。 Dalvik8虚 拟 机 执 行 .dex 的 Dalvik 可 执 行 文 件 , 该 格 式 文 件 针 对 最 小 内 存 使 用 做 了 优 化 。 该虚 拟 机 是 基 于 寄 存 器 的 , 所 有 的 类 都 经 由 JAVA 汇 编 器 编 译 , 然 后 通 过 SDK 中 的dx 工 具 转 化 成 .dex 格 式 由 虚 拟 机 执 行 。 Dalvik 虚 拟 机 依 赖 于 linux 的 一 些 功 能 ,比 如 线 程 机 制 和 底 层
33、 内 存 管 理 机 制 。(5) Linux 内 核Android 的 核 心 系 统 服 务 依 赖 于 Linux 2.6 内 核 , 如 安 全 性 , 内 存 管 理 , 进 程管 理 , 网 络 协 议 栈 和 驱 动 模 型 。 Linux 内 核 也 同 时 作 为 硬 件 和 软 件 堆 栈 之 间 的 硬件 抽 象 层 。 但 其 最 震 撼 人 心 之 处 在 于 Android 手 机 系 统 的 开 放 性 和 服 务 免 费 。Android 是 一 个 对 第 三 方 软 件 完 全 开 放 的 平 台 , 开 发 者 在 为 其 开 发 程 序 时 拥 有 更
34、大的 自 由 度 , 突 破 了 IPhone 等 只 能 添 加 为 数 不 多 的 固 定 软 件 的 枷 锁 ; 同 时 与Windows Mobile、 Symbian 等 厂 商 不 同 , Android 操 作 系 统 免 费 向 开 发 人 员 提 供 ,这 样 可 节 省 近 三 成 成 本 。 Android 项 目 目 前 正 在 从 手 机 运 营 商 、 手 机 厂 商 、 开 发 者和 消 费 者 那 里 获 得 大 力 支 持 9。2.1.3 Android系统的四大组件在 Android 系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有
35、些是不可见的视图,像 Activity,ContentProvider 是可见的视图,Service 和 BroadcastReceiver 是不可见的,它们只在系统的后台运行。下面分别介绍四大组件:(1)Activity 简介在 Android 系统中 Activity 提供可视化的用户界面,一个 Android 应用通常由多个Activity 组成。多个 Activity 组成了 Activity 栈(Stack ) ,当前活动的 Activity 处于栈顶。Activity 有自己的生命周期,由 Android 系统来控制。(2)Service 简介顾名思义 Service 就是运行在后
36、台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个 Service 类比较简单,只要继承 Service 类,实现其生命周期中的方法就可以了。一个定义好的 Service 必须在 AndroidManifest.xml 配置文件注册,通过元素声明才能使用.Service 有自己的生命周期,我们可以调用startService()启动一个 Service 或者 bindService 方法来绑定一个存在的 Service。(3)Broadcast Receiver 简介Broadcast Receiver 顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件) ,而广播事件处理机制是系统级别的。到目前为止我们可以使用 Intent 来启动一个程序组件,我们还可