毕业论文-基于android系统音乐播放掌上音乐宝设计_第1页
毕业论文-基于android系统音乐播放掌上音乐宝设计_第2页
毕业论文-基于android系统音乐播放掌上音乐宝设计_第3页
毕业论文-基于android系统音乐播放掌上音乐宝设计_第4页
毕业论文-基于android系统音乐播放掌上音乐宝设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

西安文理学院机械电子工程系本科毕业设计(论文)题目个人通讯录专业班级机械设计制造及自动化学号08104100112学生姓名刘桂苓指导教师王保全设计所在单位西安软件服务外包学院年月个人通讯录摘要随着科技的快速发展,手机的功能也得到了不断的丰富,如今的手机的不在只是拥有打电话、发短信的功能,它具备了很多的功能,比如播放音乐,因此一款好的手机音乐播放器必定受到人们的欢迎。本文主要是基于ANDROID系统上的款音乐播放器应用程序的设计。ANDROID是一个开源的系统,它底层是基于LINUX的操作系统,本论文的音乐播放器采用了ANDROID开源系统技术,利用JAVA语言和ECLIPSE编辑工具对播放器进行编写,并且用到了MYECLIPSE和MYSQL,可以实现连接数据库得到歌曲URL地址,从而实现音乐的在线下载功能。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对高度过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、在线下载等功能于一体,性能良好,在ANDROID系统中能独立运行。关键词ANDROID;个人通讯录THESYSTEMBASEDONTHEANDROIDMUSICPOCKETMUSICTREASUREABSTRACTWITHTHERAPIDDEVELOPMENTOFSCIENCEANDTECHNOLOGY,THEFUNCTIONOFTHEMOBILEPHONEHASBEENCONTINUOUSLYENRICHED,TODAYSMOBILEPHONEISNOTONLYHASTHECALL,SENDTEXTMESSAGESFUNCTION,ITHASMANYFUNCTIONS,SUCHASPLAYINGMUSIC,SOAGOODMOBILEPHONEMUSICPLAYERWILLBEWELCOMEDBYTHEPEOPLETHISARTICLEISMAINLYBASEDONANDROIDMUSICPLAYERAPPLICATIONDESIGNANDROIDISANOPENSOURCESYSTEM,ITSBOTTOMISBASEDONTHELINUXOPERATINGSYSTEM,THISPAPERADOPTSANDROIDOPENSOURCEMUSICPLAYERSYSTEMTECHNOLOGY,THEUSEOFJAVALANGUAGEANDECLIPSEEDITINGTOOLSFORTHEPLAYERTOWRITE,ANDUSETHEMYECLIPSEANDMYSQL,CANCONNECTTHEDATABASETOGETURLADDRESS,THEREBYREALIZINGTHEONLINEMUSICDOWNLOADATTHESAMETIMEISGIVENINDETAILTHESYSTEMDESIGNPROCESS,INTERFACEDIAGRAMANDMAINFUNCTIONFLOWCHART,THEHEIGHTOFPROBLEMSENCOUNTEREDINTHEPROCESSANDSOLVINGMETHODSAREDISCUSSEDINDETAIL,THEMUSICPLAYERPLAY,PAUSE,STOP,ASONG,ASONG,MUSICONLINEDOWNLOADANDOTHERFUNCTIONSINONE,PERFORMANCEGOOD,INTHEANDROIDSYSTEMCANRUNINDEPENDENTLYKEYWORDSANDROID、OPENSOURCESYSTEM、LINUX、MUSICPLAYER第一章绪论111选题的目的与意义112音乐播放器的发展趋势113本课题主要讨论问题2第二章ANDROID音乐播放器的原理221音乐播放器的基本模块2211本地音乐模块3212在线下载模块7212数据库模块822音乐播放器的实现原理9221MEDIAPLAYER介绍9222MEDIAPLAYER的生命周期9223音乐播放器的实现过程10224音乐播放器流程图1123音乐播放器的界面需求1224音乐播放器的性能要求1225运行环境需求12第三章数据库的具体实现过程1231数据库简介1232数据库中的安装过程13321MYSQLSERVER安装主要安装过程13322MYSQLFRONT安装过程17323表的结构2033对MYSQL据库进行增删改查的程序代码20331向MYSQL数据库增加数据20332删除MYSQL数据库中的数据20332更新MYSQL数据库中的数据21332查询MYSQL数据库中的数据21第四章ANDROID项目介绍2241什么是ANDROID22411ANDROID简介22412ANDROIDFEATURES特性22413ANDROID基本框架(ANDROIDARCHITECTURE)23414ANDROID系统的四大组件2542搭建ANDROID开发环境2943ANDROID常用工具的使用31431命令行的使用31432DALVIKDEBUGMONITORSERVICEDDMS的使用3244ANDROID音乐播放器的工程33441ANDROID项目33442ANDROID工程程序结构34443ANDROIDMANIFESTXML文件37第五章音乐播放器的详细功能设计4051音乐播放器的界面40511音乐播放器的欢迎界面40512音乐播放器的本地音乐播放界面41513音乐播放器的连接数据库界面41514音乐播放器在线下载界面4252音乐播放器各个界面功能介绍42521音乐播放器欢迎界面功能4253音乐播放器各个界面功能实现代码43531音乐播放器欢迎界面实现代码43531音乐播放器本地音乐界面实现代码43531音乐播放器连接数据库界面实现代码47531音乐播放器在线下载界面实现代码49第六章绪论51结束语52参考文献53第一章绪论11选题的目的与意义随着科技的进步,手机的功能也不断的得到丰富,从最早的“大哥大”到现在的商务PDA手机,智能手机,音乐手机等等,功能也从单纯的打电话发展到了发短信,听歌,上网手机和我们生活的联系越来越紧密,手机的功能也是很多人们关注的焦点。目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少在人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器,而且还具有网上听音乐功能,所以开发一款受欢迎的手机音乐播放软件是具有良好的市场和应用前景的。一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以网上就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是GOOGLE的ANDROID手机平台,所以本课题就致力于开发出一款基于ANDROID手机平台的音乐播放器,来满足用户的使用需求。12音乐播放器的发展趋势首先简单的介绍一下ANDROID。ANDROID是一种以LINUX为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。ANDROID操作系统最初由ANDYRUBIN开发,最初主要支持手机。2005年由GOOGLE收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。ANDROID的主要竞争对手是苹果公司的IOS以及RIM的BLACKBERRYOS。2007年11月,GOOGEL宣布推出基于LINUX的ANDROID开放式手机操作系统,沿袭至今,已发展到40版本。2011年第一季度,ANDROID在全球的市场份额首次超过塞班系统,跃居全球第一。2011年11月数据,ANDROID占据全球智能手机操作系统市场525的份额,中国市场占有率为58。现在大多数的手机都采用了ANDROID系统,生活中人们经常会拿手机听音乐以舒缓压力,因此基于ANDROID系统的音乐播器必定会受到人们的欢迎。本课题的目的是开发一个可以播放主流音乐文件格式的播放器,实现的主要功能是播放MP3,WAV多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,歌曲快进,视觉外观,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。使ANDROID手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐的旋律之中。使人们的生活更加多样化。13本课题主要讨论问题本文的主要研究内容包括以下几个方面查找相关书籍与文献,了解ANDROID的构架并搭建ANDROID平台。查找相关资料,现阶段基于ANDROID平台手机音乐播放器发展现状以及相关功能。在上述基础上,提出所要做的手机播放器的相关功能如播放本地歌曲,在线下载,播放列表,歌曲快进等。在ANDROID平台上完成该课题的软件并进行相应的软件测试。第二章ANDROID音乐播放器的原理21音乐播放器的基本模块该音乐播放器分为分为三大基本模块1本地播放音乐模块;2在线下载模块;3MYSQL数据库模块;本地音乐在线下载MYSQL数据库音乐播放器图21播放器基本模块211本地音乐模块本地音乐模块的基本功能有读取SD卡音乐歌曲,显示歌曲列表,音乐歌曲的播放、暂停、停止、上一首、下一首、歌曲进度条、歌曲当前播放时间、歌曲总时间、当前播放歌曲名称。系统播放暂停停止上一首下一首当前播放歌曲名显示进度条歌曲总时间当前歌曲播放时间歌曲列表退出连接数据库进入在线下载模块用户图22本地音乐模块功能图用例名称播放参与者用户目标使得用户可以播放在播放列表中选中的歌曲前置条件播放器正在运行基本事件流1用户单击“播放”按钮2播放器将播放列表中的当前的歌曲用例名称暂停参与者用户目标使得用户可以暂停正在播放的歌曲前置条件歌曲正在播放且未停止和暂停基本事件流1用户单击“暂停”按钮2播放器将暂停当前的歌曲用例名称停止参与者用户目标使得用户可以停止正在播放的歌曲前置条件歌曲正在播放或暂停基本事件流1用户单击“停止”按钮2播放器将停止当前播放的歌曲用例名称上一首/下一首参与者用户目标使得用户可以听上一首或下一首歌曲前置条件歌曲正在播放或暂停基本事件流1用户单击“上一首或下一首”按钮2播放器将播放上一首或下一首歌曲用例名称歌曲列表参与者用户目标使得用户可以进入播放清单前置条件程序在运行基本事件流1用户单击“点击查看音乐列表”按钮2用户点击点击选择歌曲3用户点击音乐列表中的取消后歌曲列表隐藏用例名称进度条参与者用户目标使得用户可以快进当前播放的歌曲前置条件歌曲正在播放或暂停基本事件流用户拖动进度调后实现歌曲快进用例名称当前播放歌曲时间显示参与者用户目标使得用户可以看到当前播放歌曲的时间前置条件歌曲正在播放基本事件流系统自动显示当前歌曲播放时间用例名称当前播放歌曲总时间显示参与者用户目标使得用户可以看到当前播放歌曲的总时间前置条件歌曲正在播放基本事件流系统自动显示当前歌曲播放的总时间用例名称连接数据库参与者用户目标使得用户可以连接MYSQL数据库后获得URL地址并列表形式显示出来前置条件服务器端开启基本事件流点击在线下载连接数据库用例名称在线下载参与者用户目标使得用户可以获得音乐歌曲URL地址后可以进行在线下载前置条件获得数据库的音乐歌曲URL地址后基本事件流点击在线下载按钮进行下载用例名称退出参与者用户目标使得用户可以点击手机的返回键后可以突出播放器界面前置条件程序正运行在基本事件流点击手机的返回键退出212在线下载模块在线下载模块的主要功能是获得数据库中的音乐歌曲的URL地址后,可以实现在线下载的功能。在该模块中,可以显示当前正在下载的音乐歌曲的URL地址,用户可以自定义下载歌曲的名字,用户可以控制下载开始。当用户点击下载后,系统会以对话框的形式提醒用户“歌曲下载中”。并且在该模块中会自动显示SD卡已有的歌曲列表。在线下载下载歌曲的URL显示自定义下载歌曲名称当前SD卡已有歌曲显示下载开始图22在线下载模块功能示意图212数据库模块在数据库模块中用到了MYECLIPSE和MYSQL数据库。在MYECLIPSE端创建了一个名为NETMUSIC的WEB工程,通过编写代码是实现了对MYSQL数据库的增删改查功能。ANDROID可以通过连接服务器实现对MYSQL数据库的访问。服务器ANDROID客户端MYSQL数据库图23数据库模块功能示意图22音乐播放器的实现原理221MEDIAPLAYER介绍MEDIAPLAYER类可以用来播放音频、视频和流媒体,ANDROID的MEDIAPLAYER包含了AUDIO和VIDEO的播放功能,在ANDROID的界面上,MUSIC和VIDEO两个应用程序都是调用MEDIAPLAYER实现的。222MEDIAPLAYER的生命周期图24MEDIAPLAYER的生命周期MEDIAPLAYER类在播放之前要首先进入PREPARED状态,有两种方法可以到达PREPARED状态(异步方法和同步方法)。一旦调用PREPARE方法,MEDIAPLAYER类就进入PREPARED状态,调用PREPAREASYNC方法,直到处于休息状态内部播放组件完成准备工作之前类一直处于PREPARING状态。当准备工作完成或者调用PREPARE时,内部播放组件会调用用户提供的回调方法ONPREPAREDLISTENER接口的ONPREPARED。当调用START方法成功后,MEDIAPLAYER类进入STARTED状态。内部播放组件会调用ONBUFFERINGUPDATELISTENERONBUFFERINGUPDATE回调方法,前提是ONBUFFERINGUPDATELISTENER被事先用SETONBUFFERINGUPDATELISTENERONBUFFERINGUPDATELISTENER注册。这个回调方法允许应用跟踪缓存状态。当调用SEEKTOINT,播放的位置就可以被调整。调用SEEKTOINT时,实际的寻求工作需要一段时间去完成,特别是视频或者是音频正在播放的时候。当实际的寻求工作完成时会调用ONSEEKCOMPLETEONSEEKCOMPLETE,如果ONSEEKCOMPLETELISTENER提前用SETONSEEKCOMPLETELISTENERONSEEKCOMPLETELISTENER注册过。需要注意的是,SEEKTOINT可以在其他的状态调用,例如PREPARED,PAUSEDANDPLAYBACKCOMPLETEDSTOP这些状态。此外,用GETCURRENTPOSITION,方法可以找到当前的播放位置。这个对应用很有帮助,例如音乐播放器需要跟踪播放进度的时候。当播放到达数据流的末尾,播放就完成了。如果循环模式设置了SETLOOPINGTURE,那么MEDIAPLAYER类保持STARTED状态。如果循环模式设置为FALSE,播放组件就会调用ONCOMPLETIONONCOMPLETION,前提是ONCOMPLETIONLISTENER提前用SETONCOMPLETIONLISTENERONCOMPLETIONLISTENER注册过,这时类进入PLAYBACKCOMPLETED状态。当进入PLAYBACKCOMPLETED状态,调用START方法,就会在音频和视频源的开头重新开始播放。223音乐播放器的实现过程本款音乐播放器是基于ANDROID系统而设计,可以实现本地播放音乐和在线下载音乐功能。在播放本地音乐时,通过扫描SD卡上的音乐文件形成音乐列表,当用户选择列表中的某手音乐歌曲时就可以让其开始播放音乐。在本地音乐模块中有音乐歌曲播放时的控制按钮,用户可通过这些按钮实现音乐歌曲的播放、暂停、停止、快进、上一首和下一首等基本操作。而这些操作时调用ANDROID系统中的MEDIAPLAYER类,通过MEDIAPLAYEY类的各种状态从而实现音乐的控制操作。在在线下载模块中,通过连接MYSQL数据库后获得音乐歌曲的URL,并将此URL作为下载地址进行音乐歌曲的下载。当然本设计也用到了服务,从而实现了后台播放音乐的功能。224音乐播放器流程图程序启动播放器启动界面本地音乐播放界面点击进入点击音乐列表是否启动音乐播放开始点击在线下载连接数据库点击下载在线下载界面下载歌曲存入SD卡音乐列表选择歌曲程序结束YYYYYNNNNYNN退出图25音乐播放器流程图23音乐播放器的界面需求播放器要求界面布局合理,背景清晰,24音乐播放器的性能要求根据ANDROID手机系统要求无响应时间为5秒,所以就有如下性能要求(1)当要求歌曲播放时,程序响应时间最长不能超过5秒(2)当要求歌曲暂停时,程序响应时间最长不能超过5秒(3)当要求歌曲停止时,程序响应时间最长不能超过5秒(4)当要求歌曲上/下一首时,程序响应时间最长不能超过5秒(5)当要求进行清单列表时,程序响应时间最长不能超过5秒25运行环境需求操作系统ANDROID手机基于LINUX操作系统支持环境ANDROID233版本开发环境ECLIPSE35ADT1500ANDROIDSDKWINDOWSR15第三章数据库的具体实现过程31数据库简介数据库可以用来存放数据,如存放音乐歌曲的URL地址。本款音乐播放器用到了MYSQL数据库,用户得到音乐歌曲的URL地址后可以在线下载音乐歌曲。在设计中用到了MYECLIPSE,通过编写代码,可以实现对MYSQL数据库的增、删、改、查功能。在实现时MYECLIPSE端加入了连接MYSQL的驱动包,当然也用到TOMCAT服务器。32数据库中的安装过程321MYSQLSERVER安装主要安装过程图31安装欢迎界面图32正在安装中图33注册账号图34选择配置方式图35数据库语言编码设置图36确认设置无误322MYSQLFRONT安装过程图37欢迎界面图38设置数据库名称图39设置数据库端口号图310添加数据库图311本地音乐模块功能图323表的结构表名为MUSIC图312数据库中表的结构33对MYSQL据库进行增删改查的程序代码331向MYSQL数据库增加数据DBACCESSDBACCESSNEWDBACCESSGETSERVLETCONTEXTDBACCESSEXECUTEUPATE“INSERTINTOMUSICVALUESHTTP/MP3JNNCCOM/MUSIC114/FILM/AIQINGMEFASHI/10MP3,HTTP/MP3JNNCCOM/MUSIC114/FILM/AIQINGMEFASHI/10MP3,HTTP/MP3JNNCCOM/MUSIC114/FILM/AIQINGMEFASHI/10MP3“OUTFLUSHOUTCLOSEPUBLICVOIDDOPOSTHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSSERVLETEXCEPTION,IOEXCEPTIONDOGETREQUEST,RESPONSE332删除MYSQL数据库中的数据NEWDBACCESSGETSERVLETCONTEXTEXECUTEUPATE“DELETEFROMMUSICWHEREAD1“OUTCLOSEPUBLICVOIDDOPOSTHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSSERVLETEXCEPTION,IOEXCEPTIONDOGETREQUEST,RESPONSE332更新MYSQL数据库中的数据INTINEWDBACCESSGETSERVLETCONTEXTEXECUTEUPATE“UPDATENUSICSETAD1,AD2WHEREAD3“,AD1,AD2,AD3IFI0OUTPRINT“成功“ELSEOUTPRINT“失败“OUTCLOSEPUBLICVOIDDOPOSTHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSSERVLETEXCEPTION,IOEXCEPTIONDOGETREQUEST,RESPONSE332查询MYSQL数据库中的数据LISTLISTNEWDBACCESSGETSERVLETCONTEXTEXECUTEQUERY“SELECTFROMMUSIC“ITERATORITERATORLISTITERATORWHILEITERATORHASNEXTMAPMAPMAPITERATORNEXTFORINTI0I“OUTCLOSEPUBLICVOIDDOPOSTHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSSERVLETEXCEPTION,IOEXCEPTIONDOGETREQUEST,RESPONSE第四章ANDROID项目介绍41什么是ANDROID411ANDROID简介ANDROID是一种以LINUX为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。ANDROID操作系统最初由ANDYRUBIN开发,最初主要支持手机。2005年由GOOGLE收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。ANDROID的主要竞争对手是苹果公司的IOS以及RIM的BLACKBERRYOS。2011年第一季度,ANDROID在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,ANDROID占据全球智能手机操作系统市场525的份额,中国市场占有率为684。412ANDROIDFEATURES特性ANDROID系统有如下的几大特性应用程序框架支持组件的重用与替换DALVIK虚拟机专门为移动设备做了优化内部集成浏览器该浏览器基于开源的WEBKIT引擎优化的图形库包括2D和3D图形库,3D图形库基于OPENGLESSQLITE用作结构化的数据存储多媒体支持包括常见的音频、视频和静态印象文件格式(如MPEG4,H264,MP3,AAC,AMR,JPG,PNG,GIF)GSM电话(依赖于硬件)蓝牙BLUETOOTH,EDGE,3G,ANDWIFI(依赖于硬件)照相机,GPS,指南针,和加速度计(依赖于硬件)丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和ECLIPSE集成开发环境插件413ANDROID基本框架(ANDROIDARCHITECTURE)图41ANDROIDARCHITECTURE1APPLICATIONSAPPLICATIONANDROID会同一个核心应用程序包一起发布,该应用程序包包括EMAIL客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的。2APPLICATIONFRAMEWORK开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组建可以被用户替换。所有的应用程序都由一系列的服务和系统组成,包括可扩展的视图(VIEWS)可以用来建应用程序,包括列表(LISTS),网格(GRIDS),文本框(TEXTBOXES),按钮(BUTTONS),甚至包括一个可嵌入的WEB浏览器内容管理器(CONTENTPROVIDERS)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。资源管理器(RESOURCEMANAGER)提供非代码资源的访问,如本地字符串,图形,和分层文件(LAYOUTFILES)。通知管理器(NOTIFICATIONMANAGER)使得应用程序可以在状态栏中显示客户通知信息。活动类管理器(ACTIVITYMANAGER)用来管理应用程序生命周期并提供常用的导航回退功能。3LIBRARIES库ANDROID包括一个被ANDROID系统中各种不同组件所使用的C/C库集。该库通过ANDROID应用程序框架为开发者提供服务。以下是一些主要的核心库系统C库一个从BSD继承来的标准C系统函数库(LIBC),专门为基于EMBEDDEDLINUX的设备定制。媒体库基于PACKETVIDEOOPENCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态印像文件包括MPEG4,H264,MP3,AAC,AMR,JPG,PNG。SURFACEMANAGER对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。LIBWEBCORE一个最新的WEB浏览器引擎用来支持ANDROID浏览器和一个可嵌入的WEB视图。SGL一个内置的2D图形引擎3DLIBRARIES基于OPENGLES10APIS实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。FREETYPE位图(BITMAP)和向量(VECTOR)字体显示。SQLITE一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。4ANDROIDRUNTIMEANDROID包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个ANDROID应用程序都在它自己的进程中运行,都拥有一个独立的DALVIK虚拟机实例。DALVIK是针对于同时高效地运行多个VMS来实现的。DALVIK虚拟机执行DEX的DALVIK可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的DX工具转化成DEX格式由虚拟机执行。DALVIK虚拟机依赖于LINUX的一些功能,比如线程机制和底层内存管理机制。5LINUX内核ANDROID的核心系统服务依赖于LINUX26内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。LINUX内核也同时作为硬件和软件堆栈之间的硬件抽象层。未来发展老牌智能手机软件平台制造商SYMBIAN发言人则表示GOOGLE的ANDROID只不过是另一个LINUX,SYMBIAN对其它软件与其形成的竞争并不感到担心。除了北美之外,SYMBIAN在其它地区智能手机市场都占有大部分市场份额。与IPHONE相似,ANDROID采用WEBKIT浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比IPHONE等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部WEB应用的单一平台。但其最震撼人心之处在于ANDROID手机系统的开放性和服务免费。ANDROID是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了IPHONE等只能添加为数不多的固定软件的枷锁;同时与WINDOWSMOBILE、SYMBIAN等厂商不同,ANDROID操作系统免费向开发人员提供,这样可节省近三成成本。ANDROID项目目前正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持。414ANDROID系统的四大组件在ANDROID系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像ACTIVITY,CONTENTPROVIDER是可见的视图,SERVICE和BROADCASTRECEIVER是不可见的,它们只在系统的后台运行。下面分别介绍四大组件1ACTIVITY简介ANDROID中,ACTIVITY是所有程序的根本,所有程序的流程都运行在ACTIVITY之中,ACTIVITY可以算是开发者遇到的最频繁,也是ANDROID当中最基本的模块之一。在ANDROID的程序当中,ACTIVITY一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么ACITIVITY就相当于一个网页。在ACTIVITY当中可以添加一些BUTTON、CHECKBOX等控件。可以看到ACTIVITY概念和网页的概念相当类似。一般一个ANDROID应用是由多个ACTIVITY组成的。这多个ACTIVITY之间可以进行相互跳转,例如,按下一个BUTTON按钮后,可能会跳转到其他的ACTIVITY。和网页跳转稍微有些不一样的是,ACTIVITY之间的跳转有可能返回值,例如,从ACTIVITYA跳转到ACTIVITYB,那么当ACTIVITYB运行结束的时候,有可能会给ACTIVITYA一个返回值。这样做在很多时候是相当方便的。当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。我们可以选择性的移除一些没有必要保留的屏幕,因为ANDROID会把每个应用的开始到当前的每一个屏幕保存在堆栈中。ACTIVITY是由ANDROID系统进行维护的,它也有自己的生命周期,即它的一个产生、运行、销毁的一个周期,对于ACTIVITY,关键是其生命周期的把握,其次就是状态的保存和恢复(ONSAVEINSTANCESTATEONRESTOREINSTANCESTATE),以及ACTIVITY之间的跳转和数据传输(INTENT)。(2)SERVICE简介SERVICE是ANDROID系统中的一种组件,它跟ACTIVITY的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。SERVICE是没有界面的长生命周期的代码。SERVICE是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,我们来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,我们打开ANDROID浏览器,这个时候虽然我们已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的SERVICE进行控制。当然这个播放音乐的SERVICE也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。SERVICE可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他ACTIVITY这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。开启SERVICE有两种方式1CONTEXTSTARTSERVICESERVICE会经历ONCREATEONSTART(如果SERVICE还没有运行,则ANDROID先调用ONCREATE然后调用ONSTART;如果SERVICE已经运行,则只调用ONSTART,所以一个SERVICE的ONSTART方法可能会重复调用多次);STOPSERVICE的时候直接ONDESTROY,如果是调用者自己直接退出而没有调用STOPSERVICE的话,SERVICE会一直在后台运行。该SERVICE的调用者再启动起来后可以通过STOPSERVICE关闭SERVICE。注意,多次调用CONTEXTSTARTSERVICE不会嵌套(即使会有相应的ONSTART方法被调用),所以无论同一个服务被启动了多少次,一旦调用CONTEXTSTOPSERVICE或者STOPSELF,他都会被停止。补充说明传递给STARTSERVICE的INTENT对象会传递给ONSTART方法。调用顺序为ONCREATEONSTART可多次调用ONDESTROY。2CONTEXTBINDSERVICESERVICE会经历ONCREATEONBIND,ONBIND将返回给客户端一个IBIND接口实例,IBIND允许客户端回调服务的方法,比如得到SERVICE运行的状态或其他操作。这个时候把调用者(CONTEXT,例如ACTIVITY)会和SERVICE绑定在一起,CONTEXT退出了,SREVICE就会调用ONUNBINDONDESTROYED相应退出,所谓绑定在一起就共存亡了。(3)BROADCASTRECEIVER简介在ANDROID中,BROADCAST是一种广泛运用的在应用程序之间传输信息的机制。而BROADCASTRECEIVER是对发送出来的BROADCAST进行过滤接受并响应的一类组件。可以使用BROADCASTRECEIVER来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BROADCASTRECEIVER进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BROADCASTRECEIVER进行处理。BROADCASTRECEIVER不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BROADCASTRECEIVER通过NOTIFICATIONMANAGER来通知用户这些事情发生了。BROADCASTRECEIVER既可以在ANDROIDMANIFESTXML中注册,也可以在运行时的代码中使用CONTEXTREGISTERRECEIVER进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用CONTEXTSENDBROADCAST将它们自己的INTENTBROADCASTS广播给其他应用程序。(4)CONTENTPROVIDER简介CONTENTPROVIDER,听着就和数据相关,没错,这就是ANDROID提供的第三方应用数据的访问方案。在ANDROID中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的,但有时候,沟通是必要的,不仅对第三方很重要,对应用自己也很重要。ANDORID当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是CONTENTPROVIDER。应用想对外提供的数据,可以通过派生CONTENTPROVIDER类,封装成一枚CONTENTPROVIDER,每个CONTENTPROVIDER都用一个URI作为独立的标识,形如CONTENT/COMXXXXX。所有东西看着像REST的样子,但实际上,它比REST更为灵活。和REST类似,URI也可以有两种类型,一种是带ID的,另一种是列表的,但实现者不需要按照这个模式来做,给你ID的URI你也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。另外,CONTENTPROVIDER不和REST一样只有URI可用,还可以接受PROJECTION,SELECTION,ORDERBY等参数,这样,就可以像数据库那样进行投影,选择和排序。查询到的结果,以CURSOR(参见REFERENCE/ANDROID/DATABASE/CURSORHTML)的形式进行返回,调用者可以移动CURSOR来访问各列的数据。CONTENTPROVIDER屏蔽了内部数据的存储细节,向外提供了上述统一的接口模型,这样的抽象层次,大大简化了上层应用的书写,也对数据的整合提供了更方便的途径。CONTENTPROVIDER内部,常用数据库来实现,ANDROID提供了强大的SQLITE支持,但很多时候,你也可以封装文件或其他混合的数据。在ANDROID中,CONTENTRESOLVER是用来发起CONTENTPROVIDER的定位和访问的。不过它仅提供了同步访问的CONTENTPROVIDER的接口。但通常,CONTENTPROVIDER需要访问的可能是数据库等大数据源,效率上不足够快,会导致调用线程的拥塞。因此ANDROID提供了一个ASYNCQUERYHANDLER(参见REFERENCE/ANDROID/CONTENT/ASYNCQUERYHANDLERHTML),帮助进行异步访问CONTENTPROVIDER。在各大组件中,SERVICE和CONTENTPROVIDER都是那种需要持续访问的。SERVICE如果是一个耗时的场景,往往会提供异步访问的接口,而CONTENTPROVIDER不论效率如何,都提供的是约定的同步访问接口。我想这遵循的就是场景导向设计的原则,因为CONTENTPROVIDER仅是提供数据访问的,它不能确信具体的使用场景如何,会怎样使用它的数据;而相比之下,SERVICE包含的逻辑更复杂更完整,可以抉择大部分时候使用某接口的场景,从而确定最贴切的接口是同步还是异步,简化了上层调用的逻辑。42搭建ANDROID开发环境任何事物要运行,都要有它的环境,ANDROID也有它的环境才能够运行,下面介绍ANDROID的开发环境配置搭建开发环境需要的软件1操作系统WINDOWSXP或LINUX2软件包ANDROIDSDKSOFTWAREDEVELOPMENTKITJAVADEVELOPMENTKIT、ADTANDROIDDEVELOOPMENTTOOL3IDE环境ECLIPSEIDEADTECLIPSE33以上4JDKJAVARUNTIMEENVIRONMENT虚拟机、JDKJAVADEVELOPMENTKIT安装步骤如下第一步安装JAVA虚拟机SUNJAVA6JDK版本第二步安装ECLIPSE35工具官网HTTP/WWWECLIPSEORG/DOWNLOADS/选择版本(图42)进行安装图42第三步安装ANDROIDSDK首先要下载SDK,可以在这个网址下载HTTP/DEVELOPERANDROIDCOM/SDK,选择相应的系统进行安装图43第四步安装ANDROIDADT插件运行ECLIPSE,选择HELPINSTALLNEWSOFTWARE选择ADD,将会弹出一个框图44点击OK,选择要安装的软件,占NEXT,然后选择接受协议,直到安装成功,重启ECLIPSE软件,设置ANDROIDSDKHOME,WINDOWREFRENCE图45在SDKLOCATION中输入SDKTOOLS路径DANDROIDSOFTWAREANDROIDSDKWINDOWS点击OK这样ANDROID环境就已经搭建成功了。43ANDROID常用工具的使用431命令行的使用创建ANDROIDVIRTUALDEVICES(AVD)使用ANDROIDLISTTARGET命令列出当前可用的SDK版本ANDROIDCREATEAVDNT模拟器(EMULATOR)的使用启动和停止模拟器EMULATORAVDANDROIDDEBUGBRIDGEADB的使用查询当前模拟器实例数量ADBDEVICES本地机器和模拟器之间相互拷贝文件DADBPUSHDTESTTXT/SDCARD/DADBPULL/SDCARD/TESTTXTD/安装APK应用程序ADBPUSHDTESTAPK/SDCARD/ADBINSTALLTESTAPK使用SHELL命令在DOS命令行输入ADBSHELL便进入SHELL命令行了可以使用EXIT退出SHELL432DALVIKDEBUGMONITORSERVICEDDMS的使用在DOS命令窗口,输入DDMS会弹出如下图所示界面,ANDROID编辑工具的可视化界面图46图4644ANDROID音乐播放器的工程441ANDROID项目ANDROID的四大基本组件ACTIVITY活动,SERVICE服务,BROADCASTRECEIVER广播,CONTENTPROVIDER内容提供者,各组件之间要进行切换需要一个意图或企图INTENT类,通过启动STARTINTENT方法来使各组件进行跳转ANDROID的五大布局方式LINEARLAYOUT线性布局FRAMELAYOUT帧布局TABLELAYOUT表格布局ABSOLUTELAYOUT绝对布局RELATIVELAYOUT相对布局五种布局方式可以相互嵌套,ANDROID各种漂亮的界面都是通过嵌套布局而实现的。ANDROID的线程,以及线程之间通信的中介HANDLER类ANDROID数据库在第三章已经介绍过了。这里不再介绍ANDROID配置文件ANDROIDMANIFESTXML及RES资源文件中各种属性布局方式引用的资源等ANDROID系统将插件ADT集成到了ECLIPSE工具上,因此,一个ANDROID程序启动后,系统会启动一个模拟器(EMULATOR)图47),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定,目前最大支持800X600的分辨率。图47ANDROID模拟器442ANDROID工程程序结构ANDROID工程基本结构目录包括SRC源代码、GEN(ANDROID系统自动生成的常量)、RES(资源文件)主要存放程序界面的布局配置(XML)文件和图片资源。ANDROIDMAINFESXML是四大组件的驱动配置文件,有它的存在,ANDROID程序的四大组件才可以正常的跳转。ANDROID资源的类型和布局(图47)图47下图481图485为音乐播放器代码结构和各界面的配置文件,图像资源等,图481为一个ANDROID工程所必须的结构,图482为该播放器的JAVA文件,图483为该播放器的各种界面的布局配置文件,图485为该播放器的图片资源。图481图482图484图484443ANDROIDMANIFESTXML文件ANDROID系统的任何一个程序启动都需要ANDROIDMANIFESTXML来启动程序,任何一个新建的工程目录都会自动生成一个ANDROIDMANIFESTXML文件,此配置文件是整个程序能够正常运行的核心,它里面包含了ANDROIDSDK的版本,程序运行的默认ACTIVITY,当程序中的任何一个组件触发事件后,系统都会自动的去ANDROIDMANIFESTXML中寻找标识来作出相应的操作。任何一个ANDROIDMANIFESTXML文件的格式都应为ANDROID系统有一个编码的规定,支持的编码是“UTF8“,当程序中出现乱码是,我们须将其编码格式转化为“UTF8“在ANDROIDMANIFESTXML中会在第一行声明一句。它是该系统支持的版本和编码。在第二行定义了我们需要使用的架构,该架构来自XMLNSANDROID“HTTP/SCHEMASANDROIDCOM/APK/RES/ANDROID“XMLNSXMLNAMESPACE是一个命名空间,它就像一条河的源头一样能让我们找到系统架构,每一个配置文件必须有这个XMLNS,否则程序中的所使用的所有资源将无法找到。在APPLICATION元素我们定义ANDROIDICON“DRAWABLE/ICON“ANDROIDLABEL“STRING/APP_NAME“,ANDROIDICON是程序在手机中显示的图片,我们运用DRAWABLE/ICON表示了对RES/DRAWABLE目录下的ICONPNG的引用。STRING/APP_NAME表示了对RES/VALUE目录下STRINGXML中定义的APP_NAME参数的引用。这是系统确定的首先要启动的ACTIVITY是MUSICBACKGROUNDACTIVITY。在INTENTFILTER选项中,有ACTION和CATEGORY等等属性,我们需要定义A

温馨提示

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

评论

0/150

提交评论