基于android的音乐播放器的设计与实现.docx
- 文档编号:10658512
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:39
- 大小:2.05MB
基于android的音乐播放器的设计与实现.docx
《基于android的音乐播放器的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于android的音乐播放器的设计与实现.docx(39页珍藏版)》请在冰豆网上搜索。
基于android的音乐播放器的设计与实现
河北农业大学
本科毕业论文
题目:
基于Android的音乐播放器的设计与实现
摘要
当今社会的生活节奏越来越快,随着移动硬件设备越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉效果,因此,也逐步提高了对系统的要求。
本文主要是对Android系统上一的款音乐播放器应用程序的设计与实现进行讨论。
Android平台是Google公司推出的一个手机平台,它是一个开源的系统,它底层是基于Linux的操作系统,本论文以Android开发平台为基础,首先介绍了安卓平台的发展以及当前国内外的发展现状。
然后对安卓技术做了一个详细介绍 ,之后对基于Android平台的音乐播放器做了一个详细的需求分析,在需求分析后详细论述了音乐播放器的详细设计。
根据Android开发平台自身的结构特点,把音乐播放器的开发分为两个部分来进行分析和设计,一部分是窗口的设计,住要是定义窗口的属性和关联窗口的处理函数;另一部分是功能的实现,主要是结合Android平台提供的资源和对音乐播放器的功能分析最终实现定义的功能。
关键词:
安卓;开源系统;音乐播放器
Abstract
Thepaceoflifetoday’ssociety,withmoreadvancedhardwaremobiledevicesformobiledevices,peoplemoreandmoreisalsohigh,therequirementsfromthepreviouspursuittopursuitthevisualtechnology,therefore,alsograduallyimprovethesystemrequirements,thepapermainlyistotakeonmusicplayerfromsystemdesignandrealizationoftheapplicationisdiscussed.
AndroidplatformisGoogle’slatestlaunchofmobileplatform,thesystemisanopensource,itisbasedonLinuxsystemsusingtheLinuxkernel.ThisarticletakestheAndroiddevelopment,aswellasthecurrentdomesticandforeigndevelopmentpresentsituation.Afterthediscussionofrationalabove,thisarticleintroducesthemaintechnologyofAndroid,makesadetaileddemandanalysistoMusicplayer,thenthisarticlegivesadetailedsoftwaredesignofMusicplayer.BasedontheAndroiddevelopingplatform’sfeature.IdividetheMusicplayer’sdevelopmentintotwopartstoanalyzeanddesign.Onepartisthewindowdesign,mainlydefinesthewindowattributeandtheconnectedwindowprocessingfunction;Anotherpartisfunctionrealization,mainlyunifiestheresourceswhichAndroidplatformprovidesandfunctionanalysistoMusicplayertoaccomplishthefunctionwhichwedefined.
Keywords:
Android;Opensourcesystem;musicplayer
1绪论
1.1项目目的及意义
现今生活节凑快,生活紧张,在日常休息之余,欣赏音乐是最好的舒缓压力的方式之一。
本项目的目的就是开发一个可以对主流音乐文件格式有很好的支持的音乐播放器。
随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。
于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。
针对以上各种弊端,编写一个简洁,占用资源少,并能够很好播放本地音乐的播放器势在必行。
研究各种市场上流行的手机播放器,了解它们各自的插件及编码方式,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。
目前已经实现播放音乐文件的功能。
拥有播放菜单,能选择播放清单,具备一般播放器的功能。
播放模式也比较完善,有单曲,顺序,循环,随机播放等模式,给用户一种轻松的体验。
1.2对国内外现状的研究
目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。
和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器所。
一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。
不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是Google的android手机平台。
随着科技的快速发展,数码电子设备基本上都含有MP3播放的功能。
媒体播放器的发展有两个趋势。
首先,支持多样化格式,如常见的音频格式WMA格式、MP3格式、MIDI格式等。
这些格式如何能够完美的播放,是现如今研究的一个主流方向。
其次一个必要的趋势就是播放器的可扩展性,现如今音乐播放器的功能越来越多,用户体验越来越好,如何能让播放器的功能比现有的更加完备,也是占领用户群的一个因素。
由于Android基于Linux内核并且具有开源、免费的特性,为播放性能的提升提供了更加便利的条件。
Android平台的开放性,可以不仅推动了技术创新(包括平台本身),也有利于降低开发成本,制造商定制具有特点的产品也很容易。
因此,它有一个大的市场潜力。
Android平台是完全开放的平台,智能手机里的各种应用软件也越来越完备,在Android平台设计和开发一款音乐播放器可以摆脱不够智能音乐播放器的因素,并且具有很广阔的前景。
1.3论文组织结构
本文主要研究内容有以下几个方面:
第一章绪论。
主要是对项目的背景和意义进行简要描述。
第二章安卓工程及技术介绍。
对安卓及安卓技术相关等方面进行介绍。
第三章需求分析。
对整个系统的可行性,功能需求和运行环境做出描述。
第四章系统设计。
对系统界面设计和功能设计做出描述。
第五章系统实现。
对系统的实现国能做出描述,包括界面和代码实现等。
第六章总结。
简要介绍程序的功能,自己的收获和一些不足。
2安卓工程技术介绍
2.1android介绍
Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(OpenHandsetAlliance)开发。
它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。
低层以Linux内核工作为基础,只提供基本功能,其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。
另外,为了推广此技术,Google和其他几十个手机公司建立开发手机联盟。
Android在未公开之前常被传闻为Google电话或gPhone。
大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。
到了2010年1月,Google开始发表自家品牌手机电话的NexusOne,截止到现在最新的手机型号为Nexus5。
2.1.1AndroidFeatures特性
安卓系统有如下几大特性:
1.应用程序框架支持组建的重用与替换。
2.Dalvik虚拟机专门为移动设备做了优化。
3.内部集成浏览器该浏览器基于开源的WebKit引擎。
4.优化的图形库包括2D和3D图形库,3D图形库基于OpenGlES。
5.SQLite用作结构化的数据存储。
6.多媒体支持包括常见的音频、视频和静态印象文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)。
7.GSM电话(依赖于硬件)。
8.蓝牙Bluetooth,EDGE,3G,安定WIFI(依赖于硬件)。
9.照相机,GPS,指南针,和加速度计(依赖于硬件)。
10.丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。
2.1.2Android基本框架
Android基本框架如图2.1所示。
图2.1安卓基本框架
其软件层次结构自上而下分为以下几个层次:
(1)应用程序(application)
ApplicationAndroid会同一核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是用JAVA编写的。
(2)应用程序框架(applicationframework)
开发者完全可以访问核心应用程序所使用的API框架。
该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过的遵循框架的安全性限制)。
该应用程序重用机制使得组件可以被用户替换。
所有的应用程序都由一系列的服务和系统组成,包括:
a.可扩展的视图(Views)可以用来建应用程序,包括列表(Lists),网格(grids),文本框,按钮,甚至可以嵌入一个web浏览器。
b.内容管理器(ContentProviders)使得应用程序可以访问另一个应用程序的数据,或者共享自己的数据。
c.资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和分层文件(LayoutFiles)。
d.通知管理器(NotificationManager)使得应用程序可以在状态栏中显示客户通知信息。
e.活动类管理器(ActivityManager)用来管理应用程序的生命周期并提供常见的导航回退功能。
(3)各种库和安卓运行环境
Android包括一个被Android系统中各种不同组件所使用的C/C++库集。
该库通过Android应用程序框架为开发者提供服务。
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik是针对于同时高效地运行多个VMS来实现的。
Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。
该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。
(4)操作系统层
Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议和驱动模型。
Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。
2.2安卓应用程序开发的核心技术
2.2.1Android应用程序开发语言
JAVA是Android上的主流开发语言,各种支持也最完善。
Android发布的API和SDK也都主要是面向JAVA开发人员的。
我的播放器实例也是用JAVA开发的。
2.2.2Android应用程序组件
Android应用程序最大的一个特点就是每个应用都由若干组件构成。
而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。
例如假设我们需要编写一个内嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的ChromeLite浏览器组件。
又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写该功能。
也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。
这就要依靠组件来实现。
Android应用程序的组件有以下四种:
(1)Activity
一个Activity实际上表现出来的就是一个程序的界面。
这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等形式。
一个应用程序也可能有不止一个Activity。
比如一耳光短消息的程序,需要有列表显示所有消息的Activity,还至少需要一个编辑短信的Activity,还可能需要设置、菜单等界面。
每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其他窗口之上(如Android中的Toast信息)。
Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的Activity。
我们可以用Activity.setContentView()方法来设置一个Activity中所要显示的view。
(2)Services
Service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。
对于许多应用程序来说,service组件式至关重要的。
以下载管理器为例,用户肯定希望能够在切换到其他程序时仍然在后台继续下载,这就需要用到service完成下载工作。
而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过程,如停止、继续等,这就需要Activity与service之间进行通信。
Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service的行为。
(3)BroadcastReceivers
Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载。
Broadcastreceiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其他组件去处理广播消息。
它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知。
NitificationManager的通知形式有许多种,不如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。
(4)ContentProviders
Contentprovider是一种为其它应用程序提供数据的组件。
这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其他任何有效的方式保存。
ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。
其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法。
ContentResolver可以与任何contentprovider交互,获取其中的数据。
只需要某个组件,Android就会尽力保证它的可用;如果该组件还没有启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。
3系统需求分析
软件需求分析工作是软件生存期中重要的一步,也是决定性的一步。
软件需求分析是一个不断认识和逐步细化的过程,该过程将软件计划阶段所确定的软件范围逐步细化到可详细定义的程度。
需求分析还是软件开发的基础,假定在该阶段发现一个错误,解决它需要用一小时的时间,到设计、编程、测试和维护阶段解决,则要花几倍甚至更多的时间。
因此对于复杂系统而言,首先要进行需求分析。
开发人员应该对用户的要求及现实环境进行调查和了解。
3.1软件目标
本系统属于用户常用的音乐播放器。
可以方便用户平时对音乐文件进行播放的操作。
本系统应达到以下目标:
(1)软件采用人机交互的方式,界面美观友好,操作灵活、富有个性化。
(2)能够对当前播放音乐进行了解和控制。
(3)系统应最大限度地实现易维护性和易操作性。
3.2软件可行性研究
3.2.1经济上的可行性
Android基于Linux内核且具有开源、免费的特性,正式由于Android拥有这一特性。
它不仅推动了技术创新(包括平台本身),也有利于降低开发成本。
同时所需的软件系统、硬件平台等都是易于获得的,且不需要android平台的机器,用模拟器即可实现开发研究,开发成本低,容易实现,从经济角度来看,该系统可行。
3.2.2技术上的可行性
技术可行性要考虑现有的技术条件时候能够顺利完成开发工作,软硬件配置时候满足开发的需求。
本软件用的是java开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求。
因此在技术上绝对可行的。
软件方面,相关的开发软件,可以方便的从网上下载,易于获得,且可以满足系统需求。
3.2.3操作上的可行性
该课题是利用自己的计算机,且使用Android模拟器,并且在本地上安装JDK、Android跟Eclipse作为软件的开发平台,使开发出来的系统有友好的用户界面,操作简单,因此在操作上是可行的。
3.3功能需求
3.3.1用例图及用例描述
功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了用户的业务需求。
用户需求文档描述了用户使用产品必须要完成的任务。
针对音乐播放器分别对音乐播放功能进行详细的调研和分析,总结出用户需求信息,其用例图如图3.1所示。
图3.1音乐播放器用例图
音乐播放器用例描述如下:
(1)用例名称:
播放
参与者:
用户
目标:
使得用户可以播放在播放列表中选中的歌曲
前置条件:
播放器正在运行
基本事件流:
1.用户单击音乐列表中的一项
2.播放器将播放用户所选中的歌曲
(2)用例名称:
暂停
参与者:
用户
目标:
使得用户可以暂停正在播放的歌曲
前置条件:
播放器正在运行
基本事件流:
1.用户单击“暂停”按钮
2.播放器将暂停当前播放的歌曲
(3)用例名称:
上一首/下一首
参与者:
用户
目标:
使得用户可以听上一首或下一首歌曲
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户单击“上一首或下一首”按钮
2.播放器将播放上一首或下一首歌曲
(4)用例名称:
播放列表
参与者:
用户
目标:
使得用户可以进入播放清单
前置条件:
程序正在运行
基本事件流:
1.用户由播放歌曲界面返回至清单界面
2.播放器进入播放列表
(5)用例名称:
歌词显示
参与者:
用户
目标:
实现歌曲播放与歌词同步
前置条件:
歌词文件存在、程序运行在播放界面
基本事件流:
1.显示歌词
3.3.2音乐播放器的时序图
播放器对象之间的交互情况如图3.2所示。
图3.2音乐播放器的时序图
3.3.3音乐播放器的流程图
音乐播放器工作流程图如图3.3所示。
图3.3音乐播放器工作流程图
3.4软件规格说明
随着手机的功能的不断增加,音乐播放功能已经是时下各大手机厂商手机方案中的标配了。
总结设计思路和对市场的调研,对音乐播放器作出以下详细的定义:
(1)播放音乐文件
(2)播放音乐文件时实现暂停,播放。
(3)播放音乐文件时支持前一首或后一首音乐文件与当前音乐文件的切换。
(4)播放文件时支持进度条显示并显示已播放时间。
(5)可以设置播放模式。
(6)显示手机上音乐文件列表。
(7)支持歌词文件同步。
3.5运行环境
操作系统:
Android手机基于Linux操作系统。
支持环境:
Android2.3-4.2版本。
开发环境:
EclipseSDKVersion:
4.2.2。
4系统设计
4.1界面设计
系统的界面设计要求界面统一,有统一的主题,且界面风格简单,具有良好的用户友好性。
增加按钮而在界面上不显突兀。
在音乐播放时,通过歌曲信息的获取得到歌手信息,再从本地搜索歌手写真,将音乐播放界面设置为歌手图片。
4.2功能设计
功能设计主要任务是能从手机本地自动搜索音乐文件,并在列表中显示出来,点击音乐列表项后实现音乐的后台播放。
4.2.1音乐列表设计
通过在XML文件中增加listview控件,达到显示音乐文件列表的目的。
在每一项中显示歌曲的名字和歌曲时长。
同时在屏幕的最下方增加一个textview用来显示当前正在播放的音乐,当前无音乐播放时,将此控件设置为不可见,音乐正在播放时,若列表界面重新被激活,则显示正在播放的歌曲的名称,并且用imageview来标注播放状态(暂停/播放)。
点击手机上的返回键,播放器会后台运行,歌曲播放不影响用户使用其他应用。
当用户想彻底退出播放器时,点击播放列表右上的退出按钮,点击确定后退出音乐播放器。
列表设计界面如图4.1所示。
图4.1播放列表设计界面
4.2.2音乐播放设计
音乐播放时,在音乐播放界面,通过SeekBar控件来动态显示音乐的播放进度。
同时,因为音乐播放主要应用于后台,不影响用户去使用其他的应用,所以在音乐播放的设计时使用了android服务service。
实现播放界面activity与播放实现service之间的实时通信,应用BroadcastReceivers,通过action进行消息信息的传递。
同时,音乐播放时,可以实现对音乐播放的简单控制:
暂停/播放,上一曲/下一曲,通过对service发送不同的消息,service对不同的消息进行不同的处理,利用MediaPlayer已有的方法实现对音乐播放的控制。
对音乐文件的控制方法有:
setdataresource():
设置要播放歌曲文件的路径。
prepare():
准备播放状态。
start():
真正启动音乐文件播放的方法。
pause():
暂停音乐播放。
stop():
停止音乐播放。
seekTo():
定位方法,可以让播放器从指定的位置开始播放音乐。
release():
可以释放播放器占用的资源,一旦确定不再使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 android 音乐 播放 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)