Android多功能音乐播放器设计毕业设计

上传人:无*** 文档编号:44539617 上传时间:2021-12-05 格式:DOC 页数:37 大小:1.35MB
返回 下载 相关 举报
Android多功能音乐播放器设计毕业设计_第1页
第1页 / 共37页
Android多功能音乐播放器设计毕业设计_第2页
第2页 / 共37页
Android多功能音乐播放器设计毕业设计_第3页
第3页 / 共37页
点击查看更多>>
资源描述
金陵科技学院学士学位论文 目录 毕 业 论 文 设计(论文)题目: Android多功能音乐播放器设计 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日目 录Android多功能音乐播放器设计III摘 要IIIAbstractIV1 绪论11.1课题开发的背景及意义11.2研究现状12 Android介绍22.1 什么是android?22.2 Android基本框架(Android Architecture)22.3系统的四大组件42.4 Android特性53系统需求分析63.1功能需求63.1.1播放器的基本控制需求63.1.2 播放清单列表管理需求73.1.3 播放友好性需求93.1.4 功能需求(时序图)分析103.2 系统结构图和流程图103.3 系统界面需求123.4系统性能需求133.4.1 如何避免ANR143.4.2增强响应性143.5 运行环境需求154 Android音乐播放器系统设计164.1 音乐播放器界面功能实现164.2 本地音乐及网络音乐播放功能实现204.3 数据存储方式214.3.1 SharedPreferences214.3.2 File存储方式224.3.3 SQLiteDatabase数据库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致谢30金陵科技学院学士学位论文 摘要 Android多功能音乐播放器设计摘 要随着Android平台的兴起,移动音乐已成为很多手机用户休闲时的主要爱好之一,因此一款免费的,界面简洁,性能优异的音乐播放器将会得到广大音乐爱好者的支持。本文首先介绍了Android系统的架构和特点,然后在分析需求的基础上,详细论述利用Eclipse开发平台、Android SDK、Android ADT设计出音乐播放器的具体方法。该播放器支持播放本地及网络音乐、搜索、下载,并且能自动匹配歌词和专辑图片,具有一定实用性。关键词:Android;音乐播放器;下载金陵科技学院学士学位论文 Abstract Android MediaPlayerAbstractWith the rise of the Android platform, mobile music has become one of the main hobby of leisure time a lot of mobile phone users, therefore a free, simple interface,excellent music player will get the support of the majority of music lovers.This paper first introduces the architecture and features of the Android system, and then on the basis of the analysis of demand is discussed in detail using the Eclipse development platform, the Android SDK, Android ADT to design a specific method of the music player. The player supports playback of local and online music search, download and can automatically match the lyrics and album art, with a certain practicality.Key words: Android;MediaPlayer;Download金陵科技学院学士学位论文 绪论1 绪论1.1课题开发的背景及意义近年来,移动通信和互联网成为当今世界发展最快、市场潜力最大、前景最诱人的两大业务,它们的增长速度是任何预测家未曾预料到的。迄今,全球移动用户已超过15亿,互联网用户也已逾7亿。中国移动通信用户总数超过3.6亿,互联网用户总数则超过1亿。目前,移动互联网正逐渐渗透到人们生活、工作的各个领域,短信、下载、移动音乐、手机游戏、视频应用、手机支付、位置服务等丰富多彩的移动互联网应用迅猛发展,正在深刻改变信息时代的社会生活。移动音乐在日常生活中有着非常重要的作用,用手机收听音乐,已经是很多手机用户闲暇时的主要爱好之一,拥有一款功能强大的手机音乐播放器也是很多爱好听音乐的手机用户的追求,因此一款能够提供极佳的音质音效、支持随时随地播放、搜索、下载歌曲,并且能自动匹配歌词和专辑图片的音乐播放器将会得到广大音乐爱好者的支持。1.2研究现状随着移动互联网的发展,近年来智能手机的发展也更加迅速,市场上出现了多种手机操作系统,其中主流的操作系统有Symbian、Windows Phone、Android、ios、黑莓等,其中具有开放源代码优势的Android操作系统有着巨大的发展前景。由于谷歌Android系统开放,因此我们完全能够在手机上拥有一款个性化的音乐播放器。Google的Android系统是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。现如今,就安卓平台而言,很多播放器一味追求外观花哨,功能庞大,对用户的手机资源造成了很多资源浪费,比如CPU,内存等占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,开发一款功能全面,界面简洁,性能优异的音频播放器软件一定会受到用户欢迎。31金陵科技学院学士学位论文 2 Android介绍2 Android介绍2.1 什么是android?Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。2.2 Android基本框架(Android Architecture)图 2.1 Android Architecture1ApplicationsApplication Android会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的。2Application FrameWork 开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组建可以被用户替换。所有的应用程序都由一系列的服务和系统组成,包括: 可扩展的视图(Views )可以用来建应用程序,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至包括一个可嵌入的web浏览器内容管理器(Content Providers )使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件(layout files )。通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。3Libraries库Android 包括一个被 Android 系统中各种不同组件所使用的 C/C+ 库集。该库通过 Android 应用程序框架为开发者提供服务。以下是一些主要的核心库:系统 C 库一个从 BSD 继承来的标准 C 系统函数库( libc ),专门为基于 embedded linux 的设备定制。 媒体库- 基于 PacketVideo OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。 Surface Manager - 对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。 LibWebCore - 一个最新的web浏览器引擎用来支持Android浏览器和一个可嵌入的web视图。 SGL - 一个内置的2D图形引擎 3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。 FreeType - 位图(bitmap)和向量(vector)字体显示。SQLite一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。4Android RuntimeAndroid 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对于同时高效地运行多个VM来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。5Linux内核Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。2.3系统的四大组件在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。下面分别介绍四大组件:1Activity 简介在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。2Service 简介顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期中的方法就可以了。一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过元素声明才能使用.Service有自己的生命周期,我们可以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service 3Broadcast Receiver 简介Broadcast Receiver 顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent 4ContentProvider简介Content Provider 用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。它是跨应用程序共享数据的唯一方法。Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的Content Provider。它们被定义在android.provider包下面。通过这样定义好的ContentProvider 我们可以方便的进行数据操作。当然我们必须拥有适当的权限。我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问 2.4 Android特性Android系统有如下的几大特性:应用程序框架 支持组件的重用与替换Dalvik虚拟机 专门为移动设备做了优化内部集成浏览器 该浏览器基于开源的WebKit引擎优化的图形库 包括2D和3D图形库,3D图形库基于OpenGL ESSQLite 用作结构化的数据存储多媒体支持 包括常见的音频、视频和静态印象文件格式(如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)GSM电话(依赖于硬件)蓝牙Bluetooth, EDGE, 3G, and WiFi (依赖于硬件)照相机,GPS,指南针,和加速度计 (依赖于硬件)丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件金陵科技学院学士学位论文 3 系统需求分析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之后需要展示给用户什么的话,它应该使用Notification Manager。3.4.2增强响应性一般来说,100到200毫秒是用户感到“卡”的门槛。下面是避免ANR以及加快应用响应额外的方法。如果应用需要等着后台工作的结果(本应用中网络访问较频繁),此时应在前台展示出它的进度。 (可以使用ProgressBar或ProgressDialog)来实现,如果你的应用初始化耗时很长,考虑使用一个SplashScreen或者尽快进入主界面然后再异步地慢慢填充。 在这两种情况,你应该提供给用户一个进度条之类的东西,表明你的应用还没死。3.5 运行环境需求支持环境:Android SDK1.5以上金陵科技学院学士学位论文 4 Android音乐播放器系统设计4 Android音乐播放器系统设计4.1 音乐播放器界面功能实现音乐播放器界面用了TableHost组织5个Activity,每个Activity则用了Android 5大布局(LinearLayout(线性布局)、FrameLayout(框架布局)、TableLayout(表格布局)、AbsoluteLayout(绝对位置布局)、RelativeLayout(相对位置布局)跟常用组件结合。下面是5个主要界面的运行效果图。图4.1本地歌曲界面图4.2在线音乐界面图4.3播放界面图4.4搜索界面图4.5更多界面4.2 本地音乐及网络音乐播放功能实现本设计中播放音乐的功能主要是用到了Android SDK中的MediaPlayer类来实现播放音乐的功能。首先要做的是MediaPlayer对象的初始化。由于初始化可以由于种种原因不能成功(如文件无法读取等),需要把它放在try块中,并记录可能出现的异常,根据异常做出相应的处理。MediaPlayer对象在使用前要注意reset,因为它会保存上次的播放状态。Reset之后,就可以用setDataSource来设置多媒体文件的路径了。这个路径既可以是本地的,也可以是远程网络上的。比如将一个http协议下的音乐链接传递给MediaPlayer对旬,它能自动下载缓冲播放远程文件。Prepare方法则是用于播放网络上的音乐。比如在播放远程文件时,使用该方法就会从远程获取数据而不阻塞其它动作。做好这些准备后,就可以调用start方法,如果之前的状态是暂停播放,start方法就会继续播放(除非调用了reset方法),否则,它就会从头开始播放音频文件。为了解决自动连接播放的问题,我们还要监听播放完毕这个事情,就是通过setOnCompletionListener方法设置一个监听器,监听到播放完成后就切换到下一曲继续播放。另外几个控制播放的方法也基本上都是对MediaPlayer对象的控制。在此不在赘述,详细代码请参见附录。4.3 数据存储方式在播放器正常运行时,由于各界面存在相互跳转,为了避免数据在界面跳转的过程中丢失,我们需要将一些数据进行临时存储或者永久存储。保存数据Android作为一种手机操作系统,提供了如下几种存取数据的方式:Preference(配置)、File(文件)、SQLite数据和网络 。另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Android提供了Content Provider组件来实现应用程序之间数据的共享 4.3.1 SharedPreferencesShearedPreference提供了一种轻量级的数据存取方法,一般数据比较少,一些简单的配置信息。它以“键-值”(是一个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.Editor editor = sp.edit();然后对象editor可以存入一个HashMap类型的键值,即putString(KEY, VALUES),这样,我们可以将List中的对象转化成一样长的字符中放进配置文件中。当写入成功时,android系统会自动在目录data/data/工程包名/shared_prefs/目录下生成一个配置文件4.3.2 File存储方式我们可以将一些数据直接以文件的形式保存在设备中。例如,一些文本文件、PDF文件、音视频文件和图片等。Android提供了文件读写的方法 方法Context.openFileInput() 获得标准Java文件输入流(FileInputStream)方法Context.openFileOutput() 获得标准Java文件输出流(FileOutputStream)Resources.openRawResource (R.raw.myDataFile)方法返回InputStream。4.3.3 SQLiteDatabase数据库SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎 SQLite数据库不像其它的数据库(如:Oracle),它没有服务器进程。所有的内容包含在同一个单文件中。该文件是跨平台的可以自由拷贝。基于其自身的先天优势,SQLite在嵌入式领域得到了广泛应用。Android系统中使用Sqlite数据库则是使用SQLiteDatabase类实现数据库操作的。/data/data/package/shared_prefs/ Android的三种数据存储方式则让我们可以轻松方便的进行程序编写和数据的访问,更不会让不该消失的数据消失,这对我们进行程序书写有很大我帮助!到这里,基于Android手机平台的音乐播放器功能的介绍基本结束。金陵科技学院学士学位论文 5 系统运行与测试5 系统运行与测试5.1调试工具介绍5.1.1通过Logcat来调试程序:Dump一份系统消息的日志.这些消息包括模拟器抛出错误时的堆栈跟踪.Android Log是一个记录日志的类,用来将消息写入模拟器上的日志文件中.如果你在DDMS上运行logcat的话你可以就实时查看消息.在你的代码中加入几个写日志方法的调用。为了使用Log类,你只需要调用Log.v()(详细),Log.d()(debug),Log.i()(information),Log.w()(warning) 或者 Log.e()(error),根据你想获得的日志信息来选择相应的方法。在应用程序中需要添加Log.i(MyActivity, MyClass.getView() Requesting item number + position)这段代码,就可以在logcat中读取这些信息。5.1.2通过Traceview来调试程序:Android可以保存一个日志用来记录被调用的方法以及该方法被调用的次数,通过Traceview你可以在一个图形化的界面中查看这个日志文件.5.1.3通过adb来调试程序:Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器的状态.发出Android命令: 你可以在你的开发机上的命令行或脚本上发布Android命令,使用方法:adb -d|-e|-s 进入Shell:adb shell查询模拟器/设备实例adb devices 列出模拟器的序列号和状态给特定的模拟器/设备实例发送命令如果有多个模拟器/设备实例在运行,在发布adb命令时需要指定一个目标实例. 这样做,请使用-s 选项的命令.在使用的-s 选项是adb -s 如:db -s emulator-5556 install helloWorld.apk安装软件:adb install 从模拟器/设备中拷入或拷出文件可以使用adbpull ,push 命令将文件复制到一个模拟器/设备实例的数据文件或是从数据文件中复制.install 命令只将一个.apk文件复制到一个特定的位置,与其不同的是,pull 和 push 命令可令你复制任意的目录和文件到一个模拟器/设备实例的任何位置.从模拟器或者设备中复制文件或目录,使用(如下命):adb pull 将文件或目录复制到模拟器或者设备,使用(如下命令)adb push 在这些命令中, 和 分别指通向自己的发展机(本地)和模拟器/设备实例(远程)上的目标文件/目录的路径下面是一个例子:adb push foo.txt /sdcard/foo.txt查询日志 adb logcatStopping the adb Server在某些情况下,你可能需要终止Android 调试系统的运行,然后再重新启动它. 例如,如果Android 调试系统不响应命令,你可以先终止服务器然后再重启,这样就可能解决这个问题.用kill-server 可以终止adb server.你可以用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工程,选择Run as Android Application即可编译,编译完成自动打开模拟器(emulator-5554)运行。5.3.2 运行程序Android程序的运行一般有2种方法,即:模拟器运行,真机运行。1模拟器运行 图5.1 模拟器运行效果图2真机运行将手机用数据线与电脑相连,安装对应手机型号的USB驱动,打开手机设置应用程序开发USB调试后即可调试。右击Android工程,选择Run as Android Aplication,由于已打开模拟器,需选择在模拟器还是真机运行,选择真机,确认后系统将程序安装到手机上,并自动运行。图5.2为模拟器与真机选择窗口,图5.3为真机运行效果,效果图使用91助手刷新手机屏幕显示截图获得。图5.2 模拟器与真机选择界面图5.3 91手机助手屏幕截图5.4 系统存在的不足由于时间的限制,本系统已经完成了预期的大部分功能,但还有一些地方有待于进一步的完善,系统的歌词显示未能完美实现,部分歌曲歌词不能呈现,仍需要调试改进。金陵科技学院学士学位论文 结论结论1通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这些功能的确是必不可少的功能,否则就不能算是音乐播放器了。2音乐播放器系统实现了播放器的基本功能:播放,暂停、停止、上/下一首、歌词显示、播放模式、歌曲搜索、文件浏览器、播放列表查询等功能。运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写+SQLite数据库支持+SharedPreference配置文件的组合方式进行数据管理。实现了音乐播放器的系统编程。3本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用的开发语言是Java语言,采用主要开发工具是Eclipse,Android Development Tool的插件,和Android SDK全面结合,才使整个音乐播放器系统得以实现。4总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。在此论文抒写过程中,我还要感谢我的指导老师给我的支持和建议。让我能顺利的完成本次论文。金陵科技学院学士学位论文 参考文献参考文献1 RobiSen.UnlockingAndroid:ADevelopersGuideM.MANNINGPUBN,20092 SayedHashimi.ProAndroid3M.APRESS;NEW,20103 MarkoGargenta.LearningAndroidM.OREILLY&ASSOCINC,20104吴其庆.Java程序设计实例教程M.北京:冶金工业出版社,20065 赵文靖.Java程序设计基础与上机指导M.北京:清华大学出版社,2006 6 姚尚朗/靳岩.GoogleAndroid开发入门与实践M.北京:人民邮电出版社,20097 梅尔.Android高级编程M.北京:清华大学出版社,20108 杨丰盛.Android应用开发揭秘M.北京:机械工业出版社,20109 郭宏志.Android应用开发详解M.北京:电子工业出版社,201010 李宁等.Android/OPhone开发完全讲义M.北京:水利水电出版社,2010.11 余志龙等.GoogleAndroidSDK开发范例大全(第二版)M.北京:人民邮电出版社,201012(美)哈希米,(印)克曼特内尼,(美)麦克莱恩著,杨越译精通Android2M.北京:人民邮电出版社,201013 邓凡平.深入理解Android卷M.北京:机械工业出版社,201114 李刚.疯狂Android讲义M.北京:电子工业出版社,201115 吴亚峰,苏亚光Android应用案例开发大全M.北京:人民邮电出版社,2011.金陵科技学院学士学位论文 致谢致谢历时几个月的毕业设计已经告一段落。在此,我要衷心感谢我的父母,感谢父母对我这么多年的培养,没有父母就没有我的成长,真的很感谢你们。在本次毕设过程中,经过自己不断的搜索努力以及李莉老师的耐心指导和热情帮助,本设计已经基本完成。在毕业设计和论文的撰写过程中,李莉老师还给我提出了很多好建议,提供了大量的国内外最新的资料,指导老师严谨的治学态度和热忱的工作作风令我十分钦佩,她的指导使我受益匪浅.在学习和研究中,她以丰富的经验和勤勉严谨的治学态度为我们树立了榜样,让我终生获益。在此,我对李莉老师致以最真诚的感谢。在这次毕业设计中,李老师对我严格要求,及时对我在毕业设计工作中的不足一一指出,毕业设计中也遇到了很多问题,李老师都不厌其烦的对我进行细心的辅导,在李老师的帮助下,我解决了一个又一个工作中遇到的问题,感谢李老师在工作中对我的帮助。另外,在这次Android的学习中,很多同学也给与了我很大的帮助。我从一开始对Android一无所知,根本不知道该如何下手,到渐渐的明白Android的基本原理,知道该如何使用Android进行一些简单的编程和工程的创建。每次遇到一些问题,不知道如何进行下去的时候,同学总会提供一些帮助,帮我想办法,查一些资料,跟我一起解决问题。在此,真的很感谢我的这些可爱的同学们。最后,感谢学校提供了这次机会以及各方面的支持。有了好的环境和支持才能顺利完成我的毕业设计。毕业在即,回首这段时间,感慨万千。所有的一切都历历在目,那些曾经一起相处过的、帮助过我的老师们,同学们,你们的帮助让我学会了更多,谢谢你们的无私的帮助。有了你们的关心和帮助,我的毕业设计才得以顺利完成,再次真心的感谢你们!致 谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


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

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


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