Android-音乐播放器-毕业论文

上传人:ya****h 文档编号:114618559 上传时间:2022-06-29 格式:DOCX 页数:34 大小:398.17KB
收藏 版权申诉 举报 下载
Android-音乐播放器-毕业论文_第1页
第1页 / 共34页
Android-音乐播放器-毕业论文_第2页
第2页 / 共34页
Android-音乐播放器-毕业论文_第3页
第3页 / 共34页
资源描述:

《Android-音乐播放器-毕业论文》由会员分享,可在线阅读,更多相关《Android-音乐播放器-毕业论文(34页珍藏版)》请在装配图网上搜索。

1、ZHUZHOUPROFESSIONALTECHNOLOGYCOLLEGE毕业设计(论文)标题:基于Android的音乐播放器学生:唐虹霞系部:电子信息系专业:软件技术班级:软件1101班指导教师:湛桂枝汽车工程职业学院教务处制页脚目录摘要当今社会的生活节奏越来越快+Android系统上一的款音乐播放器应用程序的设计与实现进行讨论Android是一个开源的系统,它底层是基于Linux的操作系统,本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对高度过程中遇到的问题和解

2、决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、歌词显示等功能于一体,性能良好,在Android系统中能独立运行。该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式、以及歌词开闭状态的友好设置MP3的全名是MPEGAudioLayer-3,是一种声音文件的压缩格式,由于本播放器只限于应用层程序的探讨,所以对具体的压缩算法不作深究。关键词:Android;开源系统;Eclipse;音乐播放器1系统需求分析1.1 功能需求1.1.1 播放器的基本控制需求根据项目的目标,我们可获得项目系统的基本需求,一下从不同的角度来描述系统的需求,并且使用用例图来描述,系统的

3、功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。上一曲下一曲暂停停止播放图1.1播放器基本控制图在播放器正在运行时,用户单击“播放”按钮,播放器将播放选中的播放列表中的音乐,并同时显示当前进度;当歌曲未暂停或停止时,用户单击“暂停”按钮,播放器将进入暂停状态;播放器正在播放或暂停时,用户单击“停止”按钮,播放器将停止播放或暂停时,用户点击“上一首”或者“下一首”按钮,播放器将播放上一首或下一首歌曲。1.1.2 功能需求(时序图)分析从时序图中可以看出播放器息发送和调用过程图1.2音乐播放器的时序图1.2 系统结构图和流程图主界面播放

4、列表音乐播放程序结束图1.3音乐播放器系统流程图1.3 系统界面需求播放器界面要求布局合理,简约,颜色舒适,控制按钮友好,能让用户一眼就能看出各个按钮的作用及操作方法。能实现要求的功能,但又不重复。要考虑到不同手机屏幕大小可能不一样,应尽量兼容大多数手机屏幕尺寸,使之显示无障碍。1.4系统性能需求根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:1、当要求歌曲播放时,程序响应时间最长不能超过5秒2、当要求歌曲暂停时,程序响应时间最长不能超过5秒3、当要求歌曲停止时,程序响应时间最长不能超过5秒4、当要求歌曲上/下一首时,程序响应时间最长不能超过5秒5、界面切换响应时间最长不

5、能超过3秒1.5运行环境需求操作系统:Windowsxp支持环境:Android2.1版本开发环境:Eclipse3.5ADT0.952Android项目介绍2.1 什么是Android2.1.1Android的介绍Android一词的本义指“机器人,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件Android是基于Linux核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”,后由开放手机联盟(OpenHandsetAllian

6、ce)开发。它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。低层以Linux核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其他几十个手机公司建立开发手机联盟。Android在未公开之前常被传闻为Google或gPhone。大多传闻认为Google开发的是自己的手机产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机的NexusOne。2.1.2AndroidFeatures特性:Android系统有如下的几大特性1. 应用程序框架支持组建的重用与

7、替换2. Dalvik虚拟机专门为移动设备做了优化3. 部集成浏览器该浏览器基于开源的WebKit引擎4. 优化的图形库包括2D和3D图形库,3D图形库基于OpenGlES5. 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 And

8、roid基本框架(AndroidArchitecture)图2.lAndroidArchitecture(android软件结构图)其软件层次结构自上而下分为以下几个层次第一、应用程序(Application)第二、应用程序框架(ApplicationFramework)第三、各种库(Libraries)和Android运行环境(RunTime)第四、操作系统层(1) ApplicationApplicationAndroid会同一核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的。(2) App

