版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Android系统的音乐播放器的设计与实现摘要:进入21世纪的数字时代,网络发展十分的迅猛,在现今工作压力大的社会下,娱乐随之兴起,各种各样的网络游戏、娱乐软件像雨后春笋一样以不断更新的方式进入我们的生活,丰富了我们的业余时间。这些游戏能在不同的操作平台上进行安装,且其安装、操作简单适合每一位玩家,让所有的玩家都能畅玩一番。然而在所有的操作系统中,Android系统无疑不是其首选的。在Android平台上发布的酷狗、酷我、百度影音等等播放器,以其简单快捷的操作,好看的画面,舒适的结构,强大的功能所折服我们。本文通过Android技术的研究,实现了自主设计的一款音乐播放器,完成了本地音乐的加载、最近音乐播放的加载、正在播放页面的实现、上一曲、下一曲、暂停、播放、继续播放、进度条、时间显示等等这些功能。本款音乐播放器采用TabHost进行总框架的布局,其他部分则采用相应的布局方式,使这款播放器看上去丰富,形象点。同时这款播放器操作简单、实用、结合了Android课中所学到的很多知识,即对知识的一个总结。本音乐播放器的设计遵循企业软件的工程思想,开始模拟了客户来公司洽谈某项业务,完成需求分析、界面设计、编写代码、进一步社交、产品的维护、用户需求。这一系列的流程来一步步的制作这款播放器。关键字:Android、播放器、客户、操作、流程Abstract:Digital
erain
twenty-firstCentury,
network
developmentisvery
rapid,
intoday's
stressfulsociety,
alongwiththeriseof
various
kindsof
entertainment,
networkgame,entertainmentsoftware
like
bambooshootsafteraspringrain
as
tocontinuouslyupdatethe
wayintoour
lives,enrichour
sparetime.
These
gamescanbe
installedindifferent
operating
platform,
and
itsinstallation,
operationissimpleand
suitableforevery
gameplayer,
letallthegameplayer
can
play
a.However,
alloftheoperatingsystem,
theAndroid
systemis
not
the
preferred.
PublishedintheAndroid
platformonthe
cooldog,
cool,
andsoon
Baidu
video
player,
withitssimpleandquick
operation,
beautifulpictures,
comfortablestructure,
powerfulfunction
by
us.
Inthispaper,
throughthe
researchofAndroidtechnology,
realizesanindependentdesignand
musicplayer,
the
localmusicloading,
recently
playingmusic,
playing
loading
pagerealization,
asong,
thenextsong,
play,
pause,
continuetoplay,
aprogressbar,
timedisplay
andsoonthesefunctions.
The
musicplayer
usingTabHost
frame
layout,theother
partis
the
correspondingarrangementway,make
theplayer
look
rich,
image
point.
Atthesametime,theplayer
hastheadvantagesofsimpleoperation,practical,
combinedwithalotof
knowledge
learned
inAndroid
class,
or
asummaryof
knowledge.
Thedesignofthe
musicplayer
followsthebusiness
softwareengineeringthought,
begantosimulate
the
customerstothecompanytodiscuss
somebusiness,
completetherequirementanalysis,
interfacedesign,
code,
furthersocial,
productmaintenance,
userdemand.
Thisaseriesofthe
process
stepbystep,
making
theplayer.KeyWords:Android、Player、Customer、Operation、Process目录 第1章绪论 5 1.1Android简介及其开发背景 5 1.2本课题内容的概述 6 1.3本课题的目的及意义 7 第2章开发工具的简介 7 2.1什么是Eclipse? 7 2.2JDK的下载与安装 9 2.3Eclipse的下载与安装 13 2.4Eclipse中AndroidSDK插件的下载与安装 14 第3章Android的基本结构 19 3.1Android的基本框架 19 3.2Android系统的四大组件 21 3.3Android音乐播放器的详细设计思想 22 第4章本系统内容需求 23 4.1实现的内容需求 23 4.2播放器实现的目标 24 4.3播放器的基本控制需求 24 4.4功能需求分析 25 第5章Android的项目介绍 27 5.1本地音乐列表界面 27 5.2正在播放界面 29 5.3退出播放器界面 32 5.4AndroidManifest.xml文件介绍 33 第6章Android模拟器读取SD卡中音频文件的实现 33 6.1怎样在模拟器中添加音频文件并读取 33 6.2SD卡的创建 34 6.3向SD卡里面上传文件 34 6.4手机SD卡音频文件读取的代码 34 第7章软件测试 34 7.1软件测试环境 34 7.2测试阶段 34 7.3测试要点和总结 35 7.4测试结果 35 结束语 36 参考文献 37 致谢 37第1章绪论1.1Android简介及其开发背景Android一词的本意是指“机器人”,同时也是Goolge与2007年11月Android是谷歌与2007年公布的开放式源码手机系统,他的开放性就优于其他封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个系统。本次作品音乐播放器就是基于Android平台的。Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟开发。它采用了软件堆层(softwarestack,又名为软件堆层)的架构,主要分为三部分。底层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以java作为编写程序的一部分。另外,为了推广此技术,Google和其他几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多的传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机电话的NexusOne。目前最新的SDK版本为Android4.4。硬件产品的发展趋势手机在手机产品领域,Android手机可以说是类型最为丰富的,同时往往集成了最尖端的技术力。在2014年,更大尺寸、2k分辨率屏幕将成为高端配置,vivo品牌已经推出了首款2k屏幕机型。64位处理器及4GBRAM,也将成为高端手机的标配,此外,摄像头也将继续高像素化。平板电脑在2013年,Android在平板领域的成绩斐然,甚至抢夺了苹果ipad的市场份额。虽然这与Android低价平板的增多不无关系,在2014年仍将保持占有率的优势。总结显然,Android在2014年或许不会发生巨大的变化,包括市场份额以及产品形态。从积极的方面来看,新兴市场的发力、新型设备的流行,会让Android拥有更多的用武之地,与三星的关系修复,也有利于谷歌提供更为健康的生态系统。所以,我们还是十分期待在2014年的GoolgeI/O大会上,会看到谷歌更多的大动作。1.2本课题内容的概述进入互联网的信息时代,手机市场越发迅猛的发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味的追求外观花哨,功能的齐全,对用户的手机造成了很多资源的浪费,比如CPU,内存等占用率过高,会导致一些低端手机卡机、死机等情况的出现。随着用户的要求,播放器的功能越来越齐全,如:听歌、看MV等等,除了能播放常见格式的语言视频文件之外,还要满足RMVB格式的视频文件。此外,还需支持中文、英文、韩文、日文等语言界面。因此,基于Android的手机操作系统上的各种应用软件应运而生,其音乐播放器无疑不是一个最成功的案例。如:酷狗、酷我、QQ音乐等播放器深受广大用户的喜爱,所以,各高校都会把播放器作为一个很好的教案,不仅让我们了解了播放器是如何编写成功的,更重要的是将我们与这个新兴行业紧密的联系在一起了。学以致用,将书本上的知识归纳、总结后写一个成功的小项目,让自己获得更多、更牢固的专业知识,同时也为今后找工作打下不错的基础。对于这次的毕业选题,其难度、完整度、完善度都比以往在学校写过写过的任何一个小项目难得多,但却是对我们一个很好的锻炼机会,使自己的能力进一步升华,同时也给自己在大学里所有的知识做了一个总结,为自己的大学时代画上一个圆满的句号。1.3本课题的目的及意义本次作品就是基于Android平台下的音乐播放器,对于此次的项目,我们必须首先了解Android平台下软件开发的相关知识,及软件开发的意义。由于本次的毕业项目属于个人的开发项目,不存在经济实用性的考量,所以有很多的方面完善的不是很全,但是作为毕业项目而言,的确是一个很大的挑战,不仅锻炼了自己的能力,而且让自己所学的知识得到运用,同时也是对自己在大学所学知识的一个总结,并且可以检测自己的实力,总之,本次毕业论文的撰写对我们益处扉多。第2章开发工具的简介2.1什么是Eclipse?1.简介Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++和COBOL等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。2.发行版本从2006年起,Eclipse基金会每年都会安排同步发布(simultaneousrelease)。至今,同步发布主要在6月进行,并且会在接下来的9月及2月释放出SR1及SR2版本。3.语言拓展Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟。Eclipse是一个开发源码项目,由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。4.插件开发环境Eclipse的插件机制是轻型软件组件化架构。Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。5.主要组成Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成—Eclipse、Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。6.EclipseSDKEclipseSDK(软件开发者包)是EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具。EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以GPL发布,第三方组件有各自自身的许可协议。2.2JDK的下载与安装1、JDK的介绍JDK是Java开发者工具包,也称J2SDK,是SUM公司提供的基础Java语言开发工具,该工具软件包含Java语言的编译工具、运行工具以及执行程序的环境(JRE)。JDK现在是一个开源、免费的工具。JDK是其他Java开发工具的基础,也就是说,在安装其它开发工具之前,必须首先安装JDK。2、JDK的下载现在最新的JDK版本为JDK1.7,JDK的最新版本的下载地址为:/technetwork/java/javase/downloads/jdk-7u4-downloads-1591156.html3、JDK的安装在下载好的JDK双击进行一步一步的安装即可,之后进行另一项工作,即:环境变量的配置。4、环境配置图解过程4.1右击“我的电脑”,选择属性4.2选择“高级系统设置”4.3选择“高级”选项卡中的“环境变量”4.4在系统环境里点击“新建”,之后在“新建系统变量”里输入如下内容,在点击“确定”。4.5Path系统的变量设置,在系统变量里找到“Path”,之后点击“编辑”,进入“编辑系统变量”,编辑“变量值”,完成后点击“确定”。4.6classpath系统变量值的设置,由于JDK是1.7最高版本的,所以当JDK高于1.6版本时就不需要设置classpath的系统变量值了。5、JDK1.7安装的最后检查若想确定JDK是否安装成功,可以在cmd运行环境里查看,即JDK安装成功时的状态为:2.3Eclipse的下载与安装1.Eclipse的下载JDK环境配置成功后,接下来就是要把Java开发工具给安装起来,即Eclipse的下载网址为:http:///downloads/进入后打开如下的网页:根据自己的学习要求下载合适的版本,我这里下载的是第一个中的Windows32Bit。然后再点击那个下载按钮开始下载就可以了,下载下来的是一个压缩包。将该压缩包解压到一个自定义的文件夹中,之后打开eclipse文件夹中的eclipse.exe,就能打开eclipse软件。2.4Eclipse中AndroidSDK插件的下载与安装1、AndroidSDK的介绍SDK:软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,AndroidSDK指的是Android专属的软件开发工具包。2、AndroidSDK的下载AndroidSDK的下载网址为:http:///android/android-sdk_r04-windows.zip下载后解压文件。3、AndroidSDK的安装AndroidSDK不用安装,下载后,直接解压即可,将下载后的SDK的压缩包解压到适当的位置,SDK就安装成功。使用Eclipse进行Android应用开发需要给Eclipse安装ADT插件,这样Eclipse就可以和AndroidSDK建立连接了,可以在Eclipse中启动Android模拟器进行程序调试等ADT插件安装,但必须先下载adt的zip安装包,安装插件后,需要做如下的配置即可:3.1、在Eclipse中,选择Window>Preference;3.2、从左侧的菜单中,选择Android项;3.4、设置SDKLocation,点Browse选择SDK的安装根目录;3.5、点apply后再点ok,即安装完成。4、安装Eclipse的开发插件4.1、启动Eclipse,选择菜单Help>InstallNewSoftware出现如下界面:4.2、点击Add按钮,出现如下的界面:输入网址/android/eclipse/(如果出错就将https改成http)。名称:Android(自定义)4.3、点击OK出现如下的界面:按照操作,点击Next,知道出现如下的界面:4.5、选择“Iacceptthetermsofthe….”在点击Next,进入安装界面。4.6、安装完成后,出现如下的界面:4.7、点击Yes按钮,重启Eclipse后,再来配置androidsdk。4.7.1、点击菜单Window->preferences,进入一下界面:在Browse选择你之前androidsdk解压后的根目录,如下:4.7.2、升级SDK版本,选择菜单windows->Androidsdkandavdmanager:4.7.3、选择Updateall按钮,进入下面操作界面,再点击左边的Accept后点Install安装:点击Install后,进入下一个安装界面进行安装。4.7.5、安装完成。4.7.6、新建AVD,步骤和上面一样,进入AndroidSDKandAVDManager后一步一步的进行设置就OK了。创建完AVD之后,我们就可以在Eclipse里面新建Android的项目了。新建Android第3章Android的基本结构3.1Android的基本框架Android平台的基本框架如下图所示:Android分为四个层,从高层到底层分别是:程序应用层、应用程序框架层、系统运行库层和linux核心层。蓝色的代表java程序,黄色的代码为运行Java程序而实现的虚拟机,绿色部分为C/C++的程序库组成,通过JNI完成从Java到C的调用。应用程序所有的应用程序都是使用JAVA语言编写的,每一个应用程序由一个或者多个活动组成,活动必须以Activity类为超类,活动类似于操作系统上的进程,但是活动比操作系统的进程要更为的灵活,与进程类似的是,活动在多种状态之间进行切换。应用程序框架应用程序的架构设计简化了组建的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其发布的功能块,帮助程序员快速的开发程序,并且应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统,其中包括入下:丰富而又可扩展的视图,可以用来构建应用程序,包括:lists、grids、textboxes、buttons,甚至可嵌入的web浏览器。内容提供器使得应用程序可以访问另一个应用程序的数据,或者共享他们自己的数据。资源管理器提供非代码资源的访问,如本地字符串、图形、布局文件。通知管理器使得应用程序可以在状态栏中显示自定义的提示信息。活动管理器用来管理应用程序生命周期并提供常用的导航回退功能。系统运行库程序库Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。如下为核心库:Bionic系统C库媒体库,基于PacketVideoOpenCORESurfaceManager顾名思义,用于管理SurfaceWebkit,LibWebCore浏览器,基于Webkit引擎SGL底层的2D图形引擎3Dlibraries基于OpenGLES1.0APIs实现FreeType位图和矢量字体显示SOLite一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎Android运行库Android包含一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效的运行多个虚拟系统。Dalvik虚拟机执行的Dalvik可执行文件,该格式文件针对小内存使用做了优化,Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。Linux内核Android的核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。3.2Android系统的四大组件Activity应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些空间也可以监听并处理用户的事件作出响应。Activity之间通过Intent进行通信,在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。ServiceService没有用户界面,但他会在后台一直运行,例如:service可能在用户处理其它事情的时候播放背景音乐,或者从网络上获取数据,或者执行一些运算,并把运算结构提供给activity展示给用户。每个service都扩展自类service。多媒体音乐播放器就是一个很好地例子,多媒体播放器程序可能含有一个或者多个Activity,用户通过这些activity选择并播放音乐。然而,音乐回放并不需要一个activity来处理,因为用户可能希望音乐一直播放下去,即使退出播放器去执行其他程序,所以多媒体播放器activity可能会启动一个service在后台播放音乐,Android系统会使音乐回放service一直运行,即使再启动这个service的activity退出之后。BroadcasereceiverBroadcasereceiver不执行任何任务,仅仅是接受并响应广播通知的一类组件。大部分广播通知是由系统产生的,例如:改变时区、电池电量低、用户选择了一幅图片或者用户改变了语言首选项,应用程序同样也可以发送广播通知,一个应用程序可以包含任意数量的Broadcasereceiver来响应它认为很重要的通知,所有的Broadcasereceiver都扩展自类BroadcastReceiver。Contentprovider应用程序可以通过Contentprovider访问其他应用程序的一些私有数据,这是Android提供的一种标准的共享数据的机制。共享的数据可以是存储在文件系统中、SQLite数据库中或其它的一些媒体库中。Contentprovider扩展自ContentProvider类,通过实现此类的一组标准的接口可以使其它应用程序存取由它控制的数据。然而应用程序并不会直接调用ContentProvider中的方法,而是通过类ContentResolver。ContentResolver能够与任何一个ContentProvider通信,它与ContentProvider合作管理进程间的通信。3.3Android音乐播放器的详细设计思想说起音乐播放器大家都知道,手机、电脑上的播放器,无疑不是大家放松心情的一种选择的娱乐方式。自从接触android以来,对android抱有很大的兴趣,就想着自己可不可以制作一款播放器呢,于是查找资料,研究设计一款属于个人的音乐播放器。首先设计出播放器各界面的草图,同时考虑要实现的功能(如:播放、暂停、继续播放、上/下一曲、进度条、本地列表等等),及功能在界面的buff,设计完成后就是将该界面在eclipse中设计出来,再实现后台代码的编写,最后通过系统化的测试,一步步的将播放器优化,知道播放器的正常使用。本次播放器主要有三个界面构成:1、本地音乐列表界面,2、最近播放列表界面,3、播放主界面。本地音乐界面读取的是手机SD卡中所有的可播放的音频文件,通过ListView列表来获取,点击列表中的任意一首歌曲,就会跳转到播放的主界面中,同时获取该歌曲的所有播放信息;最近列表记录的是最近播放过的任意一首歌曲,点击该列中的任意一首歌曲同样会跳转到播放的主界面中,并获取该歌曲的相关信息;在当前播放的主界面中,可以任意的对当前歌曲进行暂停、继续播放、上一首、下一首等操作。此款播放器实现的是最基本的播放原理,但没有实现歌词的显示滚动,以及下载音乐的机制等等,作为一个项目实在存在很多的不足,但是确实一个自己独立的项目,其作用也是不可小觑的,本次播放器的完成让我更加的了解Android,了解程序,为我今后的工作带来很大的帮助。第4章本系统内容需求4.1实现的内容需求本文主要实现的内容需求有以下的几个方面:(1)读取内存卡(SD)卡里面所有的音频文件,并自动加入该音乐播放器中。(2)音乐的播放,包括上一首、下一首、暂停、播放、进度条、更新歌名、时间显示、本地列表、最近播放列表(3)合理的设计音乐播放器的界面4.2播放器实现的目标本系统属于客户经常使用的音乐播放器。可以是作者更加的清楚该流程,本系统应达到的目标:软件采用人机交互的方式,界面美观友好,操作简单、方便、富有个性化。能对音乐文件进行有效的管理。系统应最大限度的实现易维护性和易操作性。本系统使作者达到的目标:本系统利于作者对大学时期所学知识的归纳、总结。锻炼了作者的应用性及项目的整体完成性,同时为以后找工作奠定了重要的基础。让作者更加的了解一款软件从设计到完成这个工作流程,及途中遇到苦难该如何的解决。本系统再次拉近了与程序之间的关系,让我们更加的了解这个行业,更加的了解这个互联网软件的时代。4.3播放器的基本控制需求根据本项目的要求,我们了解了该项目系统的基本需求,现在就从不同的角度来描述系统需求。并运用例图来细致的分析下,从播放器的基本控制需要、播放列表管理需求、播放界面的友好设计这三部分来进行概括。下一首上一首继续播放暂停播放用户下一首上一首继续播放暂停播放用户图1播放器的基本控制需求4.4功能需求分析从图例分析图可以看出播放器中信息发送和调用过程快捷方式按钮主界面本地快捷方式按钮主界面本地音乐界面正在播放界面面选择歌曲播放最近播放列表界面本地音乐播放页面正在播放发送参数调用后台的serviceService播放、返回播放后台Service第5章Android的项目介绍5.1本地音乐列表界面首页是通过TabHost布局,分两个标签,即:“本地音乐”和“正在播放”列表,如下图3所示,其布局代码不附属了;如下代码实现的是首页中本地列表歌曲的获取方法:
关键代码:musicListView.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>adap,Viewv,intposition,longarg3){ currentListItme=position; playMusic(MUSIC_PATH+mMusicList.get(position)); isRunning=true; Intentintent=newIntent(); intent.setClass(Mp3PlayerActivity.this,Zhengzai.class); Bundlebundle=newBundle(); bundle.putString("path",MUSIC_PATH+mMusicList.get(position).toString()); intindex=position; bundle.putString("musicTitle",mMusicList.get(position)); intent.putExtra("bundle",bundle); startActivity(intent); }});5.2正在播放界面关键代码:正在播放mStartImageButton.setOnClickListener(newImageButton.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //TODOAuto-generatedmethodstub //Stringpath=MUSIC_PATH+mMusicList.get(currentListItme); if(!isRunning){ playMusic(path); //startSeekBarUpdate(); }else{ if(!isPause){ pause(path); }else{ continuePlay(path); } } } });下一首的监听和实现mNextImageButton.setOnClickListener(newImageButton.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub nextMusic(); } });privatevoidnextMusic(){ if(++Mp3PlayerActivity.currentListItme>=Mp3PlayerActivity.mMusicList.size()){ Mp3PlayerActivity.currentListItme=0; } playMusic(MUSIC_PATH+Mp3PlayerActivity.mMusicList.get(Mp3PlayerActivity.currentListItme)); isPause=false; mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor)); }上一首的监听和实现mPreImageButton.setOnClickListener(newImageButton.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub FrontMusic(); } });privatevoidFrontMusic(){ if(--Mp3PlayerActivity.currentListItme<=0){ Mp3PlayerActivity.currentListItme=Mp3PlayerActivity.mMusicList.size()-1; } playMusic(MUSIC_PATH+Mp3PlayerActivity.mMusicList.get(Mp3PlayerActivity.currentListItme)); isPause=false; mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor)); }音乐的暂停privatevoidpause(Stringpath){if(Mp3PlayerActivity.mMediaPlayer!=null&&Mp3PlayerActivity.mMediaPlayer.isPlaying()){ Mp3PlayerActivity.mMediaPlayer.pause();isPause=true;mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_play_nor));}}音乐继续播放privatevoidcontinuePlay(Stringpath){ if(isPause){ Mp3PlayerActivity.mMediaPlayer.start(); isPause=false; mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor));}}5.3退出播放器界面退出播放器提示代码:publicvoidshowExitDialog(){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("确定要退出吗?"); builder.setNegativeButton("否",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ } }); builder.setPositiveButton("是",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ Mp3PlayerActivity.this.finish(); System.exit(0); } }); builder.setCancelable(false); builder.create().show();}5.4AndroidManifest.xml文件介绍Android系统的任何一个程序启动都需要AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidManifest.xml文件,此配置文件是整个程序能够正常运行的核心,它包含了AndroidSDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml中寻找标识来作出相应的操作。在AndroidManifest.xml中有一个根结点<users-sdk>,它是我们需要定义的ADT版本,当程序的任何一个组件要用到时,都必须在AndroidManifest.xml文件中声明。四大组件要使用前都需要声明。其中声明provider是还需要声明其授权authorities。每个组件里面好有很多的属性,会根据程序的具体需要定义不同的属性。过滤器inent-filter有两种启动方式来启动界面。显示方式:显示方式是在代码中直接启动组件,启动时会声明Inent,在它的构造方法Intent中直接指定一个组件的名字,然后调用方法startIntent(intent)以启动指定的组件。隐式方式:隐式方式是通过过滤器来过滤完成的,启动的组件必须满足action和category的条件才能够启动该组件。这些属性是在AndroidManifest.xml文件中声明的。两种启动方式都可以通过程序setAction和startActivity或配置文件两种方式来实现组件的跳转。第6章Android模拟器读取SD卡中音频文件的实现6.1怎样在模拟器中添加音频文件并读取在Android模拟器中,初始时没有sdcard的,为了存放音乐文件,需要自己创建sdcard,所以下面的介绍就是怎样在模拟器中创建音频文件及读取。6.2SD卡的创建通过Android的Tools来创建sd卡并导入进来:打开dos,windows+R键打开。转换到你的sdk安装包的tools目录下,如我的目录如下:E:\android-sdk-windows\tools。创建sd卡。在命令行中输入:mksdcard1024M,E:\androidsdcard\sdcard.img。在eclipse里面创建模拟器,并以该SD卡来创建。创建完成之后,启动该模拟器。可以在AndroidSDKandAVDManager里面指定模拟器并启动。同样打开Eclipse的DDMS—FileExplorer查看sd卡是否安装完成。6.3向SD卡里面上传文件右边两个小手机按钮就是传输文件的按钮了,用它来实现文件的传入和传出了,向左的表示把手机里的文件导出,向右的表示把文件导入手机里面去。但是在这里很容易出现一些异常情况,在这里异常情况不一一讲述了,把手机里面的文件导出,进入模拟器,其导出的音频文件的名称最好为英文,如果是中文名称则很容易出现异常。导出后,启动模拟器,在播放器中就可以将歌曲自动的导入播放列表中。6.4手机SD卡音频文件读取的代码第7章软件测试7.1软件测试环境由于本次的软件是个人的小项目,其测试的环境只能用自己的手机进行测试,打开eclipse连接手机,运行项目时会将程序默认的安装在手机里,即我们可以在手机里进行每个功能点的测试,需注意的是,本次项目是Android平台下的音乐播放器,所以测试的手机必须是Android系统的,且在Android2.1以上版本的,测试环境允许的条件下,接下来就是实际的测试操作了。7.2测试阶段测试前期一个一个功能点的测试,即:单个模块的测试。当写好一个功能如:播放,测试需求为:1、播放的按钮是否正常显示,2、未播放的按钮状态(暂停)点击后是否显示为播放状态,且能正常播放音乐,3、正在播放时点击播放按钮是否显示为暂停状态,且歌曲是否停止播放了,4、再次点击暂停按钮时是否显示为播放状态,且歌曲是否是接着上次的播放进度继续播放的。测试流程为:按照测试的需求一步步的执行操作,如出现问题需及时的修改。测试结果为:测试完一个单个模块功能时,其测试的结果需记录下来,整理后统一的进行修复,直到问题解决完毕。测试中期与初期测试不同,该时期测试是在附属的单个功能都完成的条件下进行的,相当于小模块多个功能的整体测试。如:歌曲的播放、暂停、继续播放、上一首、下一首的整个流程。测试需求为:1、本地列表中的任意歌曲是否都能点击并跳转到播放界面进行播放,2、对正在播放界面中播放的歌曲进行暂停、继续播放、上一首、下一首是否正常运行,3、正在播放界面的歌按钮状态在不同操作下是否显示正确。测试流程为:按照测试需求完成附属模块的整体测试,如中途出现问题应及时的修改。测试结果为:附属模块测试完毕时,须把测试结果记录下来,整理后统一的进行修复,知道问题解决完毕。测试完毕此测试条件为所有功能基本完成,播放器整体成形,此时需进行更加系统的测试,以确保所有问题都解决掉。按照之前的需求,再进一步的对此播放器进行优化,更完善些。当测试完成后,该项目就是一个比较成功的项目了。7.3测试要点和总结每测试一个功能时,需要整理一个Excel文档,记录每一个功能的流程,按照模块、测试项、前置条件、执行步骤、预期结果和测试结果进行详细的记录,记录完整之后,总结一个测试文档,总结测试的过程。测试报告是每个软件测试所必须的,该报告清楚的记录测试的流程及测试的结果,和存在的问题,及时的提醒我们要及时的修复。7.4测试结果本次的软件测试,有好多的功能没有实现。如:最近播放音乐的记录该功能没有实现,虽然后台代码编写完成了,但是调试后的结果没有反应,由于自己的能力不足,最终导致这方面目前仍没有实现;下载音乐的功能、音乐歌词的显示等等功能都没有做,只是单纯的实现了播放、暂停、继续播放、上/下一首、进度条显示、本地音乐的加载等功能,虽然这款音乐播放器可以播放,但是该软件实现的机制太少了,只能算上一个大一点的毕业作业,谈不上项目,可是,对于这款播放器的编写,本人花了很长的时间研究,由于学校的教学资源有限,我们只能找些资料、书籍和老师的帮助,才一步步的实现。本次的毕业设计完全是使用最基本的android知识来编写的,这对我们在大学所学知识的概括有了一个非常好的总结,这些知识只够我们入门,要想精通这门语言,我们是要努力的学习的,这款音乐播放器,对我们来讲是一个比较大规模、完整的一次项目了,不论从设计的开始,还是到最后的完成,每一步的实现都是靠自己一点点来解决的。通过最后的测试,播放器不存在崩溃的情况,但是那些目前没有实现的bug,在以后的时间里,我会一点一点的去完善它,让这款播放器成为自己独有的一款。随着这次的毕业项目的完成,对自己的能力也有了一个充分的了解,这次的测试不仅是对我写的软件的测试,更是对我人生一次重要的测试,通过这次,我对今后有了一定的认识,希望自己能坚强的走下去。结束语通过这次的毕业设计,对Android手机平台的音乐播放器软件的开发,使我们更加清楚的了解播放器系统的整个流程。一款播放器的完成,绝对是要经过努力的设计、考量、编码、测试来一步步的完成的,这款音乐播放器是由播放的主界面、播放列表、最近播放列表界面、本地音乐操作界面等这几个核心部分组成的。设计这款音乐播放器,需把自己当成客户,从客户的角度来要求播放器应实现哪些功能和界面设计等等。这款音乐播放器应实现的最基本的功能:播放、暂停、继续播放、上一首、下一首、读取本地音乐列表等功能。此软件所运用的平台是现今最热门的的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写的SQLite数据库支持的SharePreference配置文件的组合方式进行数据管理。实现了音乐播放器的系统编程。本次的程序设计,采用的主要开发工具是Eclipse+Java语言支持,AndroidDevelopmentTool的插件和AndroidSDK2.1结合完成的。此程序的设计,让我们对软件的开发工具及其安装的过程有足够的了解,熟悉并掌握其运行的配置环境。对于这次的软件开发,让我明白了,一个项目的开始不能着急于要怎么写代码,首先应该对自己要写的软件做一个全面的了解、分析,要实现哪些方面,接下来把自己要实现的功能画出来,组成一个界面,在播放器的界面草稿设计好后,在Eclipse中将其界面实现,接下来我们才致力于编写后台的代码,对界面上的功能得以实现,之后对写好的程序进行测试,最终将音乐播放器项目完成。此次的项目完成,途中查看了不少的文档资料,以及老师、同学的帮助,总之,经过这次的Android项目的整体完成,使我对Android系统有了一定的了解,同时对Android系统上的开发流程及开发模式有了更深的了解,这对我今后的工作打下了良好的基础。本次论文的撰写,是在指导老师**的指导下完成的,在此,我要忠心的感谢老师对我的指导与关心,借此要说声:老师您辛苦了!参考文献[1]李刚,疯狂Android讲义(第2版),出版社:电子工业出版社2013[2]杨丰盛,Android技术内幕:系统卷,北京:机械工业出版社2011[3]彭征,廖和平,黄易禄,熊祥强.旅行社旅游信息系统研究[J].河南大学学报,2006.(3)[4]李江风.旅游信息系统概论[M].武汉:武汉大学出版社.2003.[5]毕广吉,java程序设计实例教程[M],北京:冶金工业出版社2009[6]辛运帷、饶一梅、马素霞,Java程序设计[M],北京:清华大学出版社2007[7]张海藩,软件工程导论[M],北京:清华大学出版社2003[8]何玉洁,数据库原理与应用[M],北京:机械工业出版社2007[9]网络资料:参考播放功能和SD卡的资料[10]余志龙、郑名杰、陈小凤等,GoogleAndroidSDK开发范例大全(第二版),北京:人民邮电出版社2010致谢首先需要感谢的是我大学里所有的老师,没有你们这三年的栽培、教育,就没有今天的我,是你们无私的教育,丰富我的学识,每天耐心的给我们解答、指导,像朋友、家人一样关心着我们。不仅在学习上,在生活上依然关照着我们,在此,我忠心的感谢你们。感谢答辩委员会全体老师在百忙之中对我的论文提出很多的宝贵建议,让我的论文完善的更好,更充分。感谢我的室友,是你们陪伴了我整个大学时代,也是相处时间最长的,长时间的相处离不开你们对我的帮助、关怀,对于这次的毕业论文你们同样给予我帮助,在此我深深的感谢你们,谢谢你们,有你们,我的大学没有了孤单。最后需要感谢的是我本次论文的指导老师宋培培,在她的指导、建议支持下才完成的这次毕业论文。这次的论文撰写,使我受益匪浅,让我了解了一款软件所完成的所有步骤,第一步要干什么、接下来要干什么、最后需要干什么,从最先的分析、到最后的设计完成,都是要经过深思熟虑的。面对这款软件的定位,我需要从客户的角度出发,以客户客观的角度来对这款软件提出要求,满足哪些实质性的问题,怎样做会更好,更实际、实用。通过这一系列的考虑,不仅使我的思维能力得到提升,同时还能学到更多的专业性知识,了解企业对一款软件开发的全过程需求和考量;不仅如此,对生活的态度也有一定的提升,面对问题,以一种积极向上、不断进取、一丝不苟的态度,把生活当成学习,积极面对。
毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:
学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名: 日期:年月日导师签名:日期:年月日基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPSHYPERLINK"/detail.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资产抵押合同协议书
- 药店药品购销合同
- 订购合同范本6
- 2024年度吊车租赁合同的解除与终止2篇
- 二零二四年度二手房买卖合同无中介专项条款2篇
- 互联网电商平台04版售后客服劳动合同3篇
- 工程承包居间的合同范本
- 海外游学合同范本
- 2024年度电子商务信用评价体系构建合同2篇
- 专场协议合同范本
- 道路运输企业两类人员安全考核题库题库(1020道)
- 科室医院感染管理小组名单及职责
- 数据要素市场化配置探索:理论与实践
- 渡槽基础微课
- CCS船级社认可试验大纲
- 消化系统常见疾病课件
- 武警第三套擒敌拳图解
- 抗菌药物培训考试试题及答案9
- GB/T 1720-2020漆膜划圈试验
- 公立医院内部控制管理办法解读
- 1:1000地形图测绘项目技术设计书
评论
0/150
提交评论