基于android系统的音乐播放器设计与实现_第1页
基于android系统的音乐播放器设计与实现_第2页
基于android系统的音乐播放器设计与实现_第3页
基于android系统的音乐播放器设计与实现_第4页
基于android系统的音乐播放器设计与实现_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计(论文)题目基于ANDROID系统的音乐播放器设计与实现院系计算机科学系专业计算机科学与技术姓名学号指导教师教师职称填写日期2012年月日摘要当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉效果及用户体验,因此,也逐步的提高了对系统的要求。本文主要是在ANDROID系统上对音乐播放器应用程序的设计与实现进行讨论,通过这一过程来进一步学习与应用ANDROID平台,这样对个人的未来发展也很有意义。本论文的音乐播放器采用了ANDROID开源系统技术,利用JAVA语言和ECLIPSE开发工具对播放器代码进行编写。同时给出了详细的系统设计过程、部分界面截图及主要的功能流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集下载、播放、暂停、停止等功能于一体,性能良好,在ANDROID系统中能独立运行。MP3是一种声音文件的压缩格式,由于本播放器只限于应用层程序的探讨,所以对具体的压缩算法不做深究。实验证明,基于ANDROID平台的软件开发简单,使用方便简洁,必将成为未来几年的发展方向,具有普遍意义。关键词ANDROID,音乐播放器,MP3ABSTRACTTODAYSINCREASINGLYFASTPACEOFLIFEINSOCIETY,WITHTHEHARDWAREOFMOBILEDEVICESBECOMEINCREASINGLYSOPHISTICATED,PEOPLEDEMANDMOREANDMOREMOBILEDEVICES,HIGHTECHNOLOGYFROMTHEPASTTOTHEPRESENTPURSUITOFTHEPURSUITOFVISUALANDUSEREXPERIENCE,THEREFORE,ALSOGRADUALLYINCREASEDTHESYSTEMREQUIREMENTSTHISARTICLEISINTHEANDROIDSYSTEM,MUSICPLAYERAPPLICATIONONTHEDESIGNANDIMPLEMENTATIONTODISCUSSTHEPROCESSTHROUGHWHICHTOFURTHERSTUDYANDAPPLICATIONOFANDROID,SOTHEFUTUREDEVELOPMENTOFPERSONALSENSEMUSICPLAYEROFTHISPAPERUSESANDROIDOPENSOURCESYSTEMTECHNOLOGY,THEUSEOFJAVALANGUAGEANDECLIPSEDEVELOPMENTTOOLSFORTHEPREPARATIONOFTHEPLAYERCODEATTHESAMETIMEGIVESADETAILEDSYSTEMDESIGNPROCESS,SOMEINTERFACESCREENSHOTSANDTHEMAJORFUNCTIONOFFLOW,THEPAPERALSOENCOUNTEREDINTHEPROCESSOFDEVELOPMENTPROBLEMSANDSOLUTIONSWEREDISCUSSEDINDETAIL,THEMUSICPLAYER,SETDOWNLOAD,PLAY,PAUSE,STOPANDOTHERFUNCTIONS,GOODPERFORMANCE,INTHEANDROIDSYSTEMCANRUNINDEPENDENTLYMP3ISACOMPRESSEDAUDIOFILEFORMAT,ASTHEPLAYERISLIMITEDTOTHEAPPLICATIONLAYEROFTHEPROGRAM,SONOTTOGOINTOTHESPECIFICCOMPRESSIONALGORITHMEXPERIMENTSSHOWTHAT,BASEDONTHEANDROIDPLATFORM,SOFTWAREDEVELOPMENTISSIMPLE,CONCISEANDEASYTOUSE,WILLBECOMETHEDEVELOPMENTDIRECTIONOFTHENEXTFEWYEARS,HAVEUNIVERSALSIGNIFICANCEKEYWORDSANDROID,MUSICPLAYER,MP3目录摘要IABSTRACTII第一章引言111项目背景112编写目的1第二章ANDROID应用软件开发基础321ANDROID简介322ANDROID应用软件开发的核心技术4221ANDROID应用开发语言4222ANDROID应用程序组件4223INTENT介绍6224ANDROIDMANIFESTXML文件6第三章搭建ANDROID开发环境831计算机配置832安装JDK833安装ECLIPSE834安装SDK935安装ADT936设置ECLIPSE937创建AVD10第四章系统需求分析1141功能需求分析11411播放器的基本功能11412功能需求时序分析1242系统结构流程图1343系统界面需求1344开发环境14第五章音乐播放器详细设计与实现1551播放器界面设计1552获取并解析XML文件1753下载MP3文件1954播放MP3文件21第六章结论24致谢25参考文献26附录27第一章引言11项目背景自2007年GOOGLE公司推出ANDROID以来,一直受到人们的热捧。ANDROID是基于LINUX内核的软件平台和操作系统,它包括移动电话工作所需的全部软件,而且不存在任何以往羁绊移动产业创新的专有权障碍,并迅速发展成为智能移动终端的操作系统。由于手机市场发展迅速,使得手机操作系统也出现了不同种类,现在的市场上主要有三个手机操作系统,WINDOWSMOBILE,SYMBIAN,以及谷歌的ANDROID操作系统,其中占有开源代码优势的ANDROID系统有最大的发展前景。ANDROID的开放性就优于其它封闭式的手机系统,因此,任何人都可以根据自己的爱好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。计算机应用越来越广泛,手机市场也日新月异,各种音频、视频资源在网上广为流传,这些资源看似平凡,但是已经成为了人们生活中不可缺少的一部分了,于是各种手机播放器也紧跟着发展起来,但是很多播放器都是一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,在用户需要多任务操作时,受到不少影响,带来了许多不便。那么能否在手机上拥有自己编写的个性音乐播放器呢谷歌的ANDROID系统就能做到。本文的音乐播放器就是基于谷歌ANDROID手机平台的播放器。要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别文件格式,分析各种编码方式的优缺点,以及各种播放器本身的缺点和特点,编写出功能实用,使用方便快捷的播放器。12编写目的现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放MP3文件格式的播放器,并且可以从服务器下载歌曲,控制播放,暂停,停止,音量调节,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。本项目是一款基于ANDROID手机平台的音乐播放器,使ANDROID手机拥有个性的多媒体播放器,使手机显得更加生动灵活化,与人们更为接近,让手机主人随时随地处于音乐旋律之中。使人们的生活更加多样化,也使设计者更加熟悉基于ANDROID平台的应用布局及开发模式的特点,为以后实现更复杂的应用打好基础。第二章ANDROID应用软件开发基础21ANDROID简介ANDROID是一种以LINUX为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。ANDROID操作系统最初由ANDYRUBIN开发,最初主要支持手机。2005年由GOOGLE收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。ANDROID平台五大优势特色1、开放性2、挣脱运营商的束缚3、丰富的硬件选择4、不受任何限制的开发商5、无缝结合的GOOGLE应用图21ANDROID软件体系结构图ANDROID作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MIDDLEWARE)和应用程序(APPLICATION)。根据ANDROID的软件框图,其软件层次结构自下而上分为以下几个层次第一、操作系统层(OS)第二、各种库(LIBRARIES)和ANDROID运行环境(RUNTIME)第三、应用程序框架(APPLICATIONFRAMEWORK)第四、应用程序(APPLICATION)22ANDROID应用软件开发的核心技术221ANDROID应用开发语言JAVA是ANDROID上的主流开发语言,各种支持也最完善。ANDROID发布的API和SDK也都主要是面向JAVA开发人员的。我们的播放器实例也是用JAVA开发的。222ANDROID应用程序组件ANDROID应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。例如假设我们需要编写一个内嵌有网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的CHROMELITE浏览器组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图片的组件,那么我们在另外一个应用程序中就可以使用该组件,而不需要再编写该功能。也就是说,不同于我们平常编写的程序,ANDROID的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。ANDROID应用程序的组件有以下四种1ACTIVITY一个ACTIVITY实际上表现出来的就是一个程序的界面。这个界面可能有许多种不同的形式,比如有列表形式,有文字形式,有图像格子等形式。一个应用程序也可能有不止一个ACTIVITY。比如一个短消息的程序,需要有列表显示所有消息的ACTIVITY,还至少需要一个编辑短消息的ACTIVITY(界面),还可能需要设置、菜单等界面。每个ACTIVITY都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其它窗口之上(如ANDROID中的TOAST信息),ACTIVITY中显示出来的内容其实是由VIEW堆叠形成的,VIEW是由VIEW基类派生出来的各种形式的界面元素,如LISTVIEW,GRIDVIEW等等,通过组合这些VIEW,就形成了一个可见的ACTIVITY。我们可以用ACTIVITYSETCONTENTVIEW方法来设置一个ACTIVITY中所要显示的VIEW。2SERVICESERVICE是一种没有界面的组件,同我们平常在WINDOWS或LINUX系统中所理解的“服务”一样,ANDROID上的SERVICE也是运行在后台的,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,SERVICE组件是至关重要的。以下载管理器为例,用户肯定希望能够在切换到其它程序时仍然在后台进行下载,这就需要用到SERVICE完成下载工作。而显示下载进度、已下载文件等信息则由ACTIVITY完成,同时我们还希望能控制下载过程,如停止、继续等,这就需要ACTIVITY与SERVICE之间进行通信。ANDROID允许ACTIVITY连接到或者绑定到SERVICE上,这样就可以让用户在界面上控制后台SERVICE的行为。3BROADCASTRECEIVERBROADCAST意为广播消息,ANDROID系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载完毕等。BROADCASTRECEIVER则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其它组件去处理广播消息。它可以启动一个ACTIVITY来同用户交互,也可以使用NOTIFICATIONMANAGER向用户发出通知。NITIFICATIONMANAGER的通知形式有许多种,比如说振动、响铃、闪LED灯,还可以在ANDROID界面的消息栏处显示信息。4CONTENTPROVIDERCONTENTPROVIDER是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLITE数据库中,还可以以其它任何有效的方式保存。CONTENTPROVIDER类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要使用这些数据时,可以用CONTENTRESOLVER对象,使用其中的方法。CONTENTRESOLVER可以与任何CONTENTPROVIDER交互,获取其中的数据。只要需要某个组件,ANDROID就会尽力保证它的可用如果该组件还没启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。223INTENT介绍所谓INTENT,就是一种运行时的绑定机制在应用程序运行时连接两个不同的组件。一般的应用是通过INTENT向ANDROID系统发出某种请求,然后ANDROID系统会根据请求查询各个组件声明的INTENTFILTER,找到需要的组件并运行它。前面介绍的ACTIVITY、SERVICE及BROADCASTRECEIVER组件之间的通信全部使用的是INTENT,但是各个组件使用的INTENT机制不同。224ANDROIDMANIFESTXML文件ANDROIDMANIFESTXML是每一个应用都需要的文件,位于应用根目录下,它描述了程序包的全局变量,包括暴露的应用组件ACTIVITIES,SERVICES等等和为每个组件的实现类,什么样的数据可以操作,以及在什么地方运行。ANDROIDMANIFESTXML文件是一个结构化的XML文件,它除了包含有各个组件的信息,还包括许多其它的信息,它的基本样式如下所示不难看出,NAME,ICON,LABLE这些属性就分别指ACTIVITY的名称、图标、标识。我们通过MANIFEST描述程序的信息,ANDROID系统就能读取出来并产生相应的行为。第三章搭建ANDROID开发环境31计算机配置开发ANDROID应用所用到的开发工具较占内存,尤其是模拟器。官方并未给出最低配置要求,根据个人实际体会,在本人INTELCOREI72630QM四核处理器及8G内存的情况,能流畅使用。另外还需有600MB以上的剩余磁盘空间(官方文档中的说明)。32安装JDK由于ANDROID开发是基于JAVA的基础上的,所以我们必须得安装JDK(JDK下载地址HTTP/WWWORACLECOM/TECHNETWORK/JAVA/JAVASE/DOWNLOADS/INDEXHTML)。安装过程中应对系统的环境变量做出相应的设置1右击计算机属性高级系统设置高级环境变量,新建“系统变量”,设置变量名“JAVA_HOME”。变量值“CPROGRAMFILESJAVAJDK170_02”(视个人安装路径而定)。2找到变量名为PATH的项,双击,在变量值后面添加“JAVA_HOMEBIN”,3新建“系统变量”变量名“CLASSPATH”,变量值“JAVA_HOMELIBDTJARJAVA_HOMELIBTOOLSJAR”配置完成后,重启可以在CMD下输入JAVA或者JAVAC测试。33安装ECLIPSEECLIPSE是我们以后在ANDROID开发时使用的开发平台,它集成了很多功能以及插件,在开发的过程中便于我们使用,在官网(HTTP/WWWECLIPSEORG/DOWNLOADS/)可以下载到对应系统以及功能的安装包,在安装提示安装完成后并且完成了JDK的安装后即可正常使用。34安装SDKSDK(SOFTWAREDEVELOPMENTKIT)初始包中有开发ANDROID程序所要用到的工具,它包括了从编译到运行ANDROID应用程序所需要的各种工具。安装时可以根据自己的需求选择安装相应的版本。SDK下载地址HTTP/DEVELOPERANDROIDCOM/SDK/INDEXHTML)35安装ADT按照234安装完SDK初始包后,就可以开始开发ANDROID应用程序了,但是为了更高效地进行开发,ANDROID团队推出了ANDROIDDEVELOPMENTTOOLSADT。ADT是目前开发ANDROID应用最有效的工具,它是一个ECLIPSE插件,支持ECLIPSE34及34以上的版本。以ECLIPSE35GALILEO为例,安装过程如下1打开ECLIPSE,选择HELPINSTALLNEWSOFTARE。2在AVAILABLESOFTWARE对话框中,点击ADD。3在弹出的ADDSITE对话框中,任意填写一个名字到NAME一栏。在LOCATION一栏,则填入这一URL“HTTPS/DLSSLGOOGLECOM/ANDROID/ECLIPSE/”,然后确认返回。(注意如果在后续的步骤中发现无法安装插件,可以试着把URL中的HTTPS换成HTTP。)4返回到AVAILABLESOFTWARE窗口后,就能看到列表中出现了“DEVELOPERTOOLS“,选中它前面的复选框,再点击“NEXT”,就会开始下载安装ADT的各种组件了。5安装完毕后将弹出窗口显示ADT相关的各种信息以及许可协议,点击“FINISH“即可完成安装。6重新启动ECLIPSE。36设置ECLIPSE1选择“WINDOWPREFERENCES“打开偏好设置2从左侧边栏中选择“ANDROID“一栏。3单击SDKLOCATION一栏边的BROWSE按钮,选择刚刚下载的SDK保存的路径。4点击APPLY,OK,设置生效。至此,ANDROID的开发环境就已经搭建完毕,可以使用了。37创建AVD在安装好JDK,ECLIPSE,SDK,ADK之后我们就可以进行ANDROID项目开发了,但是在开发的过程中我们经常需要运行、调试我们所开发的软件,这就需要用到AVD(ANDROIDVIRTUALDEVICE),也就是ANDROID虚拟机。1打开ECLIPSE。2点击OPENSTHEANDROIDVIRTUALDEVICEMANAGER图标按钮。3在弹出的窗口中点击NEW新建一个ANDROID虚拟机。4在弹出的新建虚拟机窗口中NAME一栏填上虚拟机的名称(一般与虚拟机的版本号相同,便于区分)。5在TARGET一栏选择一个ANDROID虚拟机版本(如ANDROID22或ANDROID21)。6在SDCARD下的SIZE一栏填上我们要设定的SD卡容量大小。7点击CREATEAVD,这样我们的一个ANDROID虚拟机就创建好了。第四章系统需求分析41功能需求分析根据项目的目标,我们可获得项目系统的基本需求,一下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,播放器的基本控制需求。以下分别描述411播放器的基本功能音乐播放器的基本功能下载歌曲播放暂停停止音量控制歌曲列表播放文件退出图41播放器基本控制图在播放器运行时,主界面是服务器的歌曲列表,可以点击刷新列表,也可以点击歌曲名,开始下载歌曲,然后点击本地歌曲列表可以显示出本地的歌曲文件,点击文件名则跳转到播放界面,在播放界面可以控制歌曲的播放、暂停、停止以及返回本地歌曲列表。412功能需求时序分析图42音乐播放器的时序图从以上时序图可以看到播放器中消息发送及调用过程。42系统结构流程图图43音乐播放器系统流程图以上显示了播放器的各个流程。43系统界面需求播放器界面要求布局合理,简约,颜色舒适,控制按钮友好,能让用户一眼就能看出各个按钮的作用及操作方法。能实现要求的功能,但又不重复。要考虑到不同手机屏幕大小可能不一样,应尽量兼容大多数手机屏幕尺寸,使之显示无障碍。44开发环境操作系统WINDOWS7X64。开发环境ECLIPSEVERSIONINDIGOSERVICERELEASE1ADTVERSION1601运行环境ANDROID22第五章音乐播放器详细设计与实现51播放器界面设计首先是创建一个主界面MAINACTIVITY,它使用TABHOST布局,这里面的TABWIDGET控件控制着两个ACTIVITY的互相切换一个是MP3PLAYERLISTACTIVITY(图51),这个ACTIVITY是一打开程序就显示的服务器歌曲列表。图51MP3PLAYERLISTACTIVITY另一个是LOCALACTIVITY(图52),这个ACTIVITY是点击TABWIDGET控件中的“本地”按钮才会显示的本地歌曲列表界面。图52LOCALACTIVITY在LOCALACTIVITY中点击列表中的歌曲名就会调出PLAYERACTIVITY(图53),这个ACTIVITY就是播放音乐时的界面,其中有一些对播放器进行控制的控件。图53PLAYERACTIVITY详细设计代码见附录。52获取并解析XML文件因为打开播放器首先就要刷新服务器上的歌曲列表,那么我们就得获取服务器上的歌曲列表文件,即XML文件。实现代码如下/根据URL下载文本文件,必须是文本文件,因为返回值是文本中的字符PUBLICSTRINGDOWNLOADSTRINGURLSTRSTRINGBUILDERSBNEWSTRINGBUILDERSTRINGLINENULLBUFFEREDREADERBUFFERNULLTRY/创建一个URL对象URLURLNEWURLURLSTR/创建一个HTTP连接HTTPURLCONNECTIONURLCONNHTTPURLCONNECTIONURLOPENCONNECTION/使用IO读取数据BUFFERNEWBUFFEREDREADERNEWINPUTSTREAMREADERURLCONNGETINPUTSTREAM/一行行的读取数据WHILELINEBUFFERREADLINENULLSBAPPENDLINECATCHEXCEPTIONEEPRINTSTACKTRACEFINALLY/关闭BUFFER节约资源TRYBUFFERCLOSECATCHEXCEPTIONE2E2PRINTSTACKTRACE/将读取到的文本文件中的内容传回去RETURNSBTOSTRING从服务器上下载到XML中的文本后就要开始解析,在开始解析之前我们先来了解一下服务器上用来保存歌曲信息的XML文件。图52XML文件结构图从上图中可以看出所有的歌曲信息是包含在一个RESOURCES标签当中的,而每一个RESOURCE标签就代表一首歌曲,其中的ID、MP3NAME、LRCNAME、LRCSIZE标签都分表代表了歌曲的一条信息。在我所设计的播放器中所用到是实现SAX(SIMPLEAPIFORXML)接口的方式来解析XML文件,解析的实现代码如下/开始解析XML文件中的每一个标签时调用的方法OVERRIDEPUBLICVOIDSTARTELEMENTSTRINGURI,STRINGLOCALNAME,STRINGQNAME,ATTRIBUTESATTRTHROWSSAXEXCEPTION/将从XML文件中读取到的标签名赋值给TAGNAMETAGNAMELOCALNAME/如果标签名为RESOURCE时就创建一个MP3INFO的实例对象IFTAGNAMEEQUALS“RESOURCE“MP3INFONEWMP3INFO/解析完XML文件中的每一个标签时调用的方法OVERRIDEPUBLICVOIDENDELEMENTSTRINGURI,STRINGLOCALNAME,STRINGQNAMETHROWSSAXEXCEPTION/每次读取到RESOURCE标签就代表一首歌曲的信息已经完成,并将次MP3INFO加到INFOS当中IFQNAMEEQUALS“RESOURCE“INFOSADDMP3INFO/每读完一个标签就清空TAGNAME,以免出错TAGNAME“/读取XML文件中没一个标签中内容OVERRIDEPUBLICVOIDCHARACTERSCHARCH,INTSTART,INTLENGTHTHROWSSAXEXCEPTION/将读取到的内容赋值给TEMPSTRINGTEMPNEWSTRINGCH,START,LENGTH/将每个标签中的内容赋值给MP3INFO实例对象中相应的变量IFTAGNAMEEQUALS“ID“MP3INFOSETIDTEMPELSEIFTAGNAMEEQUALS“MP3NAME“MP3INFOSETMP3NAMETEMPELSEIFTAGNAMEEQUALS“MP3SIZE“MP3INFOSETMP3SIZETEMPELSEIFTAGNAMEEQUALS“LRCNAME“MP3INFOSETLRCNAMETEMPELSEIFTAGNAMEEQUALS“LRCSIZE“MP3INFOSETLRCSIZETEMP53下载MP3文件根据URL的地址从服务器上下载文件,因为下载不可能是一瞬间就能完成的事,如果我们在主线程中进行下载,那么下载过程中程序就会出现假死状态,因为它在等待文件下载完成,下载完成才能执行后面的操作,所以我们需要用一个线程来进行下载任务,实现代码如下/每次用户点击LISTACTIVITY当中的一个条目时,就会调用该方法OVERRIDEPUBLICINTONSTARTCOMMANDINTENTINTENT,INTFLAGS,INTSTARTID/从INTENT对象当中将MP3INFO对象取出MP3INFOMP3INFOMP3INFOINTENTGETSERIALIZABLEEXTRA“MP3INFO“/生成一个下载线程,并将MP3INFO对象作为参数传递到线程对象当中DOWNLOADTHREADDOWNLOADTHREADNEWDOWNLOADTHREADMP3INFO/启动新线程THREADTHREADNEWTHREADDOWNLOADTHREADTHREADSTARTRETURNSUPERONSTARTCOMMANDINTENT,FLAGS,STARTIDCLASSDOWNLOADTHREADIMPLEMENTSRUNNABLEPRIVATEMP3INFOMP3INFONULLPUBLICDOWNLOADTHREADMP3INFOMP3INFOTHISMP3INFOMP3INFOPUBLICVOIDRUN/根据MP3文件的名字生成下载地址STRINGMP3URL“HTTP/19216812478080/MP3/“MP3INFOGETMP3NAME/生成下载对象所用的对象HTTPDOWNLOADERHTTPDOWNLOADERNEWHTTPDOWNLOADER/将文件下载下来并存储到SDCARD中INTRESULTHTTPDOWNLOADERDOWNFILEMP3URL,“MP3/“,MP3INFOGETMP3NAMESTRINGRESULTMESSAGENULLIFRESULT1RESULTMESSAGE“下载失败“/TOASTMAKETEXTGETAPPLICATIONCONTEXT,RESULTMESSAGE,TOASTLENGTH_SHORTSHOWSYSTEMOUTPRINTLNRESULTMESSAGEELSEIFRESULT1RESULTMESSAGE“文件已存在“SYSTEMOUTPRINTLNRESULTMESSAGE/TOASTMAKETEXTTHIS,RESULTMESSAGE,TOASTLENGTH_SHORTSHOWELSEIFRESULT0RESULTMESSAGE“下载成功“SYSTEMOUTPRINTLNRESULTMESSAGE54播放MP3文件下载到MP3文件后当我们点击播放列表中的歌曲名时就应该从SDCARD中读取到我们所下载的文件,并且调出播放界面进行播放。读取MP3文件的路径,实现代码如下/获取MP3文件的路径PRIVATESTRINGGETMP3PATHMP3INFOMP3INFO/先获得SDCARD路径STRINGSDCARDROOTENVIRONMENTGETEXTERNALSTORAGEDIRECTORYGETABSOLUTEPATH/SDCARD路径下的MP3文件夹下根据MP3INFO中的MP3NAME获取MP3文件名,并返回完整文件路径PATHSTRINGPATHSDCARDROOTFILESEPARATOR“MP3“FILESEPARATORMP3INFOGETMP3NAMERETURNPATH得到路径后就调用JAVA中的媒体播放器开始播放音乐,并对音乐播放的过程进行暂停,停止等控制,而音量控制是ANDROID系统中自带得有的,所以不需要再编写,具体实现代码如下/窗口创建时的一些设置,以及接收INTENT对象中传过来的信息OVERRIDEPROTECTEDVOIDONCREATEBUNDLESAVEDINSTANCESTATESUPERONCREATESAVEDINSTANCESTATESETCONTENTVIEWRLAYOUTPLAYERINTENTINTENTGETINTENTMP3INFOMP3INFOINTENTGETSERIALIZABLEEXTRA“MP3INFO“BEGINBUTTONIMAGEBUTTONFINDVIEWBYIDRIDBEGINPAUSEBUTTONIMAGEBUTTONFINDVIEWBYIDRIDPAUSESTOPBUTTONIMAGEBUTTONFINDVIEWBYIDRIDSTOPTEXTVIEWTEXTVIEWFINDVIEWBYIDRIDNAMETEXTTEXTVIEWSETTEXT“正在播放“MP3INFOGETMP3NAMEBEGINBUTTONSETONCLICKLISTENERNEWBEGINBUTTONLISTENERPAUSEBUTTONSETONCLICKLISTENERNEWPAUSEBUTTONLISTENERSTOPBUTTONSETONCLICKLISTENERNEWSTOPBUTTONLISTENER/开始播放的监听器CLASSBEGINBUTTONLISTENERIMPLEMENTSONCLICKLISTENERPUBLICVOIDONCLICKVIEWV/判断是否正在播放,正在播放状态则不做任何操作,没播放扎UN柜台则开始播放IFISPLAYINGSTRINGPATHGETMP3PATHMP3INFOMEDIAPLAYERMEDIAPLAYERCREATEPLAYERACTIVITYTHIS,URIPARSE“FILE/“PATHMEDIAPLAYERSETLOOPINGFALSEMEDIAPLAYERSTARTISPLAYINGTRUEISRELEASEDFALSE/暂停监听器CLASSPAUSEBUTTONLISTENERIMPLEMENTSONCLICKLISTENERPUBLICVOIDONCLICKVIEWV/判断媒体播放器中是否为空,是否处于停止或暂停状态,若是暂停,再次点下则为播放,若是播放则相反IFMEDIAPLAYERNULLIFISRELEASEDIFISPAUSEMEDIAPLAYERPAUSEISPAUSETRUEELSEMEDIAPLAYERSTARTISPAUSEFALSE/停止播放监听器CLASSSTOPBUTTONLISTENERIMPLEMENTSONCLICKLISTENERPUBLICVOIDONCLICKVIEWV/不处于停止状态时就进入停止状态IFISRELEASEDISRELEASEDTRUEMEDIAPLAYERSTOPMEDIAPLAYERRELEASEISPLAYINGFALSE以上就是整个ANDROID音乐播放器设计中比较重要的功能以及实现方法。第六章结论1通过对ANDROID手机平台的音乐播放器的开发,使我对ANDROID系统从零进入到了一个比较高的层次的了解,ANDROID功能是如此强大,令人不得不佩服。这一个月的学习与实践,其间遇到许多难题,困扰了我好久,不过最终都被我攻克了,我觉得学习新东西就是要不断摸索,边学边练,学习其原理,这样才能走的更远。2在最初设计的界面的时候,总是不如意,纠结了好久,后来在网上找了许多资料,最后才决定了在主界面使用TABHOST这种布局来进行服务器列表与本地列表的切换。3播放列表中显示歌曲信息,一开始显示的歌曲信息中文是有乱码的,后来在网上查了一下,发现ANDROID支持的编码方式是UTF16,后来使用千千静听将歌曲信息更改为UTF16的编码方式,显示终于正常了,看来ANDROID目前支持的编码方式还有待加强,毕竟是新出来不久的东西,还需要进一步发展。4在进行联网下载歌曲信息的时候总是失败,再三确认代码后,确定无误,可还是下载失败,后来经老师指导,才发现,原来ANDROID中的软件联网是需要权限的,需要在ANDROIDMANIFESTXML中写入权限才行,同时我还顺便了解到了,读写SDCARD也是需要权限的。5在实现播放器的基本功能时,一开始我是将很多的代码都放在同一个类中或方法中,这样做虽然能够正常播放,但是当出现方法的复写,或者再次调用修改时就变得非常的复杂,于是我将不同功能,不同界面的类都分开来写,改善既有代码的设计,但不改变功能。6因为时间有限,播放器尚不够完善,有些地方还有些不合理的地方,比如时间进度条和歌词的同步显示,还有播放器只能播放MP3格式的用音乐,界面还不太友好等等,这些都有待以后去加强。致谢近三个月时间的毕业课题设计是我大学生活中忙碌而又充实一段时光。这里有治学严谨而又亲切的老师,有互相帮助的同学,更有积极、向上、融洽的学习生活氛围。短短的时间里,我学到了很多的东西。不仅学到就更多的理论知识,扩展了知识面,提高了自己的实际操作能力;而且学会了如何去学习新的知识,学会了面对困难和挑战,学会了团结合作,互助互利。借此论文之际,向所有帮助、关心、支持我的老师、朋友同学,表达我最真诚的谢意。首先感谢指导老师。本论文是在老师耐心指导下多次修改完成的。在此,我对他们的耐心指导和帮助表达我最真诚的谢意,感谢他们在这几个月来所付出的努力。在这段时间里,我从他们身上,不仅学到了许多的专业知识,更感受到了他们工作中的兢兢业业,生活中的平易近人的精神。此外,他们的严谨治学态度和忘我的工作精神值得我去学习。在此,请允许我对说一声“老师,您辛苦了”再次感谢他们。非常感谢我的同学。当我在毕业设计过程中遇到问题和困难时,是他们给我提出许多关键性的意见和建议,使我对整个毕业设计的思路有了总体的把握,并耐心的帮我解决了许多实际问题,使我获益良多。同时,感谢四年来传授我知识的老师们,更要感谢我的家人及朋友对我学业上的支持和鼓励,感谢所有关心、帮助过我的人。同时感谢我的大学,感谢计算机学院。我不会忘记你们。总之,在以后的学习、工作、生活中我将更加努力,用自己的行动回报社会、学校、老师及同学。参考文献1韩超,梁泉著,ANDROID系统原理及开发要点详解,201012李宁,ANDROID/OPHONE开发完全讲义,中国水利水电出版社,201063(美)埃克尔著陈昊鹏译,JAVA编程思想(第4版),机械工业出版社,200764E2ECOLUD工作室,深入浅出GOOGLEANDROID,人民邮电出版社,200985余志龙,王世江改编,GOOGLEANDROIDSDK开发范例大全,人民邮电出版社,201066毛应爽,赵慧玲,孟宪颖,SQLSERVER2005数据库程序设计,清华大学出版社,2009127龙马工作室,新编PHOTOSHOPCS4中文版从入门到精通,人民邮电出版社,200978孙卫琴,TOMCAT与JAVAWEB开发技术详解第2版,电子工业出版社20091附录主界面MAINACTIVITY布局文件代码服务器列表界面MP3PLAYERLISTACTIVITY布局文件代码本地歌曲列表界面LOCALACTIVITY布局文件代码播放界面PLAYERACTIVITY布局文件代码GANEMPLOYMENTTRIBUNALCLAIEMPLOYMENTTRIBUNALSSORTOUTDISAGREEMENTSBETWEENEMPLOYERSANDEMPLOYEESYOUMAYNEEDTOMAKEACLAIMTOANEMPLOYMENTTRIBUNALIFYOUDONTAGREEWITHTHEDISCIPLINARYACTIONYOUREMPLOYERHASTAKENAGAINSTYOUYOUREMPLOYERDISMISSESYOUANDYOUTHINKTHATYOUHAVEBEENDISMISSEDUNFAIRLYFORMOREINFORMATIONABOUTDISMISSALANDUNFAIRDISMISSAL,SEEDISMISSALYOUCANMAKEACLAIMTOANEMPLOYMENTTRIBUNAL,EVENIFYOUHAVENTAPPEALEDAGAINSTTHEDISCIPLINARYACTIONYOUREMPLOYERHASTAKENAGAINSTYOUHOWEVER,IFYOUWINYOURCASE,THETRIBUNALMAYREDUCEANYCOMPENSATIONAWARDEDTOYOUASARESULTOFYOURFAILURETOAPPEALREMEMBERTHATINMOSTCASESYOUMUSTMAKEANAPPLICATIONTOANEMPLOYMENTTRIBUNALWITHINTHREEMONTHSOFTHEDATEWHENTHEEVENTYOUARECOMPLAININGABOUTHAPPENEDIFYOURAPPLICATIONISRECEIVEDAFTERTHISTIMELIMIT,THETRIBUNALWILLNOTUSUALLYACCEPTIIFYOUAREWORRIEDABOUTHOWTHETIMELIMITSAPPLYTOYOU,TAKEADVICEFROMONEOFTHEORGANISATIONSLISTEDUNDERFURTHERHELPEMPLOYMENTTRIBUNALSARELESSFORMALTHANSOMEOTHERCOURTS,BUTITISSTILLALEGALPROCESSANDYOUWILLNEEDTOGIVEEVIDENCEUNDERANOATHORAFFIRMATIONMOSTPEOPLEFINDMAKINGACLAIMTOANEMPLOYMENTTRIBUNALCHALLENGINGIFYOUARETHINKINGABOUTMAKINGACLAIMTOANEMPLOYMENTTRIBUNAL,YOUSHOULDGETHELPSTRAIGHTAWAYFROMONEOFTHEORGANISATIONSLISTEDUNDERFURTHERHELPIFYOUAREBEINGREPRESENTEDBYASOLICITORATTHETRIBUNAL,THEYMAYASKYOUTOSIGNANAGREEMENTWHEREYOUPAYTHEIRFEEOUTOFYOURCOMPENSATIONIFYOUWINTHECASETHISISKNOWNASADAMAGESBASEDAGREEMENTINENGLANDANDWALES,YOURSOLICITORCANTCHARGEYOUMORETHAN35OFYOURCOMPENSATIONIFYOUWINTHECASEIFYOUARETHINKINGABOUTSIGNINGUPFORADAMAGESBASEDAGREEMENT,YOUSHOULDMAKESUREYOURECLEARABOUTTHETERMSOFTHEAGREEMENTITMIGHTBEBESTTOGETADVICEFROMANEXPERIENCEDADVISER,FOREXAMPLE,ATACITIZENSADVICEBUREAUTOFINDYOURNEARESTCAB,INCLUDINGTHOSETHATGIVEADVICEBYEMAIL,CLICKONNEARESTCABFORMOREINFORMATIONABOUTMAKINGACLAIMTOANEMPLOYMENTTRIBUNAL,SEEEMPLOYMENTTRIBUNALSTHELACKOFAIRUPTHEREWATCHMCAYMANISLANDSBASEDWEBB,THEHEADOFFIFASANTIRACISMTASKFORCE,ISINLONDONFORTHEFOOTBALLASSOCIATIONS150THANNIVERSARYCELEBRATIONSANDWILLATTENDCITYSPREMIERLEAGUEMATCHATCHELSEAONSUNDAY“IAMGOINGTOBEATTHEMATCHTOMORROWANDIHAVEASKEDTOMEETYAYATOURE,“HETOLDBBCSPORT“FORMEITSABOUTHOWHEFELTANDIWOULDLIKETOSPEAKTOHIMFIRSTTOFINDOUTWHATHISEXPERIENCEWAS“UEFAHASOPENEDDISCIPLINARYPROCEEDINGSAGAINSTCSKAFORTHE“RACISTBEHAVIOUROFTHEIRFANS“DURINGCITYS21WINMICHELPLATINI,PRESIDENTOFEUROPEANFOOTBALLSGOVERNINGBODY,HASALSOORDEREDANIMMEDIATEINVESTIGATIONINTOTHEREFEREESACTIONSCSKASAIDTHEYWERE“SURPRISEDANDDISAPPOINTED“BYTOURESCOMPLAINTINASTATEMENTTHERUSSIANSIDEADDED“WEFOUNDNORACISTINSULTSFROMFANSOFCSKA“AGEHASREACHEDTHEENDOFTHEBEGINNINGOFAWORDMAYBEGUILTYINHISSEEMSTOPASSINGALOTOFDIFFERENTLIFEBECAMETHEAPPEARANCEOFTHESAMEDAYMAYBEBACKINTHEPAST,TOONESELFTHEPARANOIDWEIRDBELIEFDISILLUSIONMENT,THESEDAYS,MYMINDHASBEENVERYMESSY,INMYMINDCONSTANTLYALWAYSFEELONESELFSHOULDGOTODOSOMETHING,ORWRITESOMETHINGTWENTYYEARSOFLIFETRAJECTORYDEEPLYSHALLOW,SUDDENLYFEELSOMETHING,DOIT一字开头的年龄已经到了尾声。或许是愧疚于自己似乎把转瞬即逝的很多个不同的日子过成了同一天的样子;或许是追溯过去,对自己那些近乎偏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论