9、licationFrameWork开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过的遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。所有的应用程序都由一系列的服务和系统组成,包括:a. 可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(Grids),文本框(Textboxes),按钮(button),甚至包括另一个可嵌入的web浏览器。b. 容管理器(ContentProviders)使得应用程序可以访问另一个应用程序的数

10、据(如联系人的数据库),或者共享它们自己的数据。c. 资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和分层文件(LayoutFiles)。d. 通知管理器(NotificationManager)使得应用程序生可以在状态栏中显示客户通知信息。e. 活动类管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。(3) Libraries库Android包括一个被Android系统中各种不同组件所使用的C/C+库集。该库通过Android应用程序框架为开发者提供服务。4)AndroidRuntimeAndroid包括了一个核

11、心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对于同时高效地运行多个VMS来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由java汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层存管理机制。(5)Linux核Android的核心系统服务依赖于Linux2.6核,如安全性,存管理,进程管理,网络协议和驱动模

12、型。Linux核也同时作为硬件和软件堆栈之间的硬件抽象层。2.2 Android应用软件开发的核心技术2.2.1 Android应用开发语言JAVA是Android上的主流开发语言,各种支持也最完善。Android发布的API和SDK也都主要是面向JAVA开发人员的。我的播放器实例也是用JAVA开发的。2.2.2 Android应用程序组件Android应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。例如假设我们需要编写一个嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的ChromeLite浏览器组件。

13、又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写该功能。也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。Android应用程序的组件有以下四种:1. Activity一个Activity实际上表现出来的就是一个程序的界面。这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等形式。一个应用程序也可能有不止一个Activity。比如一耳光短消息的程序,需要有列表显示所有消息的Activity,还至少需要一个编辑短信的Activ

14、ity,还可能需要设置、菜单等界面。每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其他窗口之上(如Android中的Toast信息)。Activity中显示出来的容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的Activity。我们可以用Activity.setContentView()方法来设置一个Activity中所要显示的view。2. ServiceService是一种没有

15、界面的组件,同我们平常在Windows或Linux系统中所理解的“服务一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件式至关重要的。以下载管理器为例,用户肯定希望能够在切换到其他程序时仍然在后台继续下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过程,如停止、继续等,这就需要Activity与service之间进行通信oAndroid允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service

16、的行为。3. BroadcastreceiverBroadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载。Broadcastreceiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其他组件去处理广播消息。它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知。NitificationManager的通知形式有许多种,不如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示

17、信息。4. ContentprovidersContentprovider是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其他任何有效的方式保存。ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法。ContentResolver可以与任何contentprovider交互,获取其中的数据。只需要某个组件,Android就会尽力保证它的可用;如果该组件还没有启动,就启动它,如果该组件所属的应用程序还没拥有

18、一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。2.3 Android开发环境的搭配任何事物要运行,都要有它的环境,Android也有它的环境才能够运行,下面介绍Android的开发环境配置.搭建开发环境需要的软件:操作系统:WindowsXP或Linux软件包:AndroidSDK(SoftwareDevelopmentkitJavaDevelopmentkit)、ADT(AndroidDeveloopmentTool)IDE环境:EclipseIDE+ADTEclipse3.3以上JDK:JavaRuntimeEnvironment

19、虚拟机、(JDK)JavaDevelopmentkit安装步骤如下:第一步:安装Java虚拟机sun-java6-jdk版本第二步:安装Eclipse3.5工具官网www.eclipse.org/downloads/选择版本(图4.2):进行安装V/iidc-wsMacCarton32lwtFdacCocca32bit6+biELinuxiitJt碍MEclipseforRCPTIug-inDevelopers083MB|AcompletesetoftoolstordelDDersAvowanttocreateEdipseflug-insorRichClientAppliGations.Iti

20、n-3ludD=acomplete3DKdseopertoolsardsourcezode,plusMjlyn,anKMLeditorandtheEclipseCcmrnunica:ionFYamework.Hore.D-ownJofl-dsr29.250图2.2第三步:安装AndroidSDK:首先要下载SDK,可以在这个网址下载选择相应的系统进行安装Http:/developer.android./sdkd?veloper5Nsrl-kp-lr:WMprns*-aikwjstWed叫ikrt-rpnrinrUtw-todIblJIIF4DownloadthsiAndrcMlSDKilk|=

