1、上海第二工业大学本科毕业设计(论文)1本科毕业论文题目基于ANDROID的MP3音乐播放器设计学生专业电子与电气工程专业年级2009级指导教师日期2013年5月16日上海第二工业大学本科毕业设计(论文)2基于ANDROID的MP3音乐播放器设计摘要当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉,因此,也逐步的提高了对系统的要求,本文主要是对ANDROID系统上音乐播放器应用程序的设计与实现进行讨论。本论文的音乐播放器采用了ANDROID开源系统技术,利用JAVA语言和ECLIPSE编辑工具对播放器进行编写,同时给出了详
2、细的系统设计过程、部分界面图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、歌词显示、网络音乐在线播放与下载等功能于一体,性能良好,在ANDROID系统中能独立运行。该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式、以及网络音乐搜索。关键词ANDROID;开源系统;音乐播放器;JAVA;ECLIPSE上海第二工业大学本科毕业设计(论文)3ABSTRACTTHEPACEOFLIFEINTODAYSSOCIETY,WITHMOREADVANCEDHARDWAREMOBILEDEVICESFORMOBILEDEVICES,PE
3、OPLEMOREANDMOREISALSOHIGH,THEREQUIREMENTSFROMTHEPREVIOUSPURSUITTOPURSUETHEVISUALTECHNOLOGY,THEREFORE,ALSOGRADUALLYIMPROVETHESYSTEMREQUIREMENTS,THEPAPERMAINLYISTOTAKEONAMUSICPLAYERFROMSYSTEMDESIGNANDREALIZATIONOFTHEAPPLICATIONISDISCUSSEDTAKETHESYSTEMISANOPENSOURCE,ITISBASEDONTHEOPERATINGSYSTEM,USETHE
4、LINUXMUSICPLAYEROFTHEANDROIDOPENSOURCESYSTEMTECHNOLOGY,USINGTHEJAVALANGUAGEANDEDITINGTOOLSFORPLAYERSTOECLIPSEPRESENTSTHEDETAILEDDESIGNPROCESS,THEPARTOFTHESYSTEM,THISPAPERALSOFLOWPROCESSPROBLEMSANDSOLVINGMETHODSAREDISCUSSEDINDETAIL,ANDTHEMUSICPLAYEREPISODE,PAUSE,STOPANDA,NEXT,VOLUMEADJUSTMENT,LYRICSD
5、ISPLAYFUNCTIONSANDNETWORKONLINEMUSICPLAYERANDDOWNLOAD,SUCHASPERFORMANCEISGOOD,CANOPERATEINDEPENDENTLYINTHEANDROIDSYSTEMTHISPLAYERHASACCESSTOTHEFILEBROWSERPHONEFUNCTIONS,SONGSANDPLAYEDPATTERN,OPENANDONLINEMUSICSEARCHKEYWORDSANDROIDOPENSOURCESYSTEMMUSICPLAYERJAVAECLIPSE上海第二工业大学本科毕业设计(论文)4目录第一章绪论611选题的
6、背景612选题的目的及意义613本课题涉及内容的研究现状7第二章系统需求分析821功能需求8211播放器的基本控制需求8212播放列表的基本功能922网络音乐在线播放需求9第三章ANDROID项目介绍1131ANDROID简介1132ANDROIDFEATURES特性1133ANDROID基本框架(ANDROIDARCHITECTURE)1234ANDROID系统的四大组件1435SQLITE简介1536搭建开发环境16第四章音乐播放器的设计1941音乐播放器的工程19411ANDROID项目19412工程程序结构20413ANDROIDMANIFESTXML文件2142模块设计24421主界
7、面模块设计24上海第二工业大学本科毕业设计(论文)5422本地音乐模块设计26423本地歌曲播放模块设计29424网络歌曲模块设计33425网络下载模块设计39426网络歌曲播放模块设计40第五章系统测试4451软件测试的环境4452测试阶段44结论47致谢48参考文献49上海第二工业大学本科毕业设计(论文)6第一章绪论11选题的背景随着计算机的广泛运用,手机市场的迅速发展,各种音频资源也在网上广为流传,这些资源卡是平常,但已经渐渐成为人们生活中必不可少的一部分了。现今社会生活紧张,而欣赏音乐史其中最好的舒缓压力的方式之一。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味最求外观花俏,功
8、能庞大,对用户的手机造成很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发简单易用的音乐播放器,将各种性能优化,继承播放器的常用功能,满足一般用户听歌的需求。12选题的目的及意义ANDROID是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于ANDROID平台的。随着计算机的广泛运用,手机市场的迅速发展,各种音
9、频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能还能播放RMVB格式的视频文件。要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码
10、方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本上海第二工业大学本科毕业设计(论文)7身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进,快退,音量调节等。播放模式也比较完善,有单曲,顺序,循环,随机播放等模式。13本课题涉及内容的研究现状ANDROID一词的本义指“机器人”,同时也是GOOGLE于2007年11月5日宣布的基于LINUX平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端
11、打造的真正开放和完整的移动软件。ANDROID是基于LINUX内核的软件平台和操作系统,早期由GOOGLE开发(在华注册商标名为“安致”),后由开放手机联盟(OPENHANDSETALLIANCE)开发。它采用了软件堆层(SOFTWARESTACK,又名以软件叠层)的架构,主要分为三部分。低层以LINUX内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以JAVA作为编写程序的一部分。另外,为了推广此技术,GOOGLE和其它几十个手机公司建立了开放手机联盟。ANDROID在未公开之前常被传闻为GOOGLE电话或GPHONE。大多传闻认为GOOGLE开发的是自己的手机电话产品,而
12、不是一套软件平台。到了2010年1月,GOOGLE开始发表自家品牌手机电话的NEXUSONE。目前最新SDK版本为ANDROID422。14本系统要实现的基本目标和研究内容本文要实现的基本目标和主要研究内容有以下几个方面1音乐播放器集播放、暂停、停止、快进、上一首、下一首2设置音量调节,窗口与桌面的切换3同步歌词显示4网络在线播放与下载上海第二工业大学本科毕业设计(论文)8第二章系统需求分析21功能需求211播放器的基本控制需求根据项目的目标,我们可获得项目系统的基本需求,一下从不同的角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放
13、列表管理需求,播放器友好性需求和播放器扩展卡需求。图21播放器基本控制图在播放器正在运行时,用户单击“播放”按钮,播放器将播放选中的播放列表中的音乐,并同时显示当前进度;当歌曲未暂停或停止时,用户单击“暂停”按钮,播放器将进入暂停状态;播放器正在播放或暂停时,用户单击“停止”按钮,播放器将停止播放或暂停时,用户点击“上一首”或者“下一首”按钮,播放器将播放上一首或下一首歌曲。同时歌词都会同步显示在播放界面的。上海第二工业大学本科毕业设计(论文)9212播放列表的基本功能图22播放列表基本功能图从图22中看出播放列表功能的参与者依然是用户,这表达了客户体验的要求,当用户选中列表中的一首歌时,会有
14、一个列表选项,具备播放、移除功能。22网络音乐在线播放需求要求可以自行搜索网络歌曲,通过HTTP/APIJAMENDOCOM/GET2/IDNAMEURLIMAGERATINGARTIST_NAME/ALBUM/JSON/ORDERRATINGWEEK_DESCARRAYADAPTERADAPTERNEWARRAYADAPTERTHIS,ANDROIDRLAYOUTSIMPLE_LIST_ITEM_1,STRSLISTVIEWNEWLISTVIEWTHISLISTVIEWSETADAPTERADAPTER/添加监听,当点击时执行MYONITEMCLICKLISTENER。LISTVIEWSET
15、ONITEMCLICKLISTENERNEWMYONITEMCLICKLISTENERTHISSETCONTENTVIEWLISTVIEW上海第二工业大学本科毕业设计(论文)25PRIVATECLASSMYONITEMCLICKLISTENERIMPLEMENTSONITEMCLICKLISTENEROVERRIDEPUBLICVOIDONITEMCLICKADAPTERVIEWARG0,VIEWARG1,INTPOSITION,LONGIDSWITCHPOSITION/跳转到网络音乐界面CASE0SEARCHACTIVITYLAUNCHHOMEACTIVITYTHISFINISHBREAK/
16、跳转到网络下载界面CASE1INTENTNEWINTENTINTENTSETCLASSHOMEACTIVITYTHIS,LISTACTIVITYCLASSSTARTACTIVITYINTENTFINISHBREAK/跳转到本地音乐界面CASE2INTENTNEWINTENTINTENTSETCLASSHOMEACTIVITYTHIS,LOADACTIVITYCLASSSTARTACTIVITYINTENTFINISHBREAKDEFAULTBREAK上海第二工业大学本科毕业设计(论文)26422本地音乐模块设计首先,我们来看一下这个本地音乐的列表界面,本地音乐模块运行结果如图所示。图49本地音
17、乐界面(1)界面设计本地音乐播放列表是一个LISTVIEW控件,LISTVIEW中的ITEM采用LINEARLAYOUT布局,其中包含了歌曲播放状况,歌曲名称信息、歌手名称信息和歌曲时长信息,第一个用IAMGEVIEW显示,后三项用TEXTVIEW显示。布局文件是RLAYOUTMUSIC_LIST。单机MENU建,会出现MENU菜单,刷新库和退出。(2)界面功能的实现主要功能1本地音乐读取与刷新2本地音乐的显示3本地音乐点击播放功能实现流程图如下图410上海第二工业大学本科毕业设计(论文)27图410本地音乐功能实现流程图A)本地音乐读取与刷新MENU中有俩个子键,刷新库和退出,这里刷新库是重
18、新读取SD卡中的所有音乐文件,刷新列表,并提示更新的情况,增加或减少了多少歌曲。这里我们将扫描SD,并获取所有音乐的方法封装成一个类SCANSDRECEIVER,这是一个广播事件。代码如下/发送广播,进行SD卡扫描SCANSDRECEIVERNEWSCANSDRECEIVERUTILSSCANSDCARDLOADACTIVITYTHIS,SCANSDRECEIVER/接受扫描结果并更新列表IFINTENTGETACTIONEQUALSDEFINEACTIONMUSIC_LIST/列表更新CURSORCURSORCONTEXTGETCONTENTRESOLVERQUERYMEDIASTOREAU
19、DIOMEDIAEXTERNAL_CONTENT_URI,DEFINEPROJECTION,NULL,NULL,NULLADAPTERSETMYCURCURSORADAPTERNOTIFYDATASETCHANGED/通知UI更新B)本地音乐的显示LISTVIEW的加载显示是通过MUSICLISTADAPTER的方法类实现的,在这个方法类中实现了列表信息的加载,主要代码如下PUBLICVIEWGETVIEWINTPOSITION,VIEWCONVERTVIEW,VIEWGROUPPARENTCONVERTVIEWLAYOUTINFLATERFROMMYCONINFLATERLAYOUTMUSI
20、C_LIST,NULLMYCURMOVETOPOSITIONPOSITION上海第二工业大学本科毕业设计(论文)28TEXTVIEWTV_MUSICTEXTVIEWCONVERTVIEWFINDVIEWBYIDRIDMUSIC_TITLE/歌曲名IFMYCURGETSTRING1LENGTH24TRYSTRINGMUSICTITLESUBSTRINGMYCURGETSTRING1TRIM,24TV_MUSICSETTEXTMUSICTITLECATCHUNSUPPORTEDENCODINGEXCEPTIONEEPRINTSTACKTRACEELSETV_MUSICSETTEXTMYCURGET
21、STRING1TRIM/艺术家TEXTVIEWTV_SINGERTEXTVIEWCONVERTVIEWFINDVIEWBYIDRIDSINGERIFMYCURGETSTRING2EQUALS“TV_SINGERSETTEXTRSTRINGUNKNOWN_ARTISTELSETV_SINGERSETTEXTMYCURGETSTRING2/时间TEXTVIEWTV_TIMETEXTVIEWCONVERTVIEWFINDVIEWBYIDRIDTIMETV_TIMESETTEXTTOTIMEMYCURGETINT3/图片IMAGEVIEWIMGIMAGEVIEWCONVERTVIEWFINDVIEWB
22、YIDRIDLISTITEM_IMAGEIFPOSITIONPOSIMGSETIMAGERESOURCERDRAWABLEISPLAYINGELSEIMGSETIMAGERESOURCERDRAWABLEITEMRETURNCONVERTVIEWC)本地音乐点击播放之后为LISTVIEW添加监听,当我们点击一首歌曲的时候可以跳转到相应的播放界面进行播放,监听代码如下CLASSLISTITEMCLICKLISTENERIMPLEMENTSONITEMCLICKLISTENER上海第二工业大学本科毕业设计(论文)29OVERRIDEPUBLICVOIDONITEMCLICKADAPTERVIEWA
23、RG0,VIEWVIEW,INTPOSITION,LONGID/点击歌曲时跳转到本地音乐播放界面MP3PLAYERACTIVITY中进行播放INTENTINTENTNEWINTENTLOADACTIVITYTHIS,MP3PLAYERACTIVITYCLASSINTENTPUTEXTRA“_IDS“,_IDSINTENTPUTEXTRA“_TITLES“,_TITLESINTENTPUTEXTRA“_ARTISTS“,_ARTISTSINTENTPUTEXTRA“_ALBUMS“,_ALBUMSINTENTPUTEXTRA“POSITION“,POSITIONINTENTPUTEXTRA“_P
24、ATH“,_PATHSTARTACTIVITYINTENTFINISH423本地歌曲播放模块设计该模块可以控制歌曲的播放进度,显示正在播放的歌曲信息,歌词同步显示,单击进行上一首、下一首、暂停、播放等功能。界面如图所示。图411本地音乐播放界面(1)界面设计MP3PLAYERACTIVITY的界面是自定义的ABSOLUTELAYOUT,我们将自定义的布局封装成一个类MP3PLAYERVIEW。代码如下/添加背景BEGINMBGVIEWNEWBGVIEWMP3PLAYERACTIVITYADDVIEWMBGVIEW/添加背景END/添加MP3信息面板BEGIN上海第二工业大学本科毕业设计(论文)
25、30MMP3INFOVIEWNEWMP3INFOVIEWMP3PLAYERACTIVITYMMP3INFOVIEWSETLAYOUTPARAMSNEWLAYOUTPARAMSLAYOUTPARAMSFILL_PARENT,CONFIGGETHEIGHTPIXELS200/480,0,0ADDVIEWMMP3INFOVIEW/添加MP3信息面板END/歌词BEGINLRCVIEWLRC_VIEWNEWLRCVIEWMP3PLAYERACTIVITYLRC_VIEWSETIDDEFINEIDMP3_LRC_IDLRC_VIEWSETLAYOUTPARAMSNEWLAYOUTPARAMSLAYOUT
26、PARAMSFILL_PARENT,CONFIGGETHEIGHTPIXELS200/480,0,CONFIGGETHEIGHTPIXELS200/480LRC_VIEWSETGRAVITYGRAVITYCENTERLRC_VIEWSETTEXT“LRC“ADDVIEWLRC_VIEW/歌词ENDIMAGEVIEWIMAGEVIEWNEWIMAGEVIEWMP3PLAYERACTIVITYIMAGEVIEWSETLAYOUTPARAMSNEWLAYOUTPARAMSLAYOUTPARAMSFILL_PARENT,LAYOUTPARAMSWRAP_CONTENT,0,CONFIGGETHEIGH
27、TPIXELS240/480IMAGEVIEWSETIMAGERESOURCERDRAWABLEMP3_SYMBOLIMAGEVIEWSETSCALETYPESCALETYPEFIT_CENTERADDVIEWIMAGEVIEW/添加MP3控件面板MMP3CTRVIEWNEWMP3CTRVIEWMP3PLAYERACTIVITYMMP3CTRVIEWSETLAYOUTPARAMSNEWLAYOUTPARAMSCONFIGGETWIDTHPIXELS280/320,CONFIGGETHEIGHTPIXELS50/480,CONFIGGETWIDTHPIXELS20/320,CONFIGGETHE
28、IGHTPIXELS350/480ADDVIEWMMP3CTRVIEW(2)界面功能的实现本地音乐播放模块的功能主要有1播放歌曲信息显示2播放控制,上一首、下一首、暂停、播放、快进、快退功能上海第二工业大学本科毕业设计(论文)313歌词同步显示本地歌曲播放功能实现流程图如下图412图412本地歌曲播放功能实现流程A)播放歌曲信息显示从SERVICE中实时接受播放歌曲信息并且实时更新,其中播放时间是通过MEDIAGETCURRENTPOSITION这个方法获取。/SERVICE中歌曲的播放时间实时发送。HANDLERNEWHANDLER/HANDLER是线程OVERRIDEPUBLICVOIDH
29、ANDLEMESSAGEMESSAGEMSGSUPERHANDLEMESSAGEMSGIFMSGWHAT1CURRENTTIMEMEDIAPLAYERGETCURRENTPOSITIONINTENTPUTEXTRA“CURRENTTIME“,CURRENTTIMESENDBROADCASTINTENT/发送广播HANDLERSENDEMPTYMESSAGEDELAYED1,600/MP3PLAYERACTIVITY本地播放器中接受当前时间PROTECTEDBROADCASTRECEIVERMUSICRECEIVERNEWBROADCASTRECEIVER/注册广播接受者BROADCASTREC
30、EIVER,等待接受信息PUBLICVOIDONRECEIVECONTEXTCONTEXT,INTENTINTENTSTRINGACTIONINTENTGETACTIONIFACTIONEQUALSDEFINEACTIONMUSIC_CURRENT/获取当前位置CURRENTPOSITIONINTENTGETEXTRASGETINT“CURRENTTIME“上海第二工业大学本科毕业设计(论文)32/显示当前播放时间CURRENTTIMESETTEXTUTILSTOTIMECURRENTPOSITION/。省略部分代码/B)歌词同步显示这里我主要介绍一下歌词同步显示的功能。在PLAYERSERV
31、ICECLASS中我们接受了来自MP3PLAYERACTIVITY中传来的歌曲信息,其中就包含歌曲的路径_PATHPOSITION,当播放歌曲时,会执行PLAY()方法。所以我们将歌词的处理放在PLAY()方法中。LRCPROCESS类是处理歌词文件的,分离出歌词文件里面的时间,和与时间对应的歌词,将时间归成时间轴,将歌词放入ARRAYLIST中,这样当歌曲播放到那个时间点时,从ARRAYLIST获取对应的歌词显示。歌词同步的原理图413歌词同步的原理代码如下PRIVATEVOIDPLAY/初始化歌词配置MLRCPROCESSNEWLRCPROCESS/读取歌词文件MLRCPROCESSREA
32、DLRC_PATHPOSITION/传回处理后的歌词文件/创建对象LRCLISTNEWARRAYLISTLRCLISTMLRCPROCESSGETLRCCONTENTMP3PLAYERACTIVITYLRC_VIEWSETSENTENCEENTITIESLRCLIST/切换带动画显示歌词MP3PLAYERACTIVITYLRC_VIEWSETANIMATIONANIMATIONUTILSLOADANIMAT上海第二工业大学本科毕业设计(论文)33IONPLAYERSERVICETHIS,RANIMALPHA_Z/启动线程MHANDLERPOSTMRUNNABLE/初始化歌词配置IFMEDIAP
33、LAYERNULLMEDIAPLAYERSTARTISFIRSTINIT0REWINDHANDLERREMOVECALLBACKSREWINDFORWARDHANDLERREMOVECALLBACKSFORWARD424网络歌曲模块设计这里的网络歌曲我是采取自己搜索的方式,比如我搜索的关键字是ROSE,那么会将SEARCH出来的网络歌曲显示出来。图414网络音乐界面根据JAMENDOAPI的开发文档,我们可以按照ARTIST,TAG,USERSTARREDALBUMS来搜索关键字,如图415。上海第二工业大学本科毕业设计(论文)34图415搜索方式界面(1)界面设计首先是搜索栏的布局,一个文本
34、输入框,一个按钮。图416搜索框下面的歌曲显示列表是一个FIXEDVIEWFLIPPER,FIXEDVIEWFLIPPER用来显示查上海第二工业大学本科毕业设计(论文)35询之前的提示、查询成功后的结果(LISTVIEW)和查询不到结果的文字提示。最底下的选择列表是一个SPINNER控件(2)界面功能的实现网络歌曲模块主要功能1根据搜索方式进行搜索网络歌曲2显示歌曲信息和歌曲图片功能实现的流程图如下图417上海第二工业大学本科毕业设计(论文)36图417网络歌曲功能实现的流程图A)根据搜索方式进行搜索网络歌曲1首先看DOINBACKGROUNDINTEGERPARAMS,主要是根据获取SEAR
35、CHSPINNER选中的SEARCHMODE来调用不同SEARCH方法,MSEARCHMODEPARAMS0中的PARAMS0是调用在这个内部类的EXECUTE方法传进来的MSEARCHSPINNERGETSELECTEDITEMPOSITION。2JAMENDOGET2APISERVICENEWJAMENDOGET2APIIMPL获得从读取服务器的封装API,这里先不讨论API。然后根据传入的ID值调用不同的方法来获取相应的内容,以ID0为例ALBUMSSERVICESEARCHFORALBUMSBYARTISTQUERYSEARCHACTIVITYTHISMSEARCHMODESEARCH
36、MODEARTIST调用API的SEARCHFORALBUMSBYARTIST方法根据用户输入的MSEARCHEDITTEXTGETTEXT的查询内容来从服务器读取相应的ABLUM。然后设置MSEARCHMODE。最后将获得的ABLUM传递给适配器ALBUMADAPTER。如果数据读取过程中捕获到WSERROR就调用PUBLISHPROGRESS显示在也面上并结束线程。3关注DOSTUFFWITHRESULTINTEGERRESULT方法,这是实现的LOADINGDIALOG的一个抽象方法,当DOINBACKGROUND方法返回值不为NULL时调用。上海第二工业大学本科毕业设计(论文)37给L
37、ISTVIEW设置刚刚获取到数据的ADAPTER,判断LISTVIEW中是否有数据,如果有MVIEWFLIPPER就显示第一个VIEWSEARCHLISTVIEW,如果没有就显示第二个VIEWNO_RESULTS。然后根据SEARCH类型不同设置相应的ITEM点击事件。代码如下PUBLICINTEGERDOINBACKGROUNDINTEGERPARAMSMSEARCHMODEPARAMS0/判断选择的模式,选择搜索方法SWITCHMSEARCHMODECASE0/ARTISTSEARCHALBUMSEARCH0BREAKCASE1/TAGSEARCHALBUMSEARCH1BREAKCASE
38、2/STARREDALBUMSEARCHALBUMSEARCH3BREAKDEFAULTRETURNMSEARCHMODE/ARTISTSEARCH的实现方法PUBLICALBUMSEARCHFORALBUMSBYARTISTSTRINGARTISTNAMETHROWSJSONEXCEPTION,WSERRORTRYARTISTNAMEURLENCODERENCODEARTISTNAME,“UTF8“/获取JSON对象STRINGJSONSTRINGDOGET“IDNAMEURLIMAGERATINGARTIST_NAME/ALBUM/JSON/ORDERRATINGWEEK_DESCJSON
39、ARRAYJSONARRAYALBUMSNEWJSONARRAYJSONSTRINGRETURNALBUMFUNCTIONSGETALBUMSJSONARRAYALBUMSCATCHUNSUPPORTEDENCODINGEXCEPTIONEEPRINTSTACKTRACERETURNNULLCATCHNULLPOINTEREXCEPTIONEEPRINTSTACKTRACE上海第二工业大学本科毕业设计(论文)38THROWNEWJSONEXCEPTIONEGETLOCALIZEDMESSAGEPUBLICVOIDDOSTUFFWITHRESULTINTEGERRESULTMSEARCHLIST
40、VIEWSETADAPTERMADAPTERIFMSEARCHLISTVIEWGETCOUNT0MVIEWFLIPPERSETDISPLAYEDCHILD0/显示结果ELSEMVIEWFLIPPERSETDISPLAYEDCHILD1/提示没有搜索到结果/RESULTSAREALBUMSIFMSEARCHMODEEQUALS0|MSEARCHMODEEQUALS1|MSEARCHMODEEQUALS3MSEARCHLISTVIEWSETONITEMCLICKLISTENERMALBUMCLICKLISTENERB)显示歌曲信息和歌曲图片当搜索到结果时,会将图片以另外的线程进行异步下载,并且保存
41、到用户的缓存文件中,以便下次显示,这样会减少网络的使用,降低CPU使用率。/下载和缓存图片,保存到用户缓存文件中PUBLICCLASSIMAGECACHEEXTENDSWEAKHASHMAPPRIVATESTATICFINALLONGSERIALVERSIONUID1LPUBLICBOOLEANISCACHEDSTRINGURLRETURNCONTAINSKEYURL/加载显示图片HOLDERIMAGESETDEFAULTIMAGERDRAWABLENO_CDHOLDERIMAGESETIMAGEURLMLISTGETPOSITIONGETIMAGE,POSITION,GETLISTVIEW上
42、海第二工业大学本科毕业设计(论文)39425网络下载模块设计图418网络下载音乐界面/获取并显示已下载网络歌曲MDOWNLOADMANAGERJAMENDOAPPLICATIONGETINSTANCEGETDOWNLOADMANAGERMPLAYERINTERFACEJAMENDOAPPLICATIONGETINSTANCEGETPLAYERENGINEINTERFACELISTVIEWNEWLISTVIEWTHISLISTVIEWSETBACKGROUNDRESOURCERDRAWABLELIST_BGLISTVIEWSETCACHECOLORHINTCOLORTRANSPARENTJOBS
43、MDOWNLOADMANAGERGETALLDOWNLOADSADAPTERDOWNLOADJOBADAPTERLISTVIEWGETADAPTERADAPTERNEWDOWNLOADJOBADAPTERLISTACTIVITYTHISLISTVIEWSETADAPTERADAPTERADAPTERSETLISTJOBSLISTVIEWSETONITEMCLICKLISTENERNEWLISTITEMCLICKLISTENERSETCONTENTVIEWLISTVIEW/播放音乐上海第二工业大学本科毕业设计(论文)40PRIVATEVOIDPLAYNOWINTPOSITIONPLAYLISTA
44、DDPLAYLISTENTRYGETJOBPOSITIONGETPLAYLISTENTRYPLAYLISTSELECT0MPLAYERINTERFACEOPENPLAYLISTPLAYLISTMPLAYERINTERFACEPLAY426网络歌曲播放模块设计网络歌曲的播放时根据网络连接地址进行播放的。所以和本地音乐是不一样的播放原理,我就做单独做了一个网络音乐的播放界面。图419网络音乐播放界面网络歌曲播放主要功能1网络的歌曲播放2播放控制3网络下载和歌词显示网络歌曲播放模块的主要功能实现流程图420上海第二工业大学本科毕业设计(论文)41图420网络歌曲播放模块的主要功能实现流程图A)网络的
45、歌曲播放首先介绍一下参数的传递,获取PLAYLIST播放列表。PLAYLISTPLAYLISTGETINTENTGETSERIALIZABLEEXTRA“PLAYLIST“PRIVATEVOIDLOADPLAYLISTPLAYLISTPLAYLISTLOGIJAMENDOAPPLICATIONTAG,“PLAYERACTIVITYLOADPLAYLIST“IFPLAYLISTNULLRETURNMPLAYLISTPLAYLISTIFMPLAYLISTGETPLAYERENGINEGETPLAYLISTGETPLAYERENGINEOPENPLAYLISTMPLAYLIST/播放,调用PLAY(
46、)方法GETPLAYERENGINEPLAYB)播放控制上海第二工业大学本科毕业设计(论文)42/设置播放模式OVERRIDEPUBLICVOIDSETPLAYBACKMODEPLAYLISTPLAYBACKMODEAMODEMPLAYLISTSETPLAYLISTPLAYBACKMODEAMODE/前一首PUBLICVOIDFORWARDINTTIMEMCURRENTMEDIAPLAYERSEEKTOMCURRENTMEDIAPLAYERGETCURRENTPOSITIONTIME/后一首OVERRIDEPUBLICVOIDREWINDINTTIMEMCURRENTMEDIAPLAYERSE
47、EKTOMCURRENTMEDIAPLAYERGETCURRENTPOSITIONTIME/以前的播放列表OVERRIDEPUBLICVOIDPREVLISTIFPREVPLAYLISTNULLOPENPLAYLISTPREVPLAYLISTPLAYC)网络下载和歌词显示介绍一下播放的歌曲下载,这是获取正在播放的音乐网络连接UIL,通过HTTP40解析获取输入流。上海第二工业大学本科毕业设计(论文)43图421下载界面/点击LYRICS,获取显示歌词文件PUBLICVOIDLYRICSONCLICKVIEWVTRACKTRACKGETPLAYERENGINEGETPLAYLISTGETSELE
48、CTEDTRACKGETTRACKNEWLYRICSDIALOGPLAYERACTIVITYTHIS,TRACKSHOWMSLIDINGDRAWERANIMATECLOSE/点击DOWNLOAD,现在正在播放的歌曲PUBLICVOIDDOWNLOADONCLICKVIEWV/ALERTDIALOG对话框,提示确定下载或者取消ALERTDIALOGALERTDIALOGNEWALERTDIALOGBUILDERPLAYERACTIVITYTHISSETTITLERSTRINGDOWNLOAD_TRACK_QSETPOSITIVEBUTTONRSTRINGOK,NEWDIALOGINTERFACE
49、ONCLICKLISTENER/确定下载,获取网络连接并进行下载PUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHBUTTONJAMENDOAPPLICATIONGETINSTANCEGETDOWNLOADMANAGERDOWNLOADGETPLAYERENGINEGETPLAYLISTGETSELECTEDTRACKSETNEGATIVEBUTTONRSTRINGCANCEL,NULLCREATEALERTDIALOGSHOWMSLIDINGDRAWERANIMATECLOSE上海第二工业大学本科毕业设计(论文)44第五章系统测试51软件测试的环境1、软件测试的性能要求软硬件要求系统环境WINXP硬件系统环境P424、1024MB内存、80G硬盘。系统运行时对数据的保密性要求不高对一般的数据不要求进行加密。此外,对其他软件几乎没有依赖性,程序健壮性较好。2、测试建立一张模拟的SD卡,上传歌曲文件;分别测试其的播放、暂停、停止、上