Android音乐播放器毕业论文Word格式.docx
《Android音乐播放器毕业论文Word格式.docx》由会员分享,可在线阅读,更多相关《Android音乐播放器毕业论文Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
1播放器基本控制图
在播放器正在运行时,用户单击“播放"
按钮,播放器将播放选中的播放列表中的音乐,并同时显示当前进度;
当歌曲未暂停或停止时,用户单击“暂停”按钮,播放器将进入暂停状态;
播放器正在播放或暂停时,用户单击“停止”按钮,播放器将停止播放或暂停时,用户点击“上一首”或者“下一首”按钮,播放器将播放上一首或下一首歌曲。
2功能需求(时序图)分析
从时序图中可以看出播放器中信息发送和调用过程
图1。
2音乐播放器的时序图
2系统结构图和流程图
图1.3音乐播放器系统流程图
3系统界面需求
播放器界面要求布局合理,简约,颜色舒适,控制按钮友好,能让用户一眼就能看出各个按钮的作用及操作方法。
能实现要求的功能,但又不重复。
要考虑到不同手机屏幕大小可能不一样,应尽量兼容大多数手机屏幕尺寸,使之显示无障碍。
1.4系统性能需求
根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:
1、当要求歌曲播放时,程序响应时间最长不能超过5秒
2、当要求歌曲暂停时,程序响应时间最长不能超过5秒
3、当要求歌曲停止时,程序响应时间最长不能超过5秒
4、当要求歌曲上/下一首时,程序响应时间最长不能超过5秒
5、界面切换响应时间最长不能超过3秒
1.5运行环境需求
操作系统:
Windowsxp
支持环境:
Android2。
1版本
开发环境:
Eclipse3。
5ADT0。
95
2Android项目介绍
2。
1什么是Android
1.1Android的介绍
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(OpenHandsetAlliance)开发。
它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。
低层以Linux内核工作为基础,只提供基本功能;
其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。
另外,为了推广此技术,Google和其他几十个手机公司建立开发手机联盟。
Android在未公开之前常被传闻为Google电话或gPhone。
大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台.到了2010年1月,Google开始发表自家品牌手机电话的NexusOne。
2.1.2AndroidFeatures特性:
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,安定WIFI(依赖于硬件)
9.照相机,GPS,指南针,和加速度计(依赖于硬件)
10.丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件
3Android基本框架(AndroidArchitecture)
图2.1AndroidArchitecture(android软件结构图)
其软件层次结构自上而下分为以下几个层次
第一、应用程序(Application)
第二、应用程序框架(ApplicationFramework)
第三、各种库(Libraries)和Android运行环境(RunTime)
第四、操作系统层
(1)Application
ApplicationAndroid会同一核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是用JAVA编写的。
(2)ApplicationFrameWork
开发者完全可以访问核心应用程序所使用的API框架.该应用程序架构用来简化组件软件的重用;
任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过的遵循框架的安全性限制).该应用程序重用机制使得组件可以被用户替换。
所有的应用程序都由一系列的服务和系统组成,包括:
a.可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(Grids),文本框(Textboxes),按钮(button),甚至包括另一个可嵌入的web浏览器.
b.内容管理器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人的数据库),或者共享它们自己的数据。
c.资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和分层文件(LayoutFiles)。
d.通知管理器(NotificationManager)使得应用程序生可以在状态栏中显示客户通知信息。
e.活动类管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。
(3)Libraries库
Android包括一个被Android系统中各种不同组件所使用的C/C++库集。
该库通过Android应用程序框架为开发者提供服务。
(4)AndroidRuntime
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能.
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik是针对于同时高效地运行多个VMS来实现的。
Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。
该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。
(5)Linux内核
Android的核心系统服务依赖于Linux2。
6内核,如安全性,内存管理,进程管理,网络协议和驱动模型。
Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。
2Android应用软件开发的核心技术
2.1Android应用开发语言
JAVA是Android上的主流开发语言,各种支持也最完善。
Android发布的API和SDK也都主要是面向JAVA开发人员的。
我的播放器实例也是用JAVA开发的。
2Android应用程序组件
Android应用程序最大的一个特点就是每个应用都由若干组件构成。
而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。
例如假设我们需要编写一个内嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的ChromeLite浏览器组件.又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写该功能。
也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动.这就要依靠组件来实现。
Android应用程序的组件有以下四种:
1.Activity
一个Activity实际上表现出来的就是一个程序的界面。
这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等形式。
一个应用程序也可能有不止一个Activity。
比如一耳光短消息的程序,需要有列表显示所有消息的Activity,还至少需要一个编辑短信的Activity,还可能需要设置、菜单等界面。
每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其他窗口之上(如Android中的Toast信息)。
Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的Activity。
我们可以用Activity。
setContentView()方法来设置一个Activity中所要显示的view.
2.Service
Service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止.对于许多应用程序来说,service组件式至关重要的。
以下载管理器为例,用户肯定希望能够在切换到其他程序时仍然在后台继续下载,这就需要用到service完成下载工作。
而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过程,如停止、继续等,这就需要Activity与service之间进行通信。
Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service的行为。
3.Broadcastreceiver
Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载.
Broadcastreceiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其他组件去处理广播消息.它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知.NitificationManager的通知形式有许多种,不如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息.
4.Contentproviders
Contentprovider是一种为其它应用程序提供数据的组件。
这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其他任何有效的方式保存。
ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。
其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法.ContentResolver可以与任何contentprovider交互,获取其中的数据。
只需要某个组件,Android就会尽力保证它的可用;
如果该组件还没有启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。
3Android开发环境的搭配
任何事物要运行,都要有它的环境,Android也有它的环境才能够运行,下面介绍Android的开发环境配置.
搭建开发环境需要的软件:
操作系统:
WindowsXP或Linux
软件包:
AndroidSDK(SoftwareDevelopmentkitJavaDevelopmentkit)、ADT(AndroidDeveloopmentTool)
IDE环境:
EclipseIDE+ADTEclipse3.3以上
JDK:
JavaRuntimeEnvironment虚拟机、(JDK)JavaDevelopmentkit
安装步骤如下:
第一步:
安装Java虚拟机sun—java6—jdk版本
第二步:
安装Eclipse3.5工具官网http:
//www。
eclipse.org/downloads/
选择版本(图4。
2):
进行安装
图2.2
第三步:
安装AndroidSDK:
首先要下载SDK,可以在这个网址下载Http:
//developer。
android。
com/sdk,选择相应的系统进行安装
图2。
3
第四步:
安装AndroidADT插件
运行Eclipse,选择help->
installnewsoftware选择add,将会弹出一个框
图2.4
点击OK,选择要安装的软件,占next,然后选择接受协议,直到安装成功,重启Eclipse软件,设置AndroidSDKHome,Window—〉refrence
图2.5
在SDKlocation中输入SDKTools路径:
D:
\androidsoftware\android—sdk—windows点击OK
这样Android环境就已经搭建成功了。
4Android模拟器中sd卡的创建和文件的上传
在Android模拟器中,初始时没有sdcard的,为了存放音乐文件,需要自己创建sdcard,我们先来看看如何创建sdcard以及文件上传。
2.4.1SD卡的创建
通过Android的Tools来创建sd卡并导入进来
1.打开dos,windows+R键打开。
转换到你的sdk安装包的tools目录下,如我的目录如下:
E:
\android-sdk—windows\tools
2.创建sd卡。
在命令行中输入:
mksdcard1024ME:
\androidsdcard\sdcard.img
(这个1024M就是我们要创建的SD卡的大小,还是根据自己的需要来输入,最后面的那个E:
\androidsdcard\sdcard。
img就是所设置的SD存放路径,这里也可以根据我们自己的需要改变路径的,但要注意路径中不能有空格出现)
3.在Eclipse里面创建模拟器,并以该SD开来创建
4.创建完成之后,启动该模拟器。
可以在Android SDKandAVDManager里面指定模拟器并启动。
5.同样打开Eclipse的DDMS-→File-Explorer查看sd卡是否安装成功.
2.4。
2向sd卡里面上传文件及异常解决
右边两个小手机按钮就是传输文件的按钮了,用它来实现文件的传入和传出了,向左的表示把手机里的文件导出,向右的表示把文件导入到手机里面去.这里和容易出现异常。
异常如下:
异常一:
Failedtopushselection:
Invalidargument
出现此异常,多半是文件所在的目录里面有中文或者文件的名字是中文导致的。
建议修改一下试试.还有就是观察自己的操作权限是不是不够,如果是,d—rwxr-x那就是可以的.如果,sd卡是在eclipse里面系统自动创建的,试着重启一下IDE。
异常二:
Failedtopushtheitem(s)
出现这个异常是因为传输超时造成的。
可以修改。
打开windows—Preference—android-DDMS
把ADBconnectiontineout项的超时时间改大点。
3音乐播放器的详细设计
3.1播放器主界面的设计和说明
Android的每一个可视化界面,都有其唯一的布局配置文件,该文件里面有各种布局方式,各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对配置文件进行读取。
这样就可以形成不同的可视化界面和绚丽的效果。
主界面布局文件内容如下:
<
?
xmlversion="
1.0"
encoding=”utf—8"
>
〈AbsoluteLayoutxmlns:
android=”http:
//schemas。
android:
id=”@+id/AbsoluteLayout01"
layout_width=”wrap_content”
layout_height="
fill_parent"
background=”@drawable/backgrund"
sharedUserId=”com。
activitygrouptest"
>
此处的ListView作用为列出歌曲
〈ListView
id="
@id/android:
list"
android:
layout_width=”fill_parent"
layout_height=”fill_parent”
layout_weight="
1"
drawSelectorOnTop="
false"
/〉
〈LinearLayout
layout_width="
fill_parent”
layout_height=”wrap_content"
gravity=”center”
orientation=”horizontal"
此处的ImageButton用于第一曲
<
ImageButton
@+id/music_lasted”
wrap_content"
layout_marginRight=”5dp”
src=”@drawable/latest1"
/〉
此处的ImageButton用于上一曲
〈ImageButton
id=”@+id/music_rewind”
wrap_content”
layout_marginRight=”5dp"
src="
@drawable/rewind”/>
此处的ImageButton用于播放与暂停
id=”@+id/music_play”
layout_marginRight="
5dp"
src=”@drawable/play1”/〉
此处的ImageButton用于下一曲
id=”@+id/music_foward"
@drawable/foward”/>
此处的ImageButton用于最后一曲
id=”@+id/music_next"
@drawable/next1”/>
〈/LinearLayout>
主界面为:
3.2Android媒体播放原理
Android源程序已经为我们封装了一个接口类,叫MediaPlayer。
该接口在执行前需要一个数据源,通过如下四个步骤:
第一步:
MediaPlayer。
reset();
复位操作,为以后的媒体准备播放做准备。
第二步:
传入歌曲数据源,这里也是一个数据源:
MediaPlayer.setDataSource(Stringpath);
参数需要一个路径,该接口类在收到路径后将其转化为数据源。
第三步:
准备播放数据源,调用MediaPlayer。
prepare();
第四步:
start();
播放数据源,该数据源播放后,不再于程序有关,需要调用MediaPlayer。
stop()方法让其停止或MediaPlayer.start();
让其启动。
3.3播放功能实现细节
为了实现音乐播放器的基本功能:
音乐播放、暂停、停止、上一首、下一首。
这里我用事件监听,详细如下:
3。
3.1播放器播放、暂停、停止等功能
图3.3。
1
如图5.4所示:
各按钮水平放置,用的是布局中的线性布局LinearLayout,用方法setOrientation(horizontal);
将其设置为水平。
LinearLayout中依次放置第一曲、上一曲、播放与暂停、下一曲、最后一曲按钮属性。
配置文件代码结构如下:
〈LinearLayout>
〈ImageButton〉〈/ImageButton>
〈ImageButton>
〈/ImageButton>
<
ImageButton〉〈/ImageButton〉
ImageButton>
/ImageButton〉
/LinearLayout〉
android的媒体播放原理:
android源程序已经为我们封装好了一个接口类,叫MediaPlayer。
该接口在执行行需要一个数据源,通过如下四个步骤:
Media