21、CbCdNliLi-wir-id?”Pl-im*-7Mr:iaI:Piri:im1Fliltiml:.r=Lattor-s卜Ariti!;LLK,hjiihjairdi*jv.ihItwi,-dQIJKbk-i-:ijuiIn:mc-derddiimre-f+曰yjy:iiiiia=冑iftrhaAmn-SDKpt!i1itACUMhflaghAn-PfaiivA、社rfhewrln=iflJI白-d弱=nnr-rtmf.D.LdUU创3MCCIiwlLuhWndwiL;il-ILI-5,二L1Lir.iLL-2337TiB:Z-J7Wd5.HTW丽也1:1241糾h“OnlAll初-|1:|

22、-曲1:二亦”7Fl1Hfi.M:ll1-flR-fcli/41-Wfcr;fclllflfi=ffi!H-iar.lrf#Ininr;.1R勺Ari卜1一wl/ypV划PFHh士r图2.3第四步:安装AndroidADT插件运行Eclipse,选择help-installnewsoftware选择add,将会弹出一个图2.4点击OK,选择要安装的软件,占next,然后选择接受协议,直到安装成功,重启Eclipse软件,设置AndroidSDKHome,Window-refrence3nird.耳L-BqiId-DUSLnnri5如:UEtjti:SLlLEHint13吗甲Inst-Jl/I.

23、ljdii:*団由1UTi/De1iU3-T-iJn印Tsapt14tlCll比hFFiLidH;ig由XULiVfdiddTrsftrSCCUcbUe-x-P:*udraa1ic-Eivuvrlrtid-idk-rLodMiIf轉iSE.HoltThe11st:SDKIdfttsbdWisorilprd帖dedcci:eyc-ihitApjl/wOK|1n.ArrirEiiJ,11lxidr-33iOpiriFrajKt1.LEAndr&iJL.SAodrasi.OpinScoK-rPraj!153Airdrc-i-l1.Jhidr-aaiQj-uSwsfx-aj1ArrdrtilE.Olx

24、idr-33iQpuSwci.fr-aji-:tZ.QEAxrlFDid.E.O.Jlxidr-331Oj-uSPx-aj.-=!E.Q.E-Gxsl.JfliJ.5GxcL.JfliG3C-e1iIae.EI加4JflxGc-clq.Xxic.Z.QE-JTIs.伽IhtZ.Q.】e-AndinuHBtiElWTsIjrfixlts图2.5在SDKlocation中输入SDKTools路径:D:androidsoftwareandroid-sdk-windows点击OK这样Android环境就已经搭建成功了。2.4 Android模拟器中sd卡的创建和文件的上传在Android模拟器中,初始

25、时没有sdcard的,为了存放音乐文件,需要自己创建sdcard,我们先来看看如何创建sdcard以及文件上传。2.4.1 SD卡的创建通过Android的Tools来创建sd卡并导入进来1. 打开dos,windows+R键打开。转换到你的sdk安装包的tools目录下,如我的目录如下:E:android-sdk-windowstools2. 创建sd卡。在命令行中输入:mksdcard1024ME:androidsdcardsdcard.img(这个1024M就是我们要创建的SD卡的大小,还是根据自己的需要来输入,最后面的那个E:androidsdcardsdcard.img就是所设置的S

26、D存放路径,这里也可以根据我们自己的需要改变路径的,但要注意路径中不能有空格出现)3. 在Eclipse里面创建模拟器,并以该SD开来创建4. 创建完成之后,启动该模拟器。可以在AndroidSDKandAVDManager里面指定模拟器并启动。5. 同样打开Eclipse的DDMS-FileExplorer查看sd卡是否安装成功。2.4.2向sd卡里面上传文件及异常解决右边两个小手机按钮就是传输文件的按钮了,用它来实现文件的传入和传出了,向左的表示把手机里的文件导出,向右的表示把文件导入到手机里面去。这里和容易出现异常。异常如下:异常一:Failedtopushselection:Inval

27、idargument出现此异常,多半是文件所在的目录里面有中文或者文件的名字是中文导致的。建议修改一下试试。还有就是观察自己的操作权限是不是不够,如果是,d一rwxr一x那就是可以的。如果,sd卡是在eclipse里面系统自动创建的,试着重启一下IDE。异常二:Failedtopushtheitem(s)出现这个异常是因为传输超时造成的。可以修改。打开windows一Preference一android一DDMS把ADBconnectiontineout项的超时时间改大点。3音乐播放器的详细设计3.1 播放器主界面的设计和说明Android的每一个可视化界面,都有其唯一的布局配置文件,该文件里

