基于安卓平台的音乐播放器设计与开发.docx
- 文档编号:9566540
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:72
- 大小:771.13KB
基于安卓平台的音乐播放器设计与开发.docx
《基于安卓平台的音乐播放器设计与开发.docx》由会员分享,可在线阅读,更多相关《基于安卓平台的音乐播放器设计与开发.docx(72页珍藏版)》请在冰豆网上搜索。
基于安卓平台的音乐播放器设计与开发
1绪论
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由AndyRubin开发,主要支持手机。
2005年8月由Google收购注资。
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
第一部Android智能手机发布于2008年10月。
Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%[1]。
1.1项目背景
随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。
于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。
针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:
还能播放RMVB格式的视频文件。
此外,还能支持中文、英文等语言界面。
要研究各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。
目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV,等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进,快退,音量调节等。
1.2国内外相关研究现状及发展趋势
在Linux上流行的播放器有多种主要有Xmms,RealPlayer,Xmovie,QuickTime,Mplayer等,以下对这些播放器进行分析介绍。
1、Xmms
Xmms是X-Window系统下最流行的多媒体播放器之一,大多数Linux版本都捆绑了改产品最为Linux下的标配音频播放器,Xmms可以播放MP3、MOD、Wav等多媒体文件,而且只要提供相应的插件,它还可以支持而更多的多媒体类型。
2、Xmovie
Xmovie最早是作为电视节目的播放软件。
它的播放界面非常简单。
界面上除了播放、快进、快退、播放时间显示和播放进度显示这几个主要功能外,没有其他控制功能。
界面上方的选单条不含有任何播放控制功能,基本上都是对播放画面的调整和环境变量的控制。
Xmovie支持mpg,mov,vob,m2v等视频格式,同时它还能够播放MP2和MP3音频格式的文件。
3、RealPlayer
RealPlayer在低带宽下支持音频、视频多媒体的低损失传输,同时具有优秀的流媒体在线播放能力。
RealPlayerforLinux版本的操作界面与其Windows平台下的版本类似。
RealPlayer的后续版本增加了对微软视频和音频的支持,并支持便携式设备。
4、QuickTime
QuickTime是苹果公司开发的流式音视频解决方案,也是出现较早的流媒体文件格式之一,它由三个不同部分组成:
QuickTimeMove(电影)文件格式,QuickTime媒体抽象层、QuickTime内置媒体服务系统。
这类文件扩展名通常是.mov,它所对应的播放器是“QuickTime”。
5、MPlayer
MPlayer是Linux上的电影播放器,它的功能十分强大,能够播放众多格式的文件。
MPlayer能使用众多本地的Xanim,RealPlayer和Win32DLL边解码器,播放大多数MPEG、VOB、AVI、OGG、ASF/WMV等文件,也能播放VideoCD、SVCD、DVD和DivX格式的电影。
MPlayer的另一个大的特色是支持广泛的输出设备,它可以在Xll、Xv、DGA、OpenGL、SVGAlib等下工作。
目前,媒体播放器主要趋向以下几个方向:
首先,支持多样化格式。
Xmms、Xmovie、QuickTime主要是针对固定的媒体格式类型或传输协议,具有一定的专用性,因此难以满足广大消费者的的需求,如今的音频,视频格式越来越多,如常见的音频WMA,MP3,MIDI以及视频的RM,AVI等。
如何能将能播放所有这些,是现今研究的方向。
其次,可扩展性也是一个必要的趋势,如今的播放器功能越来越强大,如何在现有的基础上使功能更全面,也是人们接受的一个因素。
这就是本课题选用开放式Android平台的一个原因,代码完全公开,为其功能扩展提供方便的条件。
1.3项目研究意义
目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。
和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器所。
一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。
不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是google的android手机平台。
Android播放器是近年来手机当中比较流行的音乐播放软件.通过结合自己所学的知识来设计和开发Android音乐播放器,可以深入学习Android多媒体框架结构和多媒体框架核心Opencore,并通过对Opencore的学习进一步的认识和理解Android多媒体播放机制,而且还可以在开发软件实物的过程中,熟悉软件开发流程,掌握Android领域小应用开发的方法,学习新的计算机知识,丰富自己的知识面。
Android平台是完全开放的平台,智能手机里的各种应用软件也越来越完备,在Android平台设计和开发一款音乐播放器可以摆脱不够智能音乐播放器的因素,并且具有很广阔的前景。
1.4本文主要内容
本文的主要内容是研究、分析和实现基于Android手机平台的音乐播放器
系统,包括以下几个部分:
第1章简要介绍了Android手机平台的背景及发展情况。
第2章研究了基于Android平台的软件开发环境,主要包括Android平台的产品支持、Android平台软件的消息机制。
第3章详述进行基于Android手机平台的音乐播放器的开发的整个过程,包括对软件的需求分析、软件的结构设计。
第4章主要叙述了播放器的详细设计,包括主要模块功能的实现以和部分核心代码。
第5章是对音乐播放器的软件测试,主要是对其功能验证,确定是否符合软件规格要求,最后对全文进行一个总结。
2安卓平台介绍
2.1安卓平台介绍
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
Android操作系统最初由AndyRubin开发,主要支持手机。
2005年8月由Google收购注资。
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。
Android的架构图如图2.1所示。
图2.1Android的架构图
Android的系统架构和其操作系统一样,采用了分层的架构。
从架构图看,Android分为四个层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
2.2安卓结构具体分析
1、应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是使用JAVA语言编写的。
2.、应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。
该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。
同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统,其中包括;丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Textboxes),按钮(Buttons),甚至可嵌入的web浏览器。
内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(Layoutfiles)。
通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。
3、系统运行库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。
它们通过Android应用程序框架为开发者提供服务。
以下是一些核心库:
(1)系统C库——一个从BSD继承来的标准C系统函数库Libc,它是专门为基于Embeddedlinux的设备定制的。
(2)媒体库——基于PacketVideoOpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。
编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等。
(3)SurfaceManager——对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
(4)LibWebCore——一个最新的Web浏览器引擎用,支持Android浏览器和一个可嵌入的Web视图。
4、安卓运行时库
Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。
每一个android应用程序是Dalvik虚拟机中的实例,运行在自己的进程中。
Dalvik虚拟机被设计成,在一个设备可以高效地运行多个虚拟机。
Dalvik虚拟机可执行文件格式是dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
Dalvik虚拟机依赖于Linux内核提供基本功能,如线程和底层管理。
5、Linux内核
Android基于Linuxversion2.6内核来提供系统的核心服务,例如:
安全机制,内存管理,进程管理,网络堆栈和驱动模块。
该内核还扮演着一个虚拟的中间层,该层介于硬件和其余的软件堆栈[2]。
2.3Android系统的四大组件
在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配置文件注册,通过
(3)BroadcastReceiver简介
BroadcastReceiver顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。
到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。
我们可以在你的应用程序中实现BroadcastReceiver来监听和响应这些广播的Intent。
Intent(意图)主要是解决Android应用的各项组件之间的通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为ListActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)。
为了实现这个目的,ListActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intentintent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。
(4)ContentProvider简介
ContentProvider用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。
它是跨应用程序共享数据的唯一方法。
Android为常用的数据类型(如:
音视频、图片和联系方式等)提供了大量的ContentProvider。
它们被定义在Android.provider包下面。
通过这样定义好的ContentProvider我们可以方便的进行数据操作。
当然我们必须拥有适当的权限。
我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问[4]。
2.4安卓开发环境搭建
2.4.1Java环境搭建
Android支持WindowsXP以上操作系统。
首先,需要有Java环境。
方法很简单。
第一步,登陆,下载最新版本的jdk安装jdk和jre两个部分。
选择目录,安装(最好将两部分放在同一个盘符)。
点击下一步即可。
我这里安装在C盘目录下。
第二步,需要配置环境变量。
右击“我的电脑”,在弹出的窗口中选择属性,在左边高级系统设置点击环境变量按钮,点击右下角的新建按钮变量名:
JAVA_HOME,值C:
\jdk(你的jdk安装目录),点击确定输入。
以同样的方法新建变量名为;CLASSPATH,值为:
.;%JAVA_HOME%\lib。
注意,点号表示当前目录,不能省略。
如图2.2
图2.2环境变量配置
然后在系统变量中找到“path”,并点击修改,在其对应的最后面追加“%JAVA_HOME%\bin;”,一直点击确定按钮,直到所有的窗口关闭。
如图2.3。
这样Java的环境搭建完毕。
打开“运行”窗口,输入CMD命令,在提示符窗口中输入java-version,如果显示如图2.4的信息表明搭建成功。
图2.3环境变量配置
图2.4环境搭建成功显示信息
2.4.2安装Eclipse开发工具
Eclipse的安装比较简单,登录Eclipse官网,下载EclipseIDEforJavaDevelopers。
直接解压就可以了。
2.4.3下载安装SDK
首先,到SDK官方网站下载SDK包,然后解压。
双击SDKManager.exe显示如图2.5,下载所需要的组件
图2.5SDK下载组件界面
2.4.4安装ADT插件
在eclipse中安装插件,打开eclipse,点击help--->InstallnewSoftware进入后,点击add,命名及点击Archive选择你下载的ADT压缩包,点击OK,会解析出该插件的全部可用内容,全选(selectall),点击下一步...安装时需要一定时间,在安装的过程中会出现一些提示,点击允许即可,安装完ADT插件后,点击window-->preference,发现左侧列表上多了一项android,点击android会提示错误,是因为还没有把SDK关联到ADT插件上,添加SDK目标位置,如图2.6。
图2.6添加SDK目标文件夹
到这里,Android的开发环境就搭建完成了。
然后创建一个安卓模拟器就可以做安卓开发了如图2.7。
图2.7安卓模拟器界面
2.5AndroidFeatures特性
Android系统有如下的几大特性:
(1)应用程序框架支持组件的重用与替换。
(2)Dalvik虚拟机专门为移动设备做了优化。
(3)内部集成浏览器该浏览器基于开源的WebKit引擎。
(4)优化的图形库包括2D和3D图形库,3D图形库基于OpenGLES。
(5)SQLite用作结构化的数据存储。
(6)多媒体支持包括常见的音频、视频和静态印象文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)。
(7)GSM电话(依赖于硬件)。
(8)蓝牙Bluetooth,EDGE,3G,andWiFi(依赖于硬件)。
(9)照相机,GPS,指南针,和加速度计(依赖于硬件)。
(10)丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。
2.6数据存储方式
在播放器正常运行时,由于各界面存在相互跳转,为了避免数据在界面跳转的过程中丢失,我们需要将一些数据进行临时存储或者永久存储。
Android作为一种手机操作系统,提供了如下几种存取数据的方式:
Preferenc(配置)、File(文件)、SQLite数据和网络。
另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。
为了实现数据的共享,Android提供了ContentProvider组件来实现应用程序之间数据的共享。
2.6.1SharedPreferences
PreferencePreference提供了一种轻量级的数据存取方法,一般数据比较少,一些简单的配置信息。
它以“键-值”(是一个Map)对的方式,将数据保存在一个XML配置文件中使用到的接口(详细内容见文档)android.content.SharedPreferences提供了保存数据的方法,android.content.SharedPreferences.Editor提供了获得数据的方法。
2.6.2File存储方式
我们可以将一些数据直接以文件的形式保存在设备中。
例如,一些文本文件、PDF文件、音视频文件和图片等。
Android提供了文件读写的方法:
Context.openFileInput()获得标准Java文件输入流(FileInputStream),Context.openFileOutput()获得标准Java文件输出流(FileOutputStream),Resources.openRawResource(R.raw.myDataFile)方法返回InputStream。
2.6.3SQLiteDatabase数据库
SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎SQLite数据库不像其它的数据库(如:
Oracle),它没有服务器进程。
所有的内容包含在同一个单文件中。
该文件是跨平台的可以自由拷贝。
基于其自身的先天优势,SQLite在嵌入式领域得到了广泛应用。
(1)SQLiteDatabase类
SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些常用方法如表2.8。
表2.8操作数据库的常用方法
方法名称
方法描述
OpenonCreatDatabase(Stringpath,SQLiteDatabase.CusorFactoryfactory)
打开或者创建数据库
Insert(Stringtable,StringnullColumHack,ContentValuesvalues)
添加一条记录
Delete(Stringtable,StringwhereClause,String[]whereArgs)
删除一条记录
Query(Stringtable,String[]colums,Stringselection,String[]selectionArgs,StringgoupBy,Stringhaving,StringorderBy)
查询记录
Update(Stringtable,ContentValues,StingwhereClause,String[]whereArgs)
修改记录
exeSQL(Stringsql)
执行一条SQL语句
Close()
关闭数据库
(2)SQLiteOpenHelper类
SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新。
一般的用法是定义一个类继承之,并实现其两个抽象方法onCreate(SQLiteDatabasedb)和onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)两个抽象方法来创建和更新数据库,一些常用方法如表2.9。
表2.9更新数据库常用方法
方法名称
方法描述
SQLiteOpenHelper(Contextcontext,Stringname,SQLiteDatabase.CurorFactoryfactory,intversion)
构造方法,一般是传递一个要创建数据库称
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 平台 音乐 播放 设计 开发