1、本科毕业论文(20 届)基于 Android 的音乐播放器的设计与实现所在学院专业班级 计算机科学与技术学生姓名指导教师完成日期摘 要当今社会的生活节奏越来越快,随着移动硬件设备越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉效果,因此,也逐步提高了对系统的要求。本文主要是对 Android 系统上一的款音乐播放器应用程序的设计与实现进行讨论。Android 平台是 Google 公司推出的一个手机平台,它是一个开源的系统,它底层是基于 Linux 的操作系统,本论文以 Android 开发平台为基础,首先介绍了安卓平台的发展以及当前国内外的发展现状。然后对安卓技术
2、做了一个详细介绍 ,之后对基于Android 平台的音乐播放器做了一个详细的需求分析,在需求分析后详细论述了音乐播放器的详细设计。根据 Android 开发平台自身的结构特点,把音乐播放器的开发分为两个部分来进行分析和设计,一部分是窗口的设计,住要是定义窗口的属性和关联窗口的处理函数;另一部分是功能的实现,主要是结合 Android 平台提供的资源和对音乐播放器的功能分析最终实现定义的功能。关键词:安卓;开源系统;音乐播放器AbstractThe pace of life todays society ,with more advanced hardware mobile devices fo
3、r mobile devices ,people more and more is also high ,the requirements from the previous pursuit to pursuit the visual technology,therefore,also gradually improve the system requirements ,the paper mainly is to take on music player from system design and realization of the application is discussed. A
4、ndroid platform is Googles latest launch of mobile platform ,the system is an open source ,it is based on Linux systems using the Linux kernel .This article takes the Android development ,as well as the current domestic and foreign development present situation .After the discussion of rational abov
5、e ,this article introduces the main technology of Android ,makes a detailed demand analysis to Music player ,then this article gives a detailed software design of Music player .Based on the Android developing platforms feature .I divide the Music players development into two parts to analyze and des
6、ign .One part is the window design ,mainly defines the window attribute and the connected window processing function ;Another part is function realization ,mainly unifies the resources which Android platform provides and function analysis to Music player to accomplish the function which we defined.
7、Keywords: Android; Open source system; music player目 录1 绪论 .11.1 项目目的及意义 .11.2 对国内外现状的研究 .11.3 论文组织结构 .22 安卓工程技术介绍 .32.1 android 介绍 .32.1.1 Android Features 特性 .32.1.2 Android 基本框架 .32.2 安卓应用程序开发的核心技术 .52.2.1 Android 应用程序开发语言 .52.2.2 Android 应用程序组件 .53 系统需求分析 .73.1 软件目标 .73.2 软件可行性研究 .73.2.1 经济上的可行性
8、 .73.2.2 技术上的可行性 .73.2.3 操作上的可行性 .73.3 功能需求 .73.3.1 用例图及用例描述 .83.3.2 音乐播放器的时序图 .93.3.3 音乐播放器的流程图 .103.4 软件规格说明 .103.5 运行环境 .114 系统设计 .124.1 界面设计 .124.2 功能设计 .124.2.1 音乐列表设计 .124.2.2 音乐播放设计 .134.2.3 音乐播放模式设计 .144.2.4 歌词设计 .145 系统实现 .155.1 音乐播放列表 .155.1.1 音乐列表界面 .155.1.2 获取手机中歌曲文件信息 .155.1.3 在列表显示界面中显
9、示音乐 .165.2 音乐播放和播放的 service 实现 .185.2.1 音乐播放界面 .185.2.2 实现 service 后台音乐播放 .195.3 音乐播放模式设置 .235.3.1 播放模式设置界面 .235.3.2 进行播放模式选择 .245.4 歌词处理和显示 .255.4.1 歌词显示模块 .255.4.2 歌词解析模块 .266 总结 .29参考文献 .30致 谢 .3111 绪论1.1 项目目的及意义现今生活节凑快,生活紧张,在日常休息之余,欣赏音乐是最好的舒缓压力的方式之一。本项目的目的就是开发一个可以对主流音乐文件格式有很好的支持的音乐播放器。随着计算机的广泛运用
10、,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如 CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,编写一个简洁,占用资源少,并能够很好播放本地音乐的播放器势在必行。研究各种市场上流行的手机播放器,了解它们各自的插件及编码方式,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的
11、播放器。目前已经实现播放音乐文件的功能。拥有播放菜单,能选择播放清单,具备一般播放器的功能。播放模式也比较完善,有单曲,顺序,循环,随机播放等模式,给用户一种轻松的体验。1.2 对国内外现状的研究目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器所。 一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐
12、欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是 Google 的 android手机平台。 随着科技的快速发展,数码电子设备基本上都含有 MP3 播放的功能。媒体播放器的发展有两个趋势。首先,支持多样化格式,如常见的音频格式 WMA 格式、MP3 格式、MIDI格式等。这些格式如何能够完美的播放,是现如今研究的一个主流方向。其次一个必要的趋势就是播放器的可扩展性,现如今音乐播放器的功能越来越多,
13、用户体验越来越好,如何能让播放器的功能比现有的更加完备,也是占领用户群的一个因素。由于 Android基于 Linux 内核并且具有开源、免费的特性,为播放性能的提升提供了更加便利的条件。Android 平台的开放性,可以不仅推动了技术创新(包括平台本身) ,也有利于降低开发2成本,制造商定制具有特点的产品也很容易。因此,它有一个大的市场潜力。Android 平台是完全开放的平台,智能手机里的各种应用软件也越来越完备,在Android 平台设计和开发一款音乐播放器可以摆脱不够智能音乐播放器的因素,并且具有很广阔的前景。1.3 论文组织结构本文主要研究内容有以下几个方面:第一章 绪论。主要是对项
14、目的背景和意义进行简要描述。第二章 安卓工程及技术介绍。对安卓及安卓技术相关等方面进行介绍。第三章 需求分析。对整个系统的可行性,功能需求和运行环境做出描述。第四章 系统设计。对系统界面设计和功能设计做出描述。第五章 系统实现。对系统的实现国能做出描述,包括界面和代码实现等。第六章 总结。简要介绍程序的功能,自己的收获和一些不足。32 安卓工程技术介绍2.1 android介绍Android 是基于 Linux 内核的软件平台和操作系统,早期由 Google 开发(在华注册商标名为“安致” ) ,后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(softwa
15、re stack,又名以软件叠层)的架构,主要分为三部分。低层以 Linux 内核工作为基础,只提供基本功能,其他的应用软件则由各公司自行开发,以 Java 作为编写程序的一部分。另外,为了推广此技术,Google 和其他几十个手机公司建立开发手机联盟。Android 在未公开之前常被传闻为 Google 电话或 gPhone。大多传闻认为 Google开发的是自己的手机电话产品,而不是一套软件平台。到了 2010 年 1 月,Google 开始发表自家品牌手机电话的 Nexus One,截止到现在最新的手机型号为 Nexus 5。2.1.1 Android Features特性安卓系统有如下
16、几大特性:1.应用程序框架 支持组建的重用与替换。2.Dalvik 虚拟机 专门为移动设备做了优化。3.内部集成浏览器 该浏览器基于开源的 WebKit 引擎。4.优化的图形库 包括 2D 和 3D 图形库,3D 图形库基于 OpenGl ES。5.SQLite 用作结构化的数据存储。6.多媒体支持 包括常见的音频、视频和静态印象文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF) 。7.GSM 电话 (依赖于硬件) 。8.蓝牙 Bluetooth,EDGE,3G,安定 WIFI(依赖于硬件) 。9.照相机,GPS,指南针,和加速度计(依赖于硬件) 。10.丰富
17、的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和 Eclipse集成开发环境插件。2.1.2 Android基本框架Android 基本框架如图 2.1 所示。4H o m e C o n t a c t sP h o n e B r o w s e r P a c k a g e M a n a g e rT e l e p h o n y M a n a g e rR e s o u r c e M a n a g e rL o c a t i o n M a n a g e rN o t i f i c a t i o n M a n a g e rA c t i v i t
18、 y M a n a g e rW i n d o w M a n a g e rC o n t e n t P r o v i d e r sV i e w S y s t e mS u r f a c e M a n a g e rO p e n G L | E SS G LM e d i a F r a m e w o r kF r e e T y p eS S LS Q L i t eW e b K i tl i b cC o r e L i b r a r i e sD a l v i k V i r t u a l M a c h i n eC a m e r a D r i v
19、e rF l a s h M e m o r y D r i v e rB i n d e r ( I P C ) D r i v e rW i f i D r i v e rA u d i o D r i v e r sP o w e r M a n a g e m e n tA P P L I C A T I O N SA P P L I C A T I O N F R A M E W O R KL I B R A R I E SA N D R O I D R U N T I M EL I N U X K E R N E L图 2.1 安卓基本框架其软件层次结构自上而下分为以下几个层次:(
20、1)应用程序(application)Application Android 会同一核心应用程序包一起发布,该应用程序包包括 email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用 JAVA 编写的。(2)应用程序框架(application framework )开发者完全可以访问核心应用程序所使用的 API 框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过的遵循框架的安全性限制) 。该应用程序重用机制使得组件可以被用户替换。所有的应用程序都由一系列的服务和系统组
21、成,包括:a.可扩展的视图(Views)可以用来建应用程序,包括列表(Lists) ,网格(grids) ,文本框,按钮,甚至可以嵌入一个 web 浏览器。b.内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据,5或者共享自己的数据。c.资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件(Layout Files) 。d.通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。e.活动类管理器(Activity Manager)用来管理应用程序的生命周期并提供常见的导
22、航回退功能。(3)各种库和安卓运行环境Android 包括一个被 Android 系统中各种不同组件所使用的 C/C+库集。该库通过Android 应用程序框架为开发者提供服务。Android 包括了一个核心库,该核心库提供了 JAVA 编程语言核心库的大多数功能。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。Dalvik 是针对于同时高效地运行多个 VMS 来实现的。Dalvik 虚拟机执行.dex的 Dalvik 可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由 JAVA 汇编器编译,然后通过 SD
23、K 中的 dx 工具转化成.dex 格式由虚拟机执行。Dalvik 虚拟机依赖于 linux 的一些功能,比如线程机制和底层内存管理机制。(4)操作系统层Android 的核心系统服务依赖于 Linux2.6 内核,如安全性,内存管理,进程管理,网络协议和驱动模型。Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。2.2 安卓应用程序开发的核心技术2.2.1 Android应用程序开发语言JAVA 是 Android 上的主流开发语言,各种支持也最完善。Android 发布的 API 和 SDK也都主要是面向 JAVA 开发人员的。我的播放器实例也是用 JAVA 开发的。2.2.2 A
24、ndroid应用程序组件Android 应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限) 。例如假设我们需要编写一个内嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的Chrome Lite 浏览器组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写该功能。也就是说,不同于我们平常编写的程序,Android 的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。Android 应用程序的组件有以下四种:(1)Activity一个 Activity 实际上表现出来的就是一个程序的界面。这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等形式。一个应用程序也可能有不止