28、面有各种布局方式,各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对配置文件进行读取。这样就可以形成不同的可视化界面和绚丽的效果。主界面布局文件容如下:AbsoluteLayoutxmlns:android=schemas.android./apk/res/androidandroid:id=+id/AbsoluteLayout01android:layout_width=wrap_contentandroid:layout_height=fill_parentandroid:background=drawable/backgrundandroid:sharedUserId=.

29、android.activitygrouptest此处的ListView作用为列出歌曲ListViewandroid:id=id/android:listandroid:layout_width=fillparentandroid:layout_height=fillparentandroid:layout_weight=1android:drawSelectorOnTop=false/LinearLayoutandroid:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:gravity=centerandro

30、id:orientation=horizontal此处的ImageButton用于第一曲此处的ImageButton用于上一曲ImageButtonandroid:id=+id/music_rewindandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_marginRight=5dpandroid:src=drawable/rewind/此处的ImageButton用于播放与暂停ImageButtonandroid:id=+id/music_playandroid:layout_wi

31、dth=wrap_contentandroid:layout_height=wrap_contentandroid:layout_marginRight=5dpandroid:src=drawable/play1/此处的ImageButton用于下一曲ImageButtonandroid:id=+id/music_fowardandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_marginRight=5dpandroid:src=drawable/foward/此处的ImageBut

32、ton用于最后一曲ImageButtonandroid:id=+id/music_nextandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:src=drawable/next1/LinearLayout主界面为:02想你旳丧关詰00:09io04:26你瞳吗没育你的珂有多想你我看着你走远所有頑诺化成了旬点他自寺在空霧的房3.2 Android媒体播放原理Android源程序已经为我们封装了一个接口类,叫MediaPlayer。该接口在执行前需要一个数据源,通过如下四个步骤:第一步:MediaPl

33、ayer.reset();复位操作,为以后的媒体准备播放做准备。第二步:传入歌曲数据源,这里也是一个数据源:MediaPlayer.setDataSource(Stringpath);参数需要一个路径,该接口类在收到路径后将其转化为数据源。第三步:准备播放数据源,调用MediaPlayer.prepare();第四步:MediaPlayer.start();播放数据源,该数据源播放后,不再于程序有关,需要调用MediaPlayer.stop()方法让其停止或MediaPlayer.start();让其启动。3.3播放功能实现细节为了实现音乐播放器的基本功能:音乐播放、暂停、停止、上一首、下一首

34、。这里我用事件监听,详细如下:3.3.1播放器播放、暂停、停止等功能图3.3.1如图5.4所示:各按钮水平放置,用的是布局中的线性布局LinearLayout,用方法setOrientation(horizontal);将其设置为水平。LinearLayout中依次放置第一曲、上一曲、播放与暂停、下一曲、最后一曲按钮属性。配置文件代码结构如下:android的媒体播放原理:android源程序已经为我们封装好了一个接口类,叫MediaPlayer。该接口在执行行需要一个数据源,通过如下四个步骤:第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。第二步:传入歌

35、曲数据源,这里也是一个数据流MediaPlayer.setDataSource(Stringpath);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。第三步:准备播放数据源,调用方法MediaPlayer.Prepare();第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序有关,需要用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start();让其启动;歌曲数据源的获得:要获得数据源,需要我们提供给接口类一个歌曲存放路径,而这个路径已经被事先放到数据库里了,我们只需要进行数据库进行操作。将里面的路径取出。这里将调用

