安卓手机音乐播放器.doc_第1页
安卓手机音乐播放器.doc_第2页
安卓手机音乐播放器.doc_第3页
安卓手机音乐播放器.doc_第4页
安卓手机音乐播放器.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

兰州职业技术学院毕业论文课 题 Android手机平台音乐播 放器设计与实现 所属教学单位 信息科学系 专 业 计算机网络技术 年 级 2010级 学 号 姓 名 指导教师 2013年 6月1日摘 要 本文主要是在Android系统上对音乐播放器应用程序的设计与实现进行讨论,通过这一过程来进一步学习Android平台,这样对个人未来发展有很大的意义。 本文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse开发工具对播放器代码进行编写。同时给出了详细的系统设计过程、部分界面截图及主要的功能流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首等功能于一体,性能良好,在Android系统中能独立运行。对于播放歌曲的文件,本播放器只限于应用层程序的探讨,所以对具体的文件不做深入研究。 实验证明,基于android平台的软件开发简单,使用方便简洁,必将成为未来的发展方向,具有普遍意义。关键词: Android,Java,Eclipse,音乐播放器 目 录摘 要I1. 前言11.1 项目背景11.2 编写目的12. Android项目介绍22.1什么是Android22.2 Android应用软件开发的核心技术52.3 Android开发环境的搭配63.4 Android模拟器中sd卡的创建和文件的上传83.系统需求分析113.1功能需求113.2 系统结构图和流程图123.3系统界面需求133.4系统性能需求133.5运行环境需求144.音乐播放器的详细设计154.1 播放器的欢迎界面和主界面的设计和说明154.2 Android媒体播放原理184.3 播放功能实现细节185.软件测试195.1 软件的测试19结 论21参考文献22致 谢23Android手机平台音乐播放器的设计与实现 0 1. 前言1.1 项目背景当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,是的手机操作系统也出现了不同各类,现在的市场主要有三个手机操作系统,Windows mobile,iPhone OS,以及谷歌的Android操作系统,其中占有开发源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。Android:是谷歌于2007年公布的开放式源代码手机系统,一直受到人们的热捧。Android是基于Linux内核的软件平台和操作系统,它开放性就优于其他封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。随着计算机的广泛运用,手机市场的迅速发展,各种音频资源也在网上广为流传,这些资源卡是平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味最求外观花俏,功能庞大,对用户的手机造成很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户听歌的需求。 1.2 编写目的现今社会生活紧张,而欣赏音乐史其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放MP3等音乐文件,并且能够控制播放器播放,暂停,停止,上一曲,下一曲。界面简单,操作简单。 本项目是一款基于Android手机 平台的音乐播放器,使Android手机拥有个性的播放器,让手机主人随时随地处于音乐的旋律中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。Android手机平台音乐播放器的设计与实现 13 2. Android项目介绍2.1什么是Android Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。2.1.1Android系统的介绍 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。 Android一词最早出现于法国作家利尔亚当(Auguste Villiers de lIsle-Adam)在1886年发表的科幻小说未来夏娃(Lve future)中。他将外表像人的机器起名为Android。 Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其他几十个手机公司建立开发手机联盟。Android在未公开之前常被传闻为Google电话或iPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机电话的Nexus One。2012年7月美国科技博客网站BusinessInsider评选出二十一世纪十款最重要电子产品,Android操作系统和iPhone等榜上有名。Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将Android 各代版本 Logo Android 各代版本 Logo其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),果冻豆(Jelly Bean,Android4.1和Android 4.2)。图2.1Android 各代版本 LogoAndroid 1.1:2008年9月发布的Android第一版。Android 1.5Cupcake(纸杯蛋糕):2009年4月30日发布。Android 1.6Donut(甜甜圈):2009年9月15日发布。Android 2.0/2.0.1/2.1 Eclair(松饼):2009年10月26日发布。Android 2.2/2.2.1 Froyo(冻酸奶) :2010年5月20日发布。 Android 2.3.xGingerbread(姜饼) :2010年12月7日发布。Android 3.0Honeycomb(蜂巢):2011年2月2日发布。Android 3.1Honeycomb(蜂巢) :2011年5月11日布发布Android 3.2Honeycomb(蜂巢):2011年7月13日发布。Android 4.0Ice Cream Sandwich(冰激凌三明治):2011年10月19日在香港发布。Android 4.1Jelly Bean(果冻豆):2012年6月28日Android 4.2Jelly Bean(果冻豆):2012年10月30日Android 4.2 Jelly Bean 原生系统用户界面 Android 4.2 Jelly Bean 原生系统用户界面Android 5.0Key Lime Pie(青柠派): 待定2.1.2 Android Features 特性Android 系统有如下的几大特性1.应用程序框架 支持组建的重用与替换2.Dalvik 虚拟机 专门为移动设备做了优化3.内部集成浏览器 该浏览器基于开源的WebKit引擎4.优化的图形库 包括2D和3D图形库,3D图形库基于OpenGl ES5.SQLite 用作结构化的数据存储6.多媒体支持 包括常见的音频、视频和静态印象文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)7.GSM电话 (依赖于硬件)8.蓝牙Bluetooth,EDGE,3G,安定WIFI(依赖于硬件)9.照相机,GPS,指南针,和加速度计(依赖于硬件)10.丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件2.1.3 Android 基本框架(Android Architecture)图2.2 Android Architecture(Android 软件结构图) 其软件层次结构自上而下分为以下几个层次第一、应用程序(Application)第二、应用程序框架(Application Framework)第三、各种库(Libraries)和Android运行环境(RunTime)第四、操作系统层(1)ApplicationApplication Android 会同一核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的。(2)Application FrameWork开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过的遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。所有的应用程序都由一系列的服务和系统组成,包括:a可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(Grids),文本框(Text boxes),按钮(button),甚至包括另一个可嵌入的web浏览器。b内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人的数据库),或者共享它们自己的数据。c资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件(Layout Files)。d通知管理器(Notification Manager)使得应用程序生可以在状态栏中显示客户通知信息。e活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。(3)Libraries库Android包括一个被Android系统中各种不同组件所使用的C/C+库集。该库通过Android应用程序框架为开发者提供服务。(4)Android RuntimeAndroid包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对于同时高效地运行多个VMS来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。 Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。(5)Linux内核Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议和驱动模型。Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。2.2 Android应用软件开发的核心技术2.2.1 Android 应用开发语言JAVA是Android上的主流开发语言,各种支持也最完善。Android发布的API和SDK也都主要是面向JAVA开发人员的。我的播放器实例也是用JAVA开发的。2.2.2 Android 应用程序组件Android 应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。例如假设我们需要编写一个内嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的Chrome Lite浏览器组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写该功能。也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。Android应用程序的组件有以下四种:1.Activitie一个Activity实际上表现出来的就是一个程序的界面。这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等形式。一个应用程序也可能有不止一个Activity。比如一耳光短消息的程序,需要有列表显示所有消息的Activity,还至少需要一个编辑短信的Activity,还可能需要设置、菜单等界面。每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其他窗口之上(如Android中的Toast信息)。Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的Activity。我们可以用Activity.setContentView()方法来设置一个Activity中所要显示的view。2.ServicesService是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件式至关重要的。以下载管理器为例,用户肯定希望能够在切换到其他程序时仍然在后台继续下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过程,如停止、继续等,这就需要Activity与service之间进行通信。Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service的行为。3.Broadcast receiversBroadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载。Broadcast receiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其他组件去处理广播消息。它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知。NitificationManager的 通知形式有许多种,不如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。4.Content providersContent provider是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其他任何有效的方式保存。ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法。 ContentResolver可以与任何contentprovider交互,获取其中的数据。只需要某个组件,Android就会尽力保证它的可用;如果该组件还没有启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。2.3 Android开发环境的搭配任何事物要运行,都要有它的环境,Android也有它的环境才能够运行,下面介绍Android的开发环境配置.搭建开发环境需要的软件:操作系统:Windows 7或Linux软件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Develoopment Tool)IDE环境:Eclipse IDE+ADT Eclipse3.3以上JDK:Java Runtime Environment虚拟机 、(JDK)Java Development kit安装步骤如下:第一步:安装Java虚拟机sun-java6-jdk版本第二步:安装Eclipse3.5工具 官网/downloads/选择版本(图3.4):进行安装第二步:安装Eclipse3.5工具 官网/downloads/选择版本(图3.4):进行安装图2.3第三步:安装Android SDK:首先要下载SDK,可以在这个网址下载Http://sdk ,选择相应的系统进行安装 图 2.4第四步:安装Android ADT插件运行Eclipse,选择help-install new software 选择add,将会弹出一个框图 2.5点击OK,选择要安装的软件,占next,然后选择接受协议,直到安装成功,重启Eclipse软件,设置Android SDK Home,Window-refrence图 2.6在SDK location中输入SDK Tools路径:D:android softwareandroid-sdk-windows 点击OK这样Android环境就已经搭建成功了。3.4 Android模拟器中sd卡的创建和文件的上传在Android模拟器中,初始时没有sdcard的,为了存放音乐文件,需要自己创建sdcard,我们先来看看如何创建sdcard以及文件上传。3.4.1 SD卡的创建通过Android的Tools来创建sd卡并导入进来1.打开dos,windows+R键打开。转换到你的sdk安装包的tools目录下,如我的目录如下:E:android-sdk-windowstools 2.创建sd卡。在命令行中输入:mksdcard 1024M E:androidsdcardsdcard.img(这个1024M就是我们要创建的SD卡的大小,还是根据自己的需要来输入,最后面的那个E:androidsdcardsdcard.img就是所设置的SD存放路径,这里也可以根据我们自己的需要改变路径的,但要注意路径中不能有空格出现)3.在Eclipse里面创建模拟器,并以该SD开来创建4.创建完成之后,启动该模拟器。可以在AndroidSDK and AVD Manager 里面指定模拟器并启动。5.同样打开Eclipse的DDMS-FileExplorer 查看sd卡是否安装成功。3.4.2向sd卡里面上传文件及异常解决Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。下面我们重点介绍查询SD卡上的音乐文件信息。先来了解一下ContentResolver的查询接口:1.Cursor query(Uri uri, String projection, String selection, String selectionArgs, String sortOrder); 复制代码Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。 Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。 selection: 指定查询条件 selectionArgs:参数selection里有?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。SortOrder:指定查询结果的排列顺序下面的命令将返回所有在外部存储卡上的音乐文件的信息:1.Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, 2. null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); 复制代码得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:1.歌曲ID:MediaStore.Audio.Media._ID2.Int id=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID); 3.歌曲的名称 :MediaStore.Audio.Media.TITLE4.Stringtilte=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); Android手机平台音乐播放器的设计与实现 15 5.歌曲的专辑名:MediaStore.Audio.Media.ALBUM6.Stringalbum=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM); 7.歌曲的歌手名: MediaStore.Audio.Media.ARTIST8.Stringartist=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); 9.歌曲文件的路径 :MediaStore.Audio.Media.DATA10.Stringurl=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 11.歌曲的总播放时长 :MediaStore.Audio.Media.DURATION12.Intduration=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION); 13.歌曲文件的大小 :MediaStore.Audio.Media.SIZE14.Intsize=cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE); 如果你是用的Eclipse,关于在sdcard中创建文件夹,上传文件有个更方便的方法,就是在Eclipse中的DDMS中,打开File Explorer,在sdcard在mnt目录下,右上角有上传和下载文件的按钮,也有删除文件和创建文件夹的按钮,不过不能删除文件夹,这里上传文件只能上传英文的,并且不能有空格,比较郁闷。此时文件已经添加过来了,我们还要在模拟器上操作一下才能播放。启动模拟器上的 Dev Tools,运行 Media Scanner,显示 “finished”就可以退出了。启动 Music程序,点击Songs 就可以播放了。右边两个小手机按钮就是传输文件的按钮了,用它来实现文件的传入和传出了,向左的表示把手机里的文件导出,向右的表示把文件导入到手机里面去。这里和容易出现异常。异常如下:异常一:Failed to push selection:Invalid argument出现此异常,多半是文件所在的目录里面有中文或者文件的名字是中文导致的。建议修改一下试试。还有就是观察自己的操作权限是不是不够,如果是,drwxrx 那就是可以的。如果,sd卡是在eclipse里面系统自动创建的,试着重启一下IDE。异常二:Failed to push the item(s)出现这个异常是因为传输超时造成的。可以修改。 打开windowsPreferenceandroidDDMS 把ADB connection tine out 项的超时时间改大点。Android手机平台音乐播放器的设计与实现 27 3.系统需求分析3.1功能需求3.1.1播放器的基本控制需求根据项目的目标,我们可获得项目系统的基本需求,一下从不同的角度来描述系统的需求,并且使用图例来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。播放暂停停止上一曲下一曲图3.1 播放器基本控制图 在播放器正在运行时,用户单击“播放”按钮,播放器将播放选中的播放列表中的音乐,并同时显示当前进度;当歌曲未暂停或停止时,用户单击“暂停”按钮,播放器将进入暂停状态;播放器正在播放或暂停时,用户单击“停止”按钮,播放器将停止播放或暂停时,用户点击“上一首”或者“下一首”按钮,播放器将播放上一首或下一首歌曲。3.1.2功能需求(时序图)分析从时序图中可以看出播放器中信息发送和调用过程主界面播放列表播放界面点击进入按钮选择歌曲播放进入播放列表播放后台serviceServic播放页面发送参数,调用后台service播放,返回播放界面图3.2 音乐播放器的时序图 当用户点击主界面按钮时,播放器会启动,此时播放器会自动搜索本机的有关mp3格式的音乐,必会在播放列表中罗列出来,用户点击播放列表中所选中的歌曲时,会进入歌曲播放界面。用户单击“播放”按钮,播放器将播放选中的播放列表中的音乐,并同时显示当前进度;当歌曲未暂停或停止时,用户单击“暂停”按钮,播放器将进入暂停状态;同时在界面上可以控制当前播放歌曲的音量的大小;播放器正在播放或暂停时,用户单击“停止”按钮,播放器将停止播放或暂停时,用户点击“上一首”或者“下一首”按钮,播放器将播放上一首或下一首歌曲。3.2 系统结构图和流程图主界面是否显示全部音乐播放列表是否点击要播放的歌曲音乐播放程结束图3.3 音乐播放器系统流程图3.3系统界面需求播放器界面要求布局合理,简约,颜色舒适,控制按钮友好,能让用户一眼就能看出各个按钮的作用及操作方法。能实现要求的功能,但又不重复。要考虑到不同手机屏幕大小可能不一样,应尽量兼容大多数手机屏幕尺寸,使之显示无障碍。3.4系统性能需求根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:1、当要求歌曲播放时,程序响应时间最长不能超过5秒2、当要求歌曲暂停时,程序响应时间最长不能超过5秒3、当要求歌曲停止时,程序响应时间最长不能超过5秒4、当要求歌曲上/下一首时,程序响应时间最长不能超过5秒5、界面切换响应时间最长不能超过3秒3.5运行环境需求操作系统:Windows 7支持环境:Android 2.3版本开发环境:Eclipse 3.5 ADT 0.954.音乐播放器的详细设计4.1 播放器的欢迎界面和主界面的设计和说明Android的每一个可视化界面,都有其唯一的布局配置文件,该文件里面有各种布局方式,各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对配置文件进行读取。这样就可以形成不同的可视化界面和绚丽的效果。欢迎界面布局文件内容如下: 此处的按钮用于进入播放器的主界面 此处的按钮用于退出程序 此处的TextView用于显示“我的播放器” 欢迎界面为: 图4.1 音乐播放器欢迎界面主界面布局文件内容如下: 此处的ListView作用为列出歌曲此处的Button用于上一曲此处的Button用于停止此处的Button用于播放此处Button用于暂停此处的Button用于下一曲主界面为:图4.2 音乐播放器主界面4.2 Android媒体播放原理Android源程序已经为我们封装了一个接口类,叫MediaPlayer。该接口在执行前需要一个数据源,通过如下四个步骤: 第一步:MediaPlayer.reset(); 复位操作,为以后的媒体准备播放做准备。 第二步:传入歌曲数据源,这里也是一个数据源:MediaPlayer.setDataSource(String path);参数需要一个路径,该接口类在收到路径后将其转化为数据源。 第三步:准备播放数据源,调用MediaPlayer.prepare(); 第四步:MediaPlayer.start();播放数据源,该数据源播放后,不再于程序有关,需要调用MediaPlayer.stop()方法让其停止或MediaPlayer.start();让其启动。4.3 播放功能实现细节为了实现音乐播放器的基本功能:音乐播放、暂停、停止、上一首、下一首。这里我用事件监听,详细请见附录。5.软件测试5.1 软件的测试 一个程序并不可能达到十分完美,难免存在一些错误。如果不能及时将其找出并修改,会造成系统崩溃并造成不必要的损失。通过软件测试,尽可能多的找出系统中的错误,以便于及时修改。5.1.1 软件测试的环境 (1)软件测试的性能要求软硬件要求:系统环境 windows 7;硬件系统环境 CORE i5 2.4G、4096MB内存、750G硬盘。系统运行时对数据的保密性要求不高对一般的数据不要求进行加密。此外,对其他软件几乎没有依赖性,程序健壮性较好。 (2)测试建立一张模拟的SD卡,上传歌曲文件;分别测试其的播放、暂停、停止、上/下一首的功能是否有用。 (3)软件测试的评价软件功能评价:此软件各模块都能实现各自的功能,基本符合播放音乐的要求。 结论:此软件是可行的。5.1.2 测试阶段软件测试是一项复杂的系统工程,从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。按照软件测试的策略和过程分类,软件测试可分为单元测试、集成测试、确认测试、系统测试和验收测试。它们被依次顺序地执行,如图5.1所示:图 5.1 软件测试分级模型(1)单元测试单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。因为单元测试需要知道内部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。因此应用系统有一个设计很好的体系结构就显得尤为重要。 一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。(2)集成测试 集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。在此采用自顶向下策略,从网站主页开始进入,测试每个模块之间的联系是否合理,如前台展示与后台管理的接口等。(3)确认测试 确认测试又称有效性测试。它的任务是验证软件的有效性,即验证软件的功能和性能及其它特性是否与用户的要求一致。在软件需求规格说明书中描述了全部用户可见的软件属性,其中有一节叫做有效性准则,它包含的信息就是软件确认测试的基础。(4)系统测

温馨提示

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

评论

0/150

提交评论