1、基于Android音乐播放器详细设计【实用文档】doc文档可直接使用可编辑,欢迎下载项目详细设计3组:梁锦 2129101 王燕 2120104李雪飞 212001041卫妙珠 2090419雷宁 2109048 曹项飞 21201046目录1音乐播放器设计。1项目介绍181.1。1播放器的基本控制需求181.1.2项目流程11。UI界面设计20114项目程序结构11。1。5项目Mietl文件21。2创建项目及具体结构分析25.项目的创建25.2。界面设置23结构分析6。3设计成果及分析261。3.1 设计成果271。3。2问题及分析21。1项目介绍本论文的音乐播放器采用了Android开源系
2、统技术,利用Java语言和Elise编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对设计过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、等功能于一体,性能良好,在ndid系统中能独立运行.本设计简单实用,没有过于花哨的功能与界面,简单的功能不仅仅操作方便,还为系统资源节省空间。在drod系统下开发一款多媒体播放器,并学习多媒体技术,熟悉软件开发流程。Andrd多媒体框架播放机制,包括:penore,Pacetieo(PV).U设计与制作,包括动态界面布局,浮动控制栏,自定义对话框等.媒体文件播
3、放与控制,包括音视频文件的播放,后台播放媒体文件等。媒体文件的信息管理,包括媒体文件信息的扫描,存取与获取,数据库操作等。播放信息和用户配置参数的保存与加载。在ndrod模拟器真机上实现对媒体文件的播放。.1.1播放器的基本控制需求根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用如下图41来描述,系统的功能需求。(图41)从以上图41中我们可以一目了然地看出本项目的控制需求,其中主要包括了播放、暂停、音量调节、新增、上一首,下一首等功能。1。2项目流程下图42是项目设计的流程图,是本项目设计的重要关键点之一,此流程图展示了整个项目的逻辑与算法。是本项目的
4、核心技术之一。(图4-2)不难看出,本项目使用到了个主要用户界面,分别是播放主界面,播放列表界面以及播放界面.通过图4-,我们可以清晰的,一目了然的读懂整个设计的思路以及各个功能的定位。从而,此流程图更加方便读者了解该项目的功能实现,设计思路,层次结构以及各个程序之间的关系等。11.3UI界面设计ndroi的四大基本组件:ctivy(活动),Sevice(服务),roadcsteeiver(广播),ConentProvier(内容提供者),各组件之间要进行切换需要一个意图或企图Itent类,通过启动Strtnent()方法来使各组件进行跳转20Androi的五大布局方式:inarLayot(线
5、性布局) rmayot(帧布局)aleLayut(表格布局) AbsolutLayo(绝对布局) RelativeLayut(相对布局)。21五种布局方式可以相互嵌套,ndrid各种漂亮的界面都是通过嵌套布局而实现的。Andrd的线程,以及线程之间通信的中介:Handler类Aroid数据库:在第三章已经介绍过了.这里不再介绍Andoid配置文件:AndroidManiestl及rs资源文件中各种属性 布局方式 引用的资源等.Andid系统将插件ADT集成到了Eipse工具上,因此,一个rid程序启动后,系统会启动一个模拟器(muator),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。
6、我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定,目前最大支持0X00的分辨率。14项目程序结构Android工程基本结构目录包括:src (源代码)、e(droid系统自动生成的常量)、R(资源文件):主要存放程序界面的布局配置(。xml)文件和图片资源。AndridMaines. 是四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转.如图4。3,写明了Andid资源的类型和布局(图 4。3) 下图4.44。7为音乐播放器代码结构和各界面的配置文件,图像资源等,图4。4 为一个Arid工程所必须的结构,图45为该播放器的Jaa文件,图46为播
7、放器所用到的字符串,字体大小,字的颜色等配置文件,图4.7为该播放器的图片资源。(图 4。4) (图 4.5) (图 4.6)(图 4.)1.5项目Manifes.xml文件Androi系统的任何一个程序启动都需要Andoidaifest.xm来启动程序,任何一个新建的工程目录都会自动生成一个ridMfet.xml文件,此配置文件是整个程序能够正常运行的核心,它里面包含了AndroiSDK的版本,程序运行的默认ivity,当程序中的任何一个组件触发事件后,系统都会自动的去ndroidManfes。xml中寻找标识来作出相应的操作.任何一个ndrodManifest。Xm文件的格式都应为:ppl
8、atin ctery/itntfileativity icationuer-permisio /maifesAndroi系统有一个编码的规定,支持的编码是”ut-,当程序中出现乱码是,我们须将其编码格式转化为utf8”.在 Androidanfet。xm中会在第一行声明一句:?xmson=”1 ecodin=”t-”?。它是该系统支持的版本和编码。在第二行定义了我们需要使用的架构,该架构来自xlns:droid=”http:/scemaadroi。co/pre/androd”xmln(XMLamespace)是一个命名空间,它就像一条河的源头一样能让我们找到系统架构,每一个配置文件必须有这个x
9、mlns,否则程序中的所使用的所有资源将无法找到。如下程序,在applcaton元素我们定义ndroid:icon=drawble/onandod:ael=stri/app_na,nri:n是程序在手机中显示的图片,我们运用rawableico表示了对r/drwable目录下的icpn的引用。tring/appname表示了对res/alu目录下sting。ml中定义的app_ne参数的引用。 piiodroid:ion”aale/musicandri:lbel=tin/p_name caeandroi:me=”androiintenctegoy。LANCHR” / /aion ,它是我们需要
10、定义的D版本,例如我们将其值设定为anri:mindVeron,则表示此Aod工程所用的版本为1.6,Android还有1。1、.5、1、.、2.1这几个版本。如果我们需要对网络进行访问,比如打开一个网页,刚我还需要设置一个网络访问权限uspermisn,将其的值设置为android:nam=andoid.erisioITERET,我们就可以访问网络了。当然usespmisio还有很多其它的权限,例如GP定位权限,浏览器数据存取权限com.ndrod.brwser。permisson。R_HISR_BOOMARK等等。当程序的任何一个组件要用到时,都必须在ndrinifst。Xl文件中声明.四
11、大组件要使用前都需要声明,其声明方式如下:pviderproideractivty/eceiver其中声明vdr时还需要声明其授权 authorities。每个组件里面还有很多的属性,会根据程序的具体需要定义不同的属性.过滤器intfiler 有两种启动方式来启动界面:(1) 显示方式 显示方式是在代码中的直接启动组件,启动时会声明Intet,在它的构造方法Intent(组件1,组件2)中直接指定一个组件的名字,然后调用方法staIntn(intet)以启动指定的组件.(2)隐式方式隐式方式是通过过滤器来过滤完成的,启动的组件必须满足cn和ctegry的条件才能够启动该组件。这些属性是在Adr
12、oidManifes.Xml文件中声明的。两种启动方式都可以通过程序etAtion(CION常量)和sartAtiviy(itnt)或配置文件两种方式来实现组件的跳转。1.创建项目及具体结构分析本节着重分析项目结构中每一个功能的功能设计与创建方法。包括了项目的创建,界面的设计以及对项目结构的分析.1。2.1项目的创建可以使用Eipse插件创建一个简单的Andoi程序。在创建新项目时需要注意输入以下信息:Pectname(项目名称): chenhngMsiPlyerBuTaret(需要的版本):Adroid1icatonnme(应用名称):Muscayer1Packana(包名): c。com.
13、krlmusicCraeActivit(Jv项目名称): scPlayer在实际程序中,我们可以定义自己的名称。其中软件包名称尤为重要。系统中的每个应用程序都必须具有唯一的软件包名.因为在很多地方都会用到软件包名,所以一旦设定好软件包名就不要随意修改它。2。2界面设置配置文件etingXml布局结构如下:?mvrsion=1.0 ncding=tf8”?LinearLyou/Rdiorop/inarLayutTggleuton/IageButtn/最外层的LiarLayou里面嵌套多层Lnayou,子LinrLayut里面嵌套着单选按钮Riooup 和开关按钮TgleButon。RaoGrou
14、p 里面嵌套着3个RatioButon,即界面上显示的(单曲循环、随机播放、顺序播放)。播放模式用的是一个组件RadioGrop,这个组件有单项选择的功能,里面有RioButto项,多个adioButtn项只能同时选中一个,该播放器播放模式有单曲循环,随机播放,顺序播放等功能。edaPlaye有一个监听器,它监听着歌曲是否正在播放或者是否播放完成,当歌曲播放完成时,会触发方法OnCompletioisner(),在该方法里面可以处理歌曲播放完成后的操作。RdioGu可以进行单项选择操作。通过RadioBtn。ishecked(),如果返回true,刚该项被选中。.3结构分析(1)播放器的。Ja
15、va文件ava文件是本项目的主要功能实现程序。在n.om.krmuic程序包中的以下文件:AbumsAciity。jva, ArttActivty.ja, IteActvyjava, MainAtivity.ava, MscAivijava, MusicSeie.jaa, ongAcivityjava其中,AbusActivity。java文件主要描述并定义了专辑的视图界面以及功能作用。ArtstActii。jaa文件主要描述并定义了艺术家的视图界面以及功能作用。Itemctiity。java文件主要描述并定义了歌曲项目的视图界面以及功能作用。MainAcvit.java定义并实现了记忆上一次
16、运行该项目的动作,在下一次打开运行后继续该操作。usiActivt.a文件主要描述并定义了音乐播放器主界面的视图界面以及功能作用。MusicService.jav是音乐播放器在后台运行的程序.SngActit。jaa文件主要描述并定义了最近播放歌曲的记忆功能。()播放器的图片资源播放器的图片资源主要在re文件夹中。当然也可以通过更换res中的图片来更换音乐播放器各个UI界面的背景或其他按钮图片。对于不同的界面,比如播放界面,歌曲列表界面,艺术家界面或者最近播放界面,都快可以设置不同的背景图片,这就使整个播放器在色调方面不显得那么单一了。1.设计成果及分析在经过多次的程序调试及模拟器和真机测试后
17、,本音乐播放器的设计成果及界面效果图会在本节中做概要介绍。1.3。1 设计成果(1)音乐播放界面如下图5.1所示:(图5.1)(2)歌曲列表界面如下图.2所示(图。)(3)艺术家界面如下图。所示(图5。3)上述便是在经过多次的程序调试及模拟器和真机测试后,本音乐播放器的设计成果及界面效果图.32问题及分析(1)模拟器占用内存问题在一开始对程序进行调试的时候,偶尔会遇到计算机提示:系统盘空间不足之类的信息,这是由于Andoi模拟器每次运行时都会临时生成几个。tp临时文件。一段时间后,其可能占用几G的磁盘空间。所以,需要手工定期清理一下,清理目录为:DocmensandSetinAdminstra
18、torcSetingTempndroidEuatr 文件夹下的内容。在遇见此内存问题时,清理此目录临时文件后,模拟器便能正常运行了。(2)程序问题在调试程序过程中,总是遇见Actiity与Manifest之间通信有故障的相关问题,后经与老师同学讨论后,发现是Anodnifest。xl文件中,漏了将MsicActiviy定义入Maifes程序中。/ivittiityandrod:ame=”.Atisvity/activtyactivyano:am=。SonsAciity/ativity/activityactivityandrd:name=。AlumsActivityaciitadid:nme”
19、。MusiActivity”/ativiy/applicatio()歌曲名称及S文件夹不能显示的问题在运行程序后,有时歌曲名称,专辑,表演者等信息会出现乱码,预测估计是模拟器自带的字符串有错误。但由于时间问题,此问题到现在还未解决。另外,有时在运行程序的时候,会显示SD卡未能读取的错误,但时而又会正常工作,推测可能是模拟器稳定性问题。以上这两点问题都需要在之后慢慢的去琢磨推敲原因。 结论(1) 通过对ndroi手机平台的音乐播放器软件的开发,使我对Andrid音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Androi音乐播放器,要抓住开发的核心部分,音乐播放器大
20、体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。() 音乐播放器系统实现了播放器的基本功能:播放,暂停、停止、上/下一首、音量调节、文件浏览器、播放列表查询等功能.运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Jaa语言编写+SLte数据库支持Shareefrence配置文件的组合方式进行数据管理.实现了音乐播放器的系统编程。(3) 本次程序设计,对播放器的系统
21、结构框架做了精心的构思与设计,采用主要开发工具是Eclise1.+Java语言的支持,AnidDevelopmenTool的插件,和AdrodSDK2.2版本的全面结合,才使整个音乐播放器系统得以实现。(4) 总之,经过几个月的ndrid系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Andrid系统上的开发流程和开发模式有了深入的了解,这对我以后的Adri项目开发有很大的帮助。谢辞值此论文完成之际,衷心感谢我的导师金一鸣老师,在毕业设计的过程中给予我悉心的指导和帮助,他对待学识的严谨态度和作风让我感触颇深。感谢陈雯老师,作为我班的辅导员,在大学生活
22、期间,给予同学们的帮助和教导。感谢2008届电子科学与技术的全体同学,和我一起度过了难忘的四年时光.感谢我的爸爸妈妈,将我培养成人,教育我,帮助我。最后,对审批此论文的老师表示深深地谢意。参考文献 雍俊海编著。Jva程序设计习题集北京:清华大学出版社,2002asminBlancette,MarSumerield. C+ GIgrmmingwithJva.Pubisher:PretieHalPT,anuary12004。 153 朱福喜编著av语言习题与解析M.北京:清华大学出版社,20064赵文靖编著。Java程序设计基础与上机指导.北京:清华大学出版社,0065吴其庆编著。ava程序设计实
23、例教程M.北京:冶金工业出版社,2006王克宏著aa技术教程(基础篇)M北京:高等教育出版社,2002。04 JavaEye论坛.ttp:/ 20100415.8TrolltechInc。AndrodRfernceDocmntaton。2htp:/qt.nokia。com/ttle-c. 204年9耿祥义,Jav大学实用教程M,北京:电子工业出版社,205.310杨丰盛主编Androd 应用开发揭秘M西安:机械工业出版社,20-012511eoe。ndroid开发社区.ht:/ww。eeanroid。cm/ 201004-102高焕堂编Andrd 应用框架原理与程式设计(第三版)M北京:清华大
24、学出版社,0100313saneCndr, aureDecryAndd移动应用开发从入门到精通M北京:人民邮电出版社,01014G.N.Wasefipoein (a)nandroiobitadNIDDM: awmmrnthemetbolicyndromM. Biomdecine & Pharmacothray, Vlue53, Is10,cm199,462-651FedeioPerfetto, RbetoTarqin, ermneComealissen, GoroMello, AlesioTmetini,PaolaGaudano,FnsoMaus, FranzHlberg Circdianha
25、edrceoleptiniaroiversugyidbesitM。 Peptide, olm25, Issue8, Auguest04,Page12910.1esrineAttia, Ntairnier, BenitVeie, Mihelembllau, Phiipeeane, lvirZiegler, AainGynbry, Jean-LouisPaul, rnoGueriM。ImpctofAnddoerweightorbeitanislnesitacobsalandptprndialSR-BInBC1-meditedsrumcholesteolffuxapcitie.hrosclerosi
26、s, Vue,Isue,Janry1t,08 Pges95103.17AlssanDisfn, Gianluigie, FranescoPace AndointiforensicshrougalocalparadgmM。DigitalInstiaon,Vlue7,Spleet1, August2010, agesS83S91余志龙编著oogenroidSDK开发范例大全M北京:人民邮电出版社,209-1 张孝祥著 jva就业培训教程M北京:清华大学出版社,20 ing-ChioCen, JinnLiangChn,Teng-Wen. Andoi/OGibasedvehcaetwrkmagemen
27、tsystemM。 CoterCommunictin, Volum34, Iss2, ruar15th201, Pages169-21RetoMeir。 Android高级编程.北京:清华大学出版社,010。/C+课程设计项目报告目 录 项目简介11项目名称11。功能概述1 1. 开发人员及职责。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.12 需求分析.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.1. 功能需求。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。
28、.。.。.。.。.。.。1. 性能需求.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.2系统设计。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.331 代码设计.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.3.2 流程图。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。13 系统实现及测试.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.15 项目总结.。.。.。.。.。.。.。.。
29、.。.。.。.。.。.。.。.。.。.。05. 总体总结。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.5。2 个人总结.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。2项目简介. 项目名称多媒体播放器12 功能概述此款媒体播放器项目具有以下功能:(1)本地设定目录中包含音频文件的浏览和播放(支持mp3格式)。()本地设定目录中包含图片文件的浏览(支持p格式).(3)本地设定目录中包含视频文件的浏览和播放(支持mp格式)。()最近播放列表功能,保存最近播放的1个文件,保存最近追加的0个文件。视频,音频,图片是分开的,都
30、有最近播放列表和最近追加列表。1。3 开发人员及职责负责视频模块,以及最后的模块整合,报告的编写负责音频模块,报告的编写负责图片模块,报告的编写2 需求分析1. 功能需求本设计将要实现的是一个单机多媒体播放器,可以对音频、视频、图片进行查看。从其目标功能及特点分析,将本软件功能划分如下:(1) 视频播放器: 可以打开MP4格式的视频文件。在本地文件夹中将P4格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至视频播放窗口。 在播放窗口里,查看视频时,有“播放,“暂停”,“停止”功能。播放中,还有“前进”,“后退”功能,即快进快退功能,以秒为一个单位,这个单位也可以在代码中
31、进行修改。在观看视频时,还有“上一曲,下一曲”功能,即查看之前添加在播放列表里的视频项。同时,也可以选择播放模式“循环,顺序,随机,该功能也是基于播放列表实现的。在右边功能键里,还有音量调节,静音功能。除此以外,还可以进行全屏浏览,按“SC”退出全屏。在主页面,还有两个数据框“最近追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。这两个列表只按照时间,保存最近的项目,且最多保存0个。(2) 音频播放器可以打开M格式的音频.在本地文件夹中将3格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至音频播放窗口。并且,在主窗口,还有两个数据框“最近
32、追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。这两个列表只按照时间,保存最近的项目,且最多保存10个.(此处为该多媒体公共窗口,功能相同,下面的图片浏览器也是一样的.)在播放窗口里,听取音频时,有“播放,“暂停”,“停止”功能。同样也会有“前进,后退”功能,“上一曲,下一曲”功能,播放模式中的“循环,顺序,随机”,这些功能与上面所述的视频播放器相同。(3) 图片浏览器 可以打开BMP格式的图片。主窗口同视频、音频播放器一样,在此不多赘述.在浏览图片窗口中,会有“上一张,下一张”功能键,可以在“播放列表,最近播放项目,最近追加项目”任何一个列表中循环,可以自由
33、选择。当图片浏览到所选列表的最后一张时,会自动循环至列表第一张。()在主窗口的中,在列表中已添加文件后,有两种方式可以打开文件.一是选中想要打开的文件,点击“播放文件”按钮,二是直接双击列表中的文件,便可进入到相应子窗口进行查看。(5)当单独拿出e文件运行时,会自动在x所在文件里创建个文本文档,分别存放三个模块(视频,音频,图片)的三个列表(播放列表,最近播放项目,最近追加项目)信息.。. 性能需求 (1)硬件平台要求由于本软件为单机软件,不需进行大量的数据读写和数据交换,故对系统硬件配置的要求并不高,只要能够平稳运行Widows操作系统的硬件平台,都能够使用本软件。()软件开发环境1。OS:
34、icrosoft Windows XPS2.oplier:Viual+ , sual tudio 2005 Tea ste或更高版本 。 MSDN Librar3 系统设计3。1。代码设计(1)音频、视频模块1。创建播放器对话框 右击Diaog,点击插入,在弹出的对话框中点击Dialog,再点击新建。 双击新建的得对话框的ID,弹出新建的对话框,删除里面所有的控件。 右击,建立类向导,此时弹出Ading a las对话框,点击ok,输入nae为player, 点击确定后退出。 再在对话框中右击,选择插入tiveX控件,选择WindoMediaaer,之后在对话框中可以看到一个视频控件。右击,选
35、择属性,在控制中将选择模式改为None,在视频控件中也就看不到一开就有的按键了。再次右击视频控件,选择建立类向导.点击Mee Variable,选择视频控件的I(默认为IOX),点击Add Varibles。此时会弹出一个对话框。 点击确定后,弹出Comir Clas对话框后,点击OK。此时可以看到建立了很多个类。之后为添加成员变量。Nam为mpla,Categr为Control,Variablyp为CWMPPayr4点击确定之后可以看到下面的效果.2.控件与函数 声明全局变量CStrng paynae,用于记录播放地址;t nte用于记录播放的类型;itum1,num2,num用于记录播放的地址在播放列表中的位置,u2用于记录播放列表中总的播放地址.构建成员函数idplayer::nply(Cig pna,int n,int ,nt t)plyname=name; um=n;nu2m;ntye=; 将前台所选择播放的信息通过函数传递给播放器对话框中在对话框中放上以下几个控件。控件ID标题控件ID标题Push Btt