36、PlayRackActivity的一个方法query();代码算法如下:publicStringquery()ContentResolvercr=getContentResolver();Uriuri=DBProvider.CONTENT_URI;Stringprojection=path;Stringselection=fileName=?;StringselectionArgs=selectName;Cursorc=cr.query(uri,projection,selection,selectionArgs,null);if(c.moveToFirst()Stringpath=c.get

37、String(0);returnpath;returnnull;方法getContentResolver是包android.content.ContextWrapper里面的方法,它会自动的调用ContentProvider中的关联数据库,我们需用这个方法就可以操作数据库。数据库操作需要一个Uri。Uri类似一个网络连接的Url。Uri是数据库唯一的标识,不同的Uri可以操作不同的数据库表。在查询数据库时需要传入一个当前播放的歌曲名字,通过歌曲名字来查询歌曲的路径。4Android数据库设计数据结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据的整体组织形式等一系列问题。数据库,顾

38、名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上而且数据是按一定的格式存放的。数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性,并且可以被在一定围的各种用户共享。在涉及数据库的软件开发中,需要根据有待解决的问题性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择4.1数据库及字段属性设计4.1.1字段设计(表、图)file_table主要是保存歌曲名字、类型、路径字段说明:Id歌曲id号fileName歌曲名字filePath歌曲路径sort歌曲类型(表4.1、图4.1.1)Android自带一个MediaStore封闭类专

39、门来存储媒体信息通过UriEXTERNAL_CONTENT_URI来访问SDcard中的歌曲详细信息。存放媒体信息如TITLE(标题)、ARTIST(艺术家)、ALBUM(专辑)、SIZE(大小)IDintegersortintegerile_tablefinePathtextfileNametext丄.(表4.2、图4.1.2)属性数据类型允许空主键IdINTEGERNotnullPrimarykeyfileNameTEXTNotnullfilePathTEXTsortINTEGER表4.1属性数据类型允许空主键IDINTEGERNotnullPrimarykeyTITLETEXTNotnu

40、llARTISTTEXTALBUMTEXTSIZELONG表4.2i:i:I:i图4.1.1歌曲列表ARTISTTEXTJS?integer1:1:1:-.1EALBUMTEXT:!;1:1SIZE.-.-.1!:1:!:图4.1.2歌曲详细4.1.2音乐播放器E-R图音乐播放器E-R(实体-联系:entity-relation图)图(图4.1.3)曲且爭爲图4.1.3ER图4.2数据库连接这里将介绍如何进行Android数据库连接,Android中自带SQLite数据库,这是一个十分小型的数据库,这样正适合Android这种移动平台使用。Android数据库存储的位置在data/data/项

41、目文件夹/databases/目录下Android是利用ContentProvider作为容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。通过Context.getContentResolverO方法直接对数据库进行操作。程序中数据库类为DBHelperextendsSQLiteOpenHelper(继承关系),容提供类DBProviderextendsContentProvider(继承关系)4.2.1创建数据库Android提供了标准的数据库创建方式。继承SQLiteOpenHelper,实现onCreate和onUpgrade两个方法,有个好处就是便于数

42、据库版本的升级,连接数据库的算法如下:publicDBHelper(Contextcontext)/创建数据库super(context,DATABASE_NAME,null,DATABASE_VERSION);publicvoidonCreate(SQLiteDatabasedb)/创建时调用db.execSQL(DATABASE_CREATE);publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)/版本更新时调用db.execSQL(DROPTABLEIFEXISTSFile_Table);onCreate(db

43、);Override/在ContextProvider运行时自动创建数据库publicbooleanonCreate()dbOpenHelper=newDBHelper(getContext();returntrue;数据库如果创建不成功则抛出FIleNotFoundException异常4.2.2 操作数据库Android对数据库的操作主要有插入、删除、更新、查询操作,在进行任何操作时都必须指定一个Uri,才能对相应的表进行数据操作。/数据库删除操作Overridepublicintdelete(Uriarg0,Stringarg1,Stringarg2)SQLiteDatabasedb=d

44、bOpenHelper.getWritableDatabase();tryDb.delete(FileColumn.TABLE,arg1,arg2);catch(Exceptionex)ex.printStackTrace();return1;Override/数据库插入操作publicUriinsert(Uriuri,ContentValuesvalues)SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();longcount=0;trycount=db.insert(FileColumn.TABLE,null,values);catch(

45、Exceptionex)ex.printStackTrace();if(count0)returnuri;elsereturnnull;/数据库更新操作Overridepublicintupdate(Uriuri,ContentValuesvalues,Stringselection,StringselectionArgs)SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();inti=0;tryi=db.update(FileColumn.TABLE,values,selection,null);returni;catch(Exception

46、ex)return0;4.2.3数据显示程序是利用Cursor游标类指向数据表中的某一项,然后进行查询数据,用Log日志显示出来Override/数据库查询操作publicCursorquery(Uriuri,Stringprojection,Stringselection,StringselectionArgs,StringsortOrder)SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();/依次参数为:表名,查询字段,where语句,替换,groupby(分组),having(分组条件),orderby(排序)Cursorcur=db

47、.query(FileColumn.TABLE,projection,selection,selectionArgs,null,null,sortOrder);returncur;5软件测试5.1 软件的测试一个程序并不可能达到十分完美,难免存在一些错误。如果不能及时将其找出并修改,会造成系统崩溃并造成不必要的损失。通过软件测试,尽可能多的找出系统中的错误,以便于及时修改。5.1.1 软件测试的环境1、软件测试的性能要求软硬件要求:系统环境winXP;硬件系统环境P42.4、1024MB存、80G硬盘。系统运行时对数据的性要求不高对一般的数据不要求进行加密。此外,对其他软件几乎没有依赖性,程序

48、健壮性较好。2、测试建立一模拟的SD卡,上传歌曲文件;分别测试其的播放、暂停、停止、上/下一首的功能是否有用。3、软件测试的评价软件功能评价:此软件各模块都能实现各自的功能,基本符合播放音乐的要求。结论:此软件是可行的。5.1.2 测试阶段软件测试是一项复杂的系统工程,从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。按照软件测试的策略和过程分类,软件测试可分为单元测试、集成测试、确认测试、系统测试和验收测试。它们被依次顺序地执行,如图5-1所示:樓块模决-摸块钦件溟计单元侧试单元测试单元测试单元测试鞭咀式确认己测權1

49、夬图5-1软件测试分级模型.软件莊求1、单元测试单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。因为单元测试需要知道部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。因此应用系统有一个设计很好的体系结构就显得尤为重要。一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。2、集成测试集成测试是在软件系统集成过程中所进行的

50、测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。在此采用自顶向下策略,从主页开始进入,测试每个模块之间的联系是否合理,如前台展示与后台管理的接口等。3、确认测试确认测试又称有效性测试。它的任务是验证软件的有效性,即验证软件的功能和性能及其它特性是否与用户的要求一致。在软件需求规格说明书中描述了全部用户可见的软件属性,其中有一节叫做有效性准则,它包含的信息就是软件确认测试的基础。4、系统测试系统测试是对已经集成好的软件系统

51、进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。5、验收测试验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。这是软件在投入使用之前的最后测试。6结论本文通过本系统设计与开发,从而得出下列结论:1、学习一门新技术,最重要的是实践,只有多动手才能尽快掌握它。2、一个系统的开发,经验是最重要的,经验

52、不足,就难免会有许多考虑不周之处。3、要想吸引更多的用户,系统的界面必须要美观、友好,功能要健全。不过由于经验不足,我设计的图形界面比较简单。只是对基本功能进行了开发。4、本次开发,我参考了很多本系统的例子,吸取了一些别的本系统的长处,对自己的毕业设计进行了完善,但是还有很多的不足之处,有待以后进一步学习。本文所制作的系统界面友好、使用灵活、操作简单、功能齐全、表现方式独特,已基本具备了成熟的技术理论。6、由于时间仓促,本次设计由我完成本系统的制作,对我这样一个JSP新手而言所制作的模块还有不完善的地方。由于是独立完成,在毕业设计的过程遇到了很多的困难,我求教了不少老师和同学,在这个过程中让我

53、体会到了,一个团队的重要性。通过对Android手机平台的音乐播放器的开发,使我对Android系统从零进入到了一个比较高的层次的了解,Android功能是如此强大,令人不得不佩服。在实现播放器的基本功能是,一开始我是不知道要用什么来做了,直到问了同学和查看书籍资料,才知道用了一个监听的方法解决掉。7、因为自己对Android的掌握不是很好,播放器不够完善,有些地方还有些不合理的地方,比如歌词方面,这需要改善,有待以后去加强。致在本次毕业论文过程中,得到了指导老师的指导与支持。在此特别感指导老师的大力帮助。指导老师的悉心指导和大力支持,在总体结构、功能的把握上给予了非常大的帮助,同时根我们提供

54、了非常优越的设计环境,并对我在编程设计等细节工作上给予了耐心的指导,对于我顺利完成这次毕业论文起到了关键性的作用通过开发本系统,我较全面的掌握了android基本知识和编程技巧,并在开发过程中我的java开发能力得到了进一步的提高。在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程先应有较长的时间去把分析做好,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。当然也有些还需待继续深入地方如:菜单功能的实现问题等等。参考文献1. 专著:M作者:余志龙昱勋名杰小凤郭秩均.书名M:GoogleAndroidSDK开发例大全(第二版).出版地:人民邮电出版年份:20102. 网络资料:参考播放功能和SD卡的资料

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!