基于Android平台的在线音乐客户端设计与实现本科生毕业论文.docx
《基于Android平台的在线音乐客户端设计与实现本科生毕业论文.docx》由会员分享,可在线阅读,更多相关《基于Android平台的在线音乐客户端设计与实现本科生毕业论文.docx(45页珍藏版)》请在冰豆网上搜索。
基于Android平台的在线音乐客户端设计与实现本科生毕业论文
基于Android平台的在线音乐客户端设计与实现
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
摘要
随着社会生活节奏越来越快,以及硬件移动设备的越来越先进,我们对移动设备的要求也在不断提高,从原来的追求技术到现在的追求视觉。
因而,也逐步提高了对操作系统的要求。
Android是一个开源系统,底层主要是基于Linux的内核,该文章主要针对的是基于Android平台的在线音乐客户端设计与实现进行讨论。
本论文的音乐客户端主要采用的是Android平台,利用Java语言和Eclipse编辑工具对此音乐客户端进行编写,同时给出了在线音乐客户端的系统设计过程、主要界面图及功能运行流程图,文章中还对开发过程中遇到的问题和解决方案进行了详细的讨论,该音乐客户端集播放、暂停、上一首、下一首、音量调节、歌词显示等功能于一体,性能良好,在Android系统中能独立运行。
此音乐客户端还可以通过访问音乐网址实现在线听音乐的功能。
关键词:
Android;开源系统;linux;音乐客户端
ABSTRACT
Withtheincreasinglyrapidpaceofsociallife,aswellashardwareandmoreadvancedmobiledevices,wearemovingequipmentrequirementsarealsorising,fromtheoriginaltothecurrentpursuitpursuitoftechnologicalvision.Thus,alsograduallyimprovetheoperatingsystemrequirements.Androidisanopensourcesystem,thebottomismainlybasedontheLinuxkernel,andthemainarticleisbasedontheAndroidplatformforonlinemusicclientstodiscussdesignandimplementation.Inthisthesis,themainclientsofmusicusingtheAndroidplatform,theuseoftheJavalanguageandEclipseeditingtoolsforthepreparationofthismusicclient,andgivestheclient'sonlinemusicsystemdesignprocess,themaininterfaceandfunctionaloperationflowchartdiagram,articlesthedevelopmentprocessalsoencounteredproblemsandsolutionswerediscussedindetail,theclientsetsthemusicplay,pause,previous,next,volumecontrol,lyricsdisplayandotherfunctions,goodperformance,inAndroidsystemcanoperateindependently.Thismusicclientcanalsoaccessmusicwebsiteforonlinemusicfunctions.
KeyWords:
Android;Opensourcesystem;linux;MusicClient
第一章引言
1.1项目背景
随着社会生活节奏越来越快,我们对手机功能的要求也越来越高,由于手机市场飞速发展,手机操作系统也跟着出现了很多不同的种类,如今市场上主要的手机操作系统有三个,分别是ios,windowsphone,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统的发展前景最大。
那么能否在手机上拥有自己编写的个性音乐播放器呢?
当然可以,谷歌Android系统就可以做到。
本文的音乐客户端就是基于谷歌Android手机平台的MP3播放器。
Android:
是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能将手机系统中的功能根据自己的喜好重新编写。
这使得越来越多的人关注开始这个操作系统。
本次作品在线音乐客户端就是基于Android平台的。
随着计算机的广泛运用,手机市场的飞速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经逐渐成为我们生活中必不可少的一部分了。
于是各种手机播放器也紧跟着发展起来,然而很多播放器只是追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存的占用率过高等,在用户需要多任务操作时,就会受到影响,带来了很多不便,而对于大多数普通用户,很多功能是用不上的。
针对以上这些弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,来满足一般用户的需求,除了能播放常见格式的语音视频文件,高级功能:
还能播放RMVB格式的视频文件。
此外,还能支持中文、英文等语言界面。
要研究市场上一些流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的特点和缺陷,编写出功能实用,使用方便快捷的播放器。
目前已经实现的功能为可以播放常见音频文件的功能,如MP3,WAV,等,拥有歌曲列表,具备一般播放器的功能,如快进,快退,上一曲,下一曲,音量调节等。
1.2编写目的
随着当今社会的飞速发展,我们的生活节奏也不断加快精神压力不断增大,欣赏音乐就是舒缓压力最好的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和在线播放等多种播放控制功能,界面简明,操作简单。
本项目是一款基于Android手机平台的在线音乐客户端,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。
使我们的生活更加多样化。
也使设计者更加熟练Android的技术和其它在市场上的特点
第二章Android平台及开发工具介绍
2.1什么是Android?
2.1.1Android简介
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
目前最好的是Android2.0的摩托罗拉Droid
Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(OpenHandsetAlliance)开发。
它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。
低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。
另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。
Android在未公开之前常被传闻为Google电话或gPhone。
大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。
到了2010年1月,Google开始发表自家品牌手机电话的NexusOne。
目前最新SDK版本为Android2.1
2.1.2AndroidFeatures特性
Android系统有如下的几大特性:
·应用程序框架支持组件的重用与替换
·Dalvik虚拟机专门为移动设备做了优化
·内部集成浏览器该浏览器基于开源的WebKit引擎
·优化的图形库包括2D和3D图形库,3D图形库基于OpenGLES
·SQLite用作结构化的数据存储
·多媒体支持包括常见的音频、视频和静态印象文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)
·GSM电话(依赖于硬件)
·蓝牙Bluetooth,EDGE,3G,andWiFi(依赖于硬件)
·照相机,GPS,指南针,和加速度计(依赖于硬件)
·丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件
2.1.3Android基本框架(AndroidArchitecture)
图2.1AndroidArchitecture
(1)Applications
ApplicationAndroid会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是用JAVA编写的。
(2)ApplicationFrameWork
开发者完全可以访问核心应用程序所使用的API框架。
该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。
该应用程序重用机制使得组建可以被用户替换。
所有的应用程序都由一系列的服务和系统组成,包括:
·可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至包括一个可嵌入的web浏览器
·内容管理器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
·资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和分层文件(layoutfiles)。
·通知管理器(NotificationManager)使得应用程序可以在状态栏中显示客户通知信息。
·活动类管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。
(3)Libraries库
Android包括一个被Android系统中各种不同组件所使用的C/C++库集。
该库通过Android应用程序框架为开发者提供服务。
以下是一些主要的核心库:
系统C库-一个从BSD继承来的标准C系统函数库(libc),专门为基于embeddedlinux的设备定制。
媒体库-基于PacketVideoOpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态印像文件包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。
SurfaceManager-对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
LibWebCore-一个最新的web浏览器引擎用来支持Android浏览器和一个可嵌入的web视图。
SGL-一个内置的2D图形引擎3Dlibraries-基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
FreeType-位图(bitmap)和向量(vector)字体显示。
SQLite一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
(4)AndroidRuntime
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik是针对于同时高效地运行多个VMs来实现的。
Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。
该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。
2.1.4Android系统的四大组件
在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。
下面分别介绍四大组件:
(1)Activity简介
在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。
多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。
Activity有自己的生命周期,由Android系统来控制。
(2)Service简介
顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期中的方法就可以了。
一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过元素声明才能使用.Service有自己的生命周期,我们可以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service
(3)BroadcastReceiver简介
BroadcastReceiver顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。
到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。
我们可以在你的应用程序中实现BroadcastReceiver来监听和响应这些广播的Intent
(4)ContentProvider简介
ContentProvider用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。
它是跨应用程序共享数据的唯一方法。
Android为常用的数据类型(如:
音视频、图片和联系方式等)提供了大量的ContentProvider。
它们被定义在android.provider包下面。
通过这样定义好的ContentProvider我们可以方便的进行数据操作。
当然我们必须拥有适当的权限。
我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问
2.2eclipse开发工具介绍
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
2.2.1Android项目
Android的四大基本组件:
Activity(活动),Service(服务),BroadcastReceiver(广播),ContentProvider(内容提供者),各组件之间要进行切换需要一个意图或企图Intent类,通过启动StartIntent()方法来使各组件进行跳转
Android的五大布局方式:
LinearLayout(线性布局)FrameLayout(帧布局)TableLayout(表格布局)AbsoluteLayout(绝对布局)RelativeLayout(相对布局)
五种布局方式可以相互嵌套,Android各种漂亮的界面都是通过嵌套布局而实现的。
Android的线程,以及线程之间通信的中介:
Handler类
Android数据库:
在第三章已经介绍过了。
这里不再介绍
Android配置文件:
AndroidManifest.Xml及res资源文件中各种属性布局方式引用的资源等
Android系统将插件ADT集成到了Eclipse工具上,因此,一个Android程序启动后,系统会启动一个模拟器(Emulator)(图2.2),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。
我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定,目前最大支持800X600的分辨率。
图2.2android模拟器
2.2.2Android工程程序结构
Android工程基本结构目录包括:
src(源代码)、gen(Android系统自动生成的常量)、Res(资源文件):
主要存放程序界面的布局配置(.xml)文件和图片资源。
AndroidMainfes.xml是四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转。
Android资源的类型和布局(图2.3)
图2.3
下图2.2.1-图2.2.5为音乐播放器代码结构和各界面的配置文件,图像资源等,图2.2.1为一个Android工程所必须的结构,图2.2.2为该播放器的.Java文件,图2.2.3为播放器所用到的字符串,字体大小,字的颜色等配置文件,图2.2.4为该播放器的各种界面的布局配置文件,图2.2.5为该播放器的图片资源。
图2.2.1
图2.2.2图2.2.3图2.2.4图2.2.5
第3章在线音乐客户端总体设计
3.1功能需求(用列表方式分析)
根据项目的目标,我们可获得项目系统的基本需求,以下开始介绍在线音乐客户端的整体功能需求,并使用列表的方式来描述,我们分成两部分来概括,即本地音乐的操作和在线音乐部分的操作。
3.1.1本地音乐的基本控制需求
用例名称:
播放
参与者:
用户
目标:
使得用户可以播放在播放列表中选中的歌曲
前置条件:
播放器正在运行
基本事件流:
1.用户单击“播放”按钮
2.播放器将播放列表中的当前的歌曲
用例名称:
暂停
参与者:
用户
目标:
使得用户可以暂停正在播放的歌曲
前置条件:
歌曲正在播放且未停止和暂停
基本事件流:
1.用户单击“播放”按钮
2.播放器将暂停当前的歌曲
用例名称:
第一首/最后一首
参与者:
用户
目标:
使得用户可以从第一首或最后一首歌曲开始听
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户单击“第一首或最后一首”按钮
2.播放器将播放第一首或最后一首歌曲
用例名称:
上一首/下一首
参与者:
用户
目标:
使得用户可以听上一首或下一首歌曲
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户单击“上一首或下一首”按钮
2.播放器将播放上一首或下一首歌曲
用例名称:
歌词歌曲同步
参与者:
用户
目标:
使得用户可以歌词跟唱歌曲
前置条件:
sdcard存入与歌曲匹配的lrc歌词文件
基本事件流:
1.用户点击想要播放的歌曲
2.播放器显示所点击播放歌曲的歌词
用例名称:
快进/快退
参与者:
用户
目标:
使得用户可以快进或快退歌曲
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户向前或向后拖动播放进度条
2.播放器将快进或快退歌曲
用例名称:
音量控制
参与者:
用户
目标:
使得用户可以控制歌曲音量
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户向前或向后拖动音量进度条
2.播放器将调节歌曲的音量
用例名称:
歌曲列表
参与者:
用户
目标:
使得用户可以进入播放清单
前置条件:
程序在运行,播放器正在播放本地歌曲
基本事件流:
1.用户单击手机上的“返回”按钮
2.播放器进入歌曲列表
3.1.2本地音乐的基本控制需求
用例名称:
在线试听
参与者:
用户
目标:
使得用户可以感受在线试听的魅力
前置条件:
程序运行且手机处于wifi连接的状态
基本事件流:
1.用户单击“在线试听”按钮
2.播放器进入在线试听状态
用例名称:
搜索
参与者:
用户
目标:
使得用户可以在线试听搜狗音乐新歌榜TOP100
前置条件:
在歌曲名称和歌手名称栏中输入想要试听的歌曲名称和歌手名称
基本事件流:
1.用户单击“搜索”按钮
2.显示所获得的歌曲链接
用例名称:
播放
参与者:
用户
目标:
使得用户开始试听搜索的歌曲
前置条件:
用户单击搜索按钮后成功获得歌曲链接
基本事件流:
1.用户单击