版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.31/36.
毕业论文设计(论文)题目:Android多功能音乐播放器设计学位论文原创性声明本人重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期:年月日学位论文使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名: 日期:年月日导师签名:日期:年月日目录Android多功能音乐播放器设计III摘要IIIAbstract IV1绪论11.1课题开发的背景与意义11.2研究现状12Android介绍22.1什么是android?22.2Android基本框架(AndroidArchitecture)22.3系统的四大组件42.4Android特性53系统需求分析63.1功能需求63.1.1播放器的基本控制需求63.1.2播放清单列表管理需求73.1.3播放友好性需求93.1.4功能需求(时序图)分析103.2系统结构图和流程图103.3系统界面需求123.4系统性能需求133.4.1如何避免ANR 143.4.2增强响应性143.5运行环境需求154Android音乐播放器系统设计164.1音乐播放器界面功能实现164.2本地音乐与网络音乐播放功能实现204.3数据存储方式214.3.1SharedPreferences 214.3.2File存储方式224.3.3SQLiteDatabase数据库225系统运行与测试235.1调试工具介绍235.1.1通过Logcat来调试程序:235.1.2通过Traceview来调试程序:235.1.3通过adb来调试程序:235.2调试中出现的问题与解决方法245.3编译运行程序255.3.1编译程序255.3.2运行程序255.4系统存在的不足27结论28参考文献29致30Android多功能音乐播放器设计摘要随着Android平台的兴起,移动音乐已成为很多手机用户休闲时的主要爱好之一,因此一款免费的,界面简洁,性能优异的音乐播放器将会得到广大音乐爱好者的支持。本文首先介绍了Android系统的架构和特点,然后在分析需求的基础上,详细论述利用Eclipse开发平台、AndroidSDK、AndroidADT设计出音乐播放器的具体方法。该播放器支持播放本地与网络音乐、搜索、下载,并且能自动匹配歌词和专辑图片,具有一定实用性。关键词:Android;音乐播放器;下载AndroidMediaPlayerAbstractWiththeriseoftheAndroidplatform,mobilemusichasbecomeoneofthemainhobbyofleisuretimealotofmobilephoneusers,thereforeafree,simpleinterface,excellentmusicplayerwillgetthesupportofthemajorityofmusiclovers.ThispaperfirstintroducesthearchitectureandfeaturesoftheAndroidsystem,andthenonthebasisoftheanalysisofdemandisdiscussedindetailusingtheEclipsedevelopmentplatform,theAndroidSDK,AndroidADTtodesignaspecificmethodofthemusicplayer.Theplayersupportsplaybackoflocalandonlinemusicsearch,downloadandcanautomaticallymatchthelyricsandalbumart,withacertainpracticality.Keywords:Android;MediaPlayer;Download1绪论1.1课题开发的背景与意义近年来,移动通信和互联网成为当今世界发展最快、市场潜力最大、前景最诱人的两大业务,它们的增长速度是任何预测家未曾预料到的。迄今,全球移动用户已超过15亿,互联网用户也已逾7亿。中国移动通信用户总数超过3.6亿,互联网用户总数则超过1亿。目前,移动互联网正逐渐渗透到人们生活、工作的各个领域,短信、下载、移动音乐、手机游戏、视频应用、手机支付、位置服务等丰富多彩的移动互联网应用迅猛发展,正在深刻改变信息时代的社会生活。移动音乐在日常生活中有着非常重要的作用,用手机收听音乐,已经是很多手机用户闲暇时的主要爱好之一,拥有一款功能强大的手机音乐播放器也是很多爱好听音乐的手机用户的追求,因此一款能够提供极佳的音质音效、支持随时随地播放、搜索、下载歌曲,并且能自动匹配歌词和专辑图片的音乐播放器将会得到广大音乐爱好者的支持。1.2研究现状随着移动互联网的发展,近年来智能手机的发展也更加迅速,市场上出现了多种手机操作系统,其中主流的操作系统有Symbian、WindowsPhone、Android、ios、黑莓等,其中具有开放源代码优势的Android操作系统有着巨大的发展前景。由于谷歌Android系统开放,因此我们完全能够在手机上拥有一款个性化的音乐播放器。Google的Android系统是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。Android操作系统最初由AndyRubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑与其他领域上。Android的主要竞争对手是苹果公司的iOS以与RIM的BlackberryOS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。现如今,就安卓平台而言,很多播放器一味追求外观花哨,功能庞大,对用户的手机资源造成了很多资源浪费,比如CPU,存等占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,开发一款功能全面,界面简洁,性能优异的音频播放器软件一定会受到用户欢迎。2Android介绍2.1什么是android?Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android是基于Linux核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(OpenHandsetAlliance)开发。它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。低层以Linux核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。2.2Android基本框架(AndroidArchitecture)图2.1AndroidArchitecture1.ApplicationsApplicationAndroid会同一个核心应用程序包一起发布,该应用程序包包括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.AndroidRuntimeAndroid包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对于同时高效地运行多个VM来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层存管理机制。5.Linux核Android的核心系统服务依赖于Linux2.6核,如安全性,存管理,进程管理,网络协议栈和驱动模型。Linux核也同时作为硬件和软件堆栈之间的硬件抽象层。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。2.3系统的四大组件在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>元素声明才能使用.Service有自己的生命周期,我们可以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service3.BroadcastReceiver简介BroadcastReceiver顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现BroadcastReceiver来监听和响应这些广播的Intent4.ContentProvider简介ContentProvider用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。它是跨应用程序共享数据的唯一方法。Android为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的ContentProvider。它们被定义在vider包下面。通过这样定义好的ContentProvider我们可以方便的进行数据操作。当然我们必须拥有适当的权限。我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问2.4Android特性Android系统有如下的几大特性:·应用程序框架支持组件的重用与替换·Dalvik虚拟机专门为移动设备做了优化·部集成浏览器该浏览器基于开源的WebKit引擎·优化的图形库包括2D和3D图形库,3D图形库基于OpenGLES·SQLite用作结构化的数据存储·多媒体支持包括常见的音频、视频和静态印象文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)·GSM(依赖于硬件)·蓝牙Bluetooth,EDGE,3G,andWiFi(依赖于硬件)·照相机,GPS,指南针,和加速度计(依赖于硬件)·丰富的开发环境包括设备模拟器,调试工具,存与性能分析图表,和Eclipse集成开发环境插件3系统需求分析3.1功能需求根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述:播放播放暂停停止上一首/下一首音量控制专辑封面显示歌词显示本地歌曲列表网络歌曲列表搜索相关设置用户图3.1音乐播放器基本控制图3.1.1播放器的基本控制需求表3.1播放器的基本控制需求表用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮2.播放器将播放列表中的当前的歌曲用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“暂停”按钮2.播放器将暂停当前的歌曲用例名称:停止参与者:用户目标:使得用户可以停止正在播放的歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“停止”按钮2.播放器将停止当前播放的歌曲用例名称:上一首/下一首参与者:用户目标:使得用户可以听上一首或下一首歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“上一首或下一首”按钮2.播放器将播放上一首或下一首歌曲用例名称:播放清单参与者:用户目标:使得用户可以进入播放清单前置条件:程序在运行基本事件流:1.用户单击“清单”按钮2.播放器进入清单列表3.1.2播放清单列表管理需求当用户选中列表中某一项歌曲,就有的需求:播放播放添加至播放列表删除用户图3.2选中列表中某歌曲时需求图表3.2播放器的基本控制需求表用例名称:播放参与者:用户目标:使得程序播放选中的歌曲前置条件:程序运行在播放菜单选项中基本事件流:1.用户单击“播放”按钮2.播放器进入播放状态用例名称:添加至播放列表参与者:用户目标:将歌曲添加到歌曲列表前置条件:程序运行在文件浏览界面基本事件流:1.用户单击“增加”按钮2.播放器进入手机扩展SD卡用例名称:删除参与者:用户目标:使选中的歌曲被删除前置条件:程序运行在播放菜单选项中基本事件流:1.用户单击“删除”按钮2.播放器移除选中歌曲3.1.3播放友好性需求用户用户播放模式专辑封面单曲循环循环播放歌词显示随机播放图3.3播放友好需求图表3.3播放友好需求表用例名称:播放模式参与者:用户目标:使得程序进入播放模式设定状态前置条件:程序运行在播放器设定界面中基本事件流:1.用户单击“顺序、随机、单曲”按钮2.播放器进入选中模式播放状态用例名称:歌词显示参与者:用户目标:使得程序进入播放器歌词设置状态前置条件:程序运行在播设定界面基本事件流:1.用户单击“歌词开关按钮”按钮2.播放器显示或关闭歌词3.1.4功能需求(时序图)分析图3.4音乐播放器的时序图分析如(图)3.2系统结构图和流程图1.音乐播放器的系统流程图(图3.5)图3.5音乐播放器系统流程图2.系统功能表(表3.4)和系统功能结构图(图3.6)表3.4播放器功能表功能类别子功能子功能播放列表播放列表菜单退出播放从扩展卡寻找歌曲歌曲菜单播放->进入播放界面删除->数据库同步更新重命名->数据库同步更新向上、下移动->数据库同步更新播放界面播放播放歌曲->线程启动->时间更新暂停暂停歌曲->线程暂停->时间暂停停止停止歌曲->线程停止->时间停止上一首播放列表索引变化->寻找上一ID歌曲下一首播放列表索引变化->寻找下一ID歌曲播放界面菜单返回到播放列表返回到主菜单从扩展卡寻找歌曲退出播放器隐藏播放界面主菜单退出程序程序退出进入播放列表显示播放列表图3.6系统功能结构图3.3系统界面需求播放器界面要求布局合理,颜色舒适,控制按钮友好。(图3.7)图3.7播放器界面3.4系统性能需求即使所写代码能够通过世界上所有的性能测试,此时该应用仍然有可能使用户陷入狂暴状态。例如缺乏响应性、反应慢、某些情况会卡、处理输入的时间非常长的应用就会使用户体验大打折扣。在Android中,系统通过弹出一个“应用无响应(ANR)”对话框给用户,来对抗一段时间没有相应的应用。用户可以在这个对话框中,选择强制关闭还是等待。但是用户不会喜欢在用你的应用的时候总是看到这个对话框。所以,在你的应用中设计响应性是很重要的,系统就不会弹出ANR给用户。一般来说,当应用对用户输入没有相应的时候,系统弹出ANR。例如,如果一个应用阻塞在某些输入输出操作(例如频繁地网络请求),应用的主线程就不会继续响应用户的输入事件。过了一段时间后,系统会认为这个应用已经废了,于是就弹出一个ANR来让用户选择是否强制关闭应用。在这种情况下,建立一个子线程来完成工作是常用的修复手段。这样,主线程(响应UI事件的循环)就会一直运行,系统就不会认为你的代码死了。一般来说,线程是属于类级别,所以,你可以认为响应性是一个类级别的问题。因此根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:1.当要求歌曲播放时,程序响应时间最长不能超过5秒2.当要求歌曲暂停时,程序响应时间最长不能超过5秒3.当要求歌曲停止时,程序响应时间最长不能超过5秒4.当要求歌曲上/下一首时,程序响应时间最长不能超过5秒5.当要求进行清单列表时,程序响应时间最长不能超过5秒下面谈谈如何达到性能需求,即如何避免ANR、如何增加响应性:3.4.1如何避免ANR通过上面给出的ANR的定义,为什么Android应用会无响应,以与如何使你的应用避免这个。一般来说,Android应用会整个运行在一个线程(主线程)里。这意味着,在主线程,任何需要很长时间完成的动作,由于导致了你的应用没机会处理输入事件或者广播的Intent,都会触发ANR对话框。因此,任何在主线程工作的方法,都应该只做最少的事情。Activity的关键生命周期方法,例如onCreate()和onResume()里,更要做尽可能少的事。潜在的耗时运算,例如网络或数据库操作,或者进行类似缩放位图这样的大量的数学运算,都应该在子线程做。(对于数据库操作,可以通过一个异步方法,而不必放进另一个线程)。这并不意味着你的主线程应该阻塞住等着子线程,无论是通过Thread.wait()还是Thread.sleep()。你的主线程应该提供一个Handler来给子线程结束后返回结果。如此设计的应用,可以让主线程对输入保持小于5秒的响应速度,从而避免ANR对话框。如果其它的线程涉与展示UI,应该遵循同样的实践。对IntentReceiver的执行时间显示,暗示了它应该做的事情,是后台小规模的工作,类似保存设置或者注册Notification一类。所以,跟在主线程的方法一样,应用应该避免在BroadcastReceiver中进行潜在的耗时操作或运算。除了在子线程中处理大量密集任务(因为BroadcastReceiver生命周期是很短的)。当一个潜在的耗时操作需要返回一个广播Intent时,此时应用应该启动一个
Service。另外,应该避免从一个IntentReceiver里启动Activity,这将会跳出一个新的界面,并把用户正在做的工作打断。如果应用收到广播Intent之后需要展示给用户什么的话,它应该使用
NotificationManager。3.4.2增强响应性一般来说,100到200毫秒是用户感到“卡”的门槛。下面是避免ANR以与加快应用响应额外的方法。如果应用需要等着后台工作的结果(本应用中网络访问较频繁),此时应在前台展示出它的进度。(可以使用ProgressBar或ProgressDialog)来实现,如果你的应用初始化耗时很长,考虑使用一个SplashScreen或者尽快进入主界面然后再异步地慢慢填充。在这两种情况,你应该提供给用户一个进度条之类的东西,表明你的应用还没死。3.5运行环境需求支持环境:AndroidSDK1.5以上4Android音乐播放器系统设计4.1音乐播放器界面功能实现音乐播放器界面用了TableHost组织5个Activity,每个Activity则用了Android5大布局(LinearLayout(线性布局)、FrameLayout(框架布局)、TableLayout(表格布局)、AbsoluteLayout(绝对位置布局)、RelativeLayout(相对位置布局))跟常用组件结合。下面是5个主要界面的运行效果图。图4.1本地歌曲界面图4.2在线音乐界面图4.3播放界面图4.4搜索界面图4.5更多界面4.2本地音乐与网络音乐播放功能实现本设计中播放音乐的功能主要是用到了AndroidSDK中的MediaPlayer类来实现播放音乐的功能。首先要做的是MediaPlayer对象的初始化。由于初始化可以由于种种原因不能成功(如文件无法读取等),需要把它放在try块中,并记录可能出现的异常,根据异常做出相应的处理。MediaPlayer对象在使用前要注意reset,因为它会保存上次的播放状态。Reset之后,就可以用setDataSource来设置多媒体文件的路径了。这个路径既可以是本地的,也可以是远程网络上的。比如将一个协议下的音乐传递给MediaPlayer对旬,它能自动下载缓冲播放远程文件。Prepare方法则是用于播放网络上的音乐。比如在播放远程文件时,使用该方法就会从远程获取数据而不阻塞其它动作。做好这些准备后,就可以调用start方法,如果之前的状态是暂停播放,start方法就会继续播放(除非调用了reset方法),否则,它就会从头开始播放音频文件。为了解决自动连接播放的问题,我们还要监听播放完毕这个事情,就是通过setOnCompletionListener方法设置一个监听器,监听到播放完成后就切换到下一曲继续播放。另外几个控制播放的方法也基本上都是对MediaPlayer对象的控制。在此不在赘述,详细代码请参见附录。4.3数据存储方式在播放器正常运行时,由于各界面存在相互跳转,为了避免数据在界面跳转的过程中丢失,我们需要将一些数据进行临时存储或者永久存储。保存数据Android作为一种手机操作系统,提供了如下几种存取数据的方式:Preference(配置)、File(文件)、SQLite数据和网络。保存数据另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Android提供了ContentProvider组件来实现应用程序之间数据的共享4.3.1SharedPreferencesShearedPreference提供了一种轻量级的数据存取方法,一般数据比较少,一些简单的配置信息。它以“键-值”(是一个Map)对的方式,将数据保存在一个XML配置文件中。android.content.SharedPreferences提供了保存数据的方法android.content.SharedPreferences.Editor提供了获得数据的方法1..xml配置文件的读取我们仍以播放模式读取为例:当需要用到播放模式的确定时,我们将读取.Xml文件,同样用共享文件类SharedPreferences通过用方法getSharedPreferences("SET_MSG",MODE_WORLD_READABLE),并且是只读方式获得.Xml的文件容。SharedPreferences的对象调用方法getString("sigle_Play",null),方法返回一个String类型的值,即是我们以前存储进去的String值。此方法当该标记不存在时会默认返回一个null值。获得成功后我们就可以运用当前的值再对程序进行操作了。2..xml配置文件的存储类SharedPreferences。它有一个方法getSharedPreferences(参数1,参数2),参数1为写进时的标记,便于在从其中读取出来时的标记,参数2为读取模式,有只写模式(MODE_WORLD_WRITEABLE)和只读模式(MODE_WORLD_READABLE),在写之前将其置入编辑状态,用静态方法SharedPreferences.Editoreditor=sp.edit();然后对象editor可以存入一个HashMap<key,values>类型的键值,即putString(KEY,VALUES),这样,我们可以将List中的对象转化成一样长的字符中放进配置文件中。当写入成功时,android系统会自动在目录data/data/工程包名/shared_prefs/目录下生成一个配置文件4.3.2File存储方式我们可以将一些数据直接以文件的形式保存在设备中。例如,一些文本文件、PDF文件、音视频文件和图片等。Android提供了文件读写的方法方法Context.openFileInput()获得标准Java文件输入流(FileInputStream)方法Context.openFileOutput()获得标准Java文件输出流(FileOutputStream)Resources.openRawResource(R.raw.myDataFile)方法返回InputStream。4.3.3SQLiteDatabase数据库SQLite是一个嵌入式数据库引擎,针对存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎SQLite数据库不像其它的数据库(如:Oracle),它没有服务器进程。所有的容包含在同一个单文件中。该文件是跨平台的可以自由拷贝。基于其自身的先天优势,SQLite在嵌入式领域得到了广泛应用。Android系统中使用Sqlite数据库则是使用SQLiteDatabase类实现数据库操作的。/data/data/package/shared_prefs/Android的三种数据存储方式则让我们可以轻松方便的进行程序编写和数据的访问,更不会让不该消失的数据消失,这对我们进行程序书写有很大我帮助!/data/data/package/shared_prefs/到这里,基于Android手机平台的音乐播放器功能的介绍基本结束。5系统运行与测试5.1调试工具介绍5.1.1通过Logcat来调试程序:Dump一份系统消息的日志.这些消息包括模拟器抛出错误时的堆栈跟踪.AndroidLog是一个记录日志的类,用来将消息写入模拟器上的日志文件中.如果你在DDMS上运行logcat的话你可以就实时查看消息.在你的代码中加入几个写日志方法的调用。为了使用Log类,你只需要调用Log.v()(详细),Log.d()(debug),Log.i()(information),Log.w()(warning)或者Log.e()(error),根据你想获得的日志信息来选择相应的方法。在应用程序中需要添加Log.i("MyActivity","MyClass.getView()—Requestingitemnumber"+position)这段代码,就可以在logcat中读取这些信息。5.1.2通过Traceview来调试程序:Android可以保存一个日志用来记录被调用的方法以与该方法被调用的次数,通过Traceview你可以在一个图形化的界面中查看这个日志文件.5.1.3通过adb来调试程序:Android调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器的状态.发出Android命令:你可以在你的开发机上的命令行或脚本上发布Android命令,使用方法:adb[-d|-e|-s<serialNumber>]<command>进入Shell:adbshell查询模拟器/设备实例adbdevices列出模拟器的序列号和状态给特定的模拟器/设备实例发送命令如果有多个模拟器/设备实例在运行,在发布adb命令时需要指定一个目标实例.这样做,请使用-s选项的命令.在使用的-s选项是adb-s<serialNumber><command>如:db-semulator-5556installhelloWorld.apk安装软件:adbinstall<path_to_apk>从模拟器/设备中拷入或拷出文件可以使用adbpull,push命令将文件复制到一个模拟器/设备实例的数据文件或是从数据文件中复制.install命令只将一个.apk文件复制到一个特定的位置,与其不同的是,pull和push命令可令你复制任意的目录和文件到一个模拟器/设备实例的任何位置.从模拟器或者设备中复制文件或目录,使用(如下命):adbpull<remote><local>将文件或目录复制到模拟器或者设备,使用(如下命令)adbpush<local><remote>在这些命令中,<local>和<remote>分别指通向自己的发展机(本地)和模拟器/设备实例(远程)上的目标文件/目录的路径下面是一个例子:adbpushfoo.txt/sdcard/foo.txt查询日志adblogcatStoppingtheadbServer在某些情况下,你可能需要终止Android调试系统的运行,然后再重新启动它.例如,如果Android调试系统不响应命令,你可以先终止服务器然后再重启,这样就可能解决这个问题.用kill-server可以终止adbserver.你可以用adb发出start-server命令来重新启动服务器.5.2调试中出现的问题与解决方法本次应用在编码与调试过程中经常出现有:空指针异常(NullPointerException)、类型强制转换异常(ClassCastException)、数组下标越界异常(ArrayIndexOutOfBoundsException)、文件未找到异常(FileNotFoundException)、输入输出异常(IOException)以与一些访问权限等问题。有些比较容易解决,有的解决起来则较难,总之经过不懈努力,终于将这些调试过程中出现的异常解决了,下面说说解决异常的方法:1.java.lang.nullpointerexception这个异常经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建变量、对象,调用数组这些操作中,比如对象未经初始化,或者对象创建时的路径错误等等。对数组操作中出现空指针,很多情况下是把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)。2.java.lang.arrayindexoutofboundsexception这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api文档里都可以查阅。还有遇到不会编写的功能,或者功能块有问题也可以借助一些论坛解决。5.3编译运行程序5.3.1编译程序在Eclipse开发平台中右击Android工程,选择RunasAndroidApplication即可编译,编译完成自动打开模拟器(emulator-5554)运行。5.3.2运行程序Android程序的运行一般有2种方法,即:模拟器运行,真机运行。1.模拟器运行图5.1模拟器运行效果图2.真机运行将手机用数据线与电脑相连,安装对应手机型号的USB驱动,打开手机设置应用程序开发USB调试后即可调试。右击Android工程,选择RunasAndroidAplication,由于已打开模拟器,需选择在模拟器还是真机运行,选择真机,确认后系统将程序安装到手机上,并自动运行。图5.2为模拟器与真机选择窗口,图5.3为真机运行效果,效果图使用91助手刷新手机屏幕显示截图获得。图5.2模拟器与真机选择界面图5.391手机助手屏幕截图5.4系统存在的不足由于时间的限制,本系统已经完成了预期的大部分功能,但还有一些地方有待于进一步的完善,系统的歌词显示未能完美实现,部分歌曲歌词不能呈现,仍需要调试改进。结论1.通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这些功能的确是必不可少的功能,否则就不能算是音乐播放器了。2.音乐播放器系统实现了播放器的基本功能:播放,暂停、停止、上/下一首、歌词显示、播放模式、歌曲搜索、文件浏览器、播放列表查询等功能。运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写+SQLite数据库支持+SharedPreference配置文件的组合方式进行数据管理。实现了音乐播放器的系统编程。3.本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用的开发语言是Java语言,采用主要开发工具是Eclipse,AndroidDevelopmentTool的插件,和AndroidSDK全面结合,才使整个音乐播放器系统得以实现。4.总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。在此论文抒写过程中,我还要感我的指导老师给我的支持和建议。让我能顺利的完成本次论文。参考文献[1]
Robi
Sen.Unlocking
Android:A
Developer’s
Guide[M].MANNING
PUBN.,2009.[2]
Sayed
Hashimi.Pro
Android
3[M].APRESS;NEW,2010.[3]
Marko
Gargenta.Learning
Android[M].O’REILLY&ASSOC
INC,2010.[4]
吴其庆.Java程序设计实例教程[M].:冶金工业,2006.[5]文靖.Java程序设计基础与上机指导[M].:清华大学,2006.[6]
尚朗/靳岩.Google
Android开发入门与实践[M].:人民邮电,2009.[
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年优化版:汽车销售代理合同
- 2024年工程建材石料采购合同-适用于建筑公司购买石材的合同
- 2024年品牌授权与代理合同服务说明
- 2(2024版)医疗设备采购与维护服务合同
- 2024年城市更新项目施工与设计双包合同
- 2024年工程装饰设计创意知识产权许可合同
- 2024年工程设计委托合同
- 2024年定制:文化旅游开发合作协议
- 2024年土地使用权转让合同标的为一块商业用地
- 丧生遗产抚养协议书(2024年版)
- 产品合格证出厂合格证A4打印模板
- (通用)国家电网考试历年真题库(附答案)
- 学浪入驻教师合作协议范本
- 外脚手架拆除安全技术交底3篇
- 龙头股战法完整
- 京仪单晶炉电气控制系统软件使用说明书
- 商铺租赁合同完整版下载
- 制作简易纸折扇 (教案)-三年级上册劳动浙教版
- 电子商务对物流管理的影响-电子商务毕业论文设计
- 肝胆外科诊疗指南
- 非亲子关系证明模板
评论
0/150
提交评论