




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Android的图片阅读器的设计与实现摘要随着4G时代的到来以及公共场所WiFi越来越普及,以网络通信为主流功能的移动终端设备包括智能手机已经随处可见,而Android系统作为最流行、开放性最强的手机操作系统给用户带来了新的应用体验,也给移动软件开发者带来了新的发展机会,以Android为平台的应用程序软件越来越多。本文即是依靠Android有关的技术来进行开发和研究。本系统使用JAVA和AndroidSDK(SoftwareDevelopmentKit)开发,其中AndroidSDK主要是以Java语言为基础,包含了在Android平台上开发移动应用的各种工具集。用户可以使用Java语言来开发Android平台上的软件应用。采用Eclipse+ADT(AndroidDevelopmentTools)作为开发工具,在Android手机模拟器和Android手机真机上测试运行。该图片阅读器的设计使用了模块化的方法,同一模块实现了高内聚,不同模块之间实现了低耦合。把整个系统划分为不同的功能模块,安装不同的功能模块,进行详细设计,然后进行编码开发。该图像阅读器的设计和实现,在模拟器的实验中,取得了比较不错的结果,各方面性能表现良好。较好的实现了对SD卡上的图片进行扫描显示;在放缩图片、旋转图片、删除图片以及图片详细信息的获取等方面取得了不小的进步。这些都表明本文的工作是有意义的。关键词:图片阅读器;Android手机;JAVA;Eclipse+ADTiBasedontheAndroidtheDesignandImplementationofthePictureReadAbstractWiththeadventoftheeraof4gandWiFiinpublicplacesismoreandmorepopular,withfunctionofnetworkcommunicationforthemainstreammobiledevicesincludingsmartphoneshaveeverywhere,theAndroidsystemasthemostpopularmobileoperatingsystem,openthestrongestbroughtnewapplicationtotheuserexperience,andalsobroughtnewdevelopmentopportunitiesformobilesoftwaredevelopers,moreandmoreapplicationsoftwarebasedonAndroidplatform.ThisarticleistorelyonAndroidforstudyingthedevelopmentandrelatedtechnology.ThissystemusesJAVAandAndroidSDK(SoftwareDevelopmentKit)Development,includingtheAndroidSDKismainlybasedonJAVAlanguage,includesamobileapplicationontheAndroidplatformDevelopmentsetoftools.UserscanusetheJavalanguagetodevelopsoftwareapplicationsontheAndroidplatform.UsingtheEclipseADT+(AndroidDevelopmentTools)asaDevelopmenttool,theAndroidemulatorwithAndroidmobilephonerealmachinetestrun.TheimagereaderdesignUSESthemodularapproach,thesamemoduleimplementsthehighcohesion,realizedthelowcouplingbetweendifferentmodules.Thewholesystemisdividedintodifferentfunctionalmodules,theinstallationofdifferentfunctionmodules,detaileddesign,codinganddevelopment.Designandtheimplementationoftheimageofthereader,inasimulatorexperiment,hasachievedfairlygoodresults,goodperformanceinallrespects.BetterimplementthescannedpictureofSDcard;Inscale,rotatingpictures,deletepicturesandimagesdetailedinformationretrievalhasmadebigprogress.Allthissuggeststhattheworkofthispaperismeaningful.Keyword:Picturereader;AndroidPhone;JAVA;Eclipse+ADTii目录摘要.iAbstract.ii1绪论.11.1课题的研究背景.11.2课题的研究意义.11.3课题设计目标.12关键技术平台与理论介绍.32.1ANDROID平台简介和特点.32.2Android应用的构成和工作机制.52.3开发环境的搭建.72.3.1安装并配置JDK安装Eclipse.72.3.3安装并配置AndroidSDK.72.3.4安装ADT.72.4安卓应用程序的结构解析.82.4.1Activities.82.4.2Service.102.4.3ContentProvider.113需求分析和可行性研究.123.1问题的定义.123.2需求分析.123.2.1需求分析的过程.123.2.2需求分析的方法.123.2.3本软件研究方法.133.3可行性分析.143.3.1经济可行性.143.3.2技术可行性.143.3.3操作可行性.143.3.4法律可行性.154系统概要设计.164.1系统的功能模块说明.164.2系统的功能模块结构图.164.3业务流分析.185系统的详细设计.205.1系统主要功能界面的设计和实现.205.1.1对SD卡图片文件的扫描.205.1.2图片存储目录.245.1.3图片预览.255.1.4单张图片显示.275.2系统任务界面的设计.29iii5.2.1幻灯片播放.295.2.2旋转图片.305.2.3缩放处理.325.2.4图片的详细信息.345.2.5图片的删除操作.376软件测试.396.1软件测试描述.396.2系统功能测试.407总结.41参考文献.42致谢.43外文原文.44中文翻译.5401绪论智能手机应用软件是近年来十分活跃的技术研究领域,是一系列高新技术的汇集,往往指以移动互联网为传输媒介,以运营商服务器和用户计算机为处理终端,以手机应用软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的应用软件这些技术包括计算机图形学、多媒体技术、人工智能、人机接口技术、传感技术以及高度并行的实时计算技术,还包括人的行为学研究等多项关键技术。除此之外特别是个人版的智能手机应用软件,如图片阅读器软件,是个简单的应用软件,但却能给人以重大帮助,让我们从繁锁的图片中解脱出来.而只有我们的身心得到了解脱才能更好的投入到新的工作.现在的人,不管是已经工作的,还是还未进入社会的学生,都喜欢在吃饭前对美食拍照、旅游时对大自然瑰丽的风景拍照还有随时随地的自拍,面对大量照片需要整理有着很大的厌倦,而这样一款能让我们方便整理照片的应用软件,其魅力还是不可估量的。1.1课题的研究背景Google在2007年11月正式推出,基于Linux的Android移动终端操作系统,从那时起Android平台越来越受人们所关注,由于Android是一个真正开放开源的平台,故而开发者都可以使用Android平台开发程序,使得其平台上应用软件与日剧增。除了Android自身内嵌的应用之外,也有一些其他应用软件,伴随着4G时代的来临,无线宽带网络覆盖越来越广,无线上网速度也越来越快,智能手机的主流功能正逐渐转变为以网络通信为主,用户也更倾向于手机应用的体验。为了满足用户在Android上浏览本地图片的需求,也结合上述的一系列分析和研究,本人决定开发一个基于Android平台的图片阅读器的应用客户端软件。1.2课题的研究意义目前市场上安卓平台占有率在20%左右,使用安卓手机的人数如此众多,所以在安卓平台上开发手机应用软件是比较有意义的。借助Android系统的全触摸的形式,用户可以用手指简单的滑动、点击本地图片,能够方便实现对本地图片和SD卡的加载、分类显示、浏览、旋转处理和缩放操作,方便用户对手机本地图片的整理,从而增强用户体验和易用性。手机应用软件的盈利空间非常大,无论是下载时收取一定费用,还是通过广告盈利都是非常可行的。手机应用软件的开发与传统PC机的应用软件开发有一定差距,因为手机平台资源有限,所以开发时要处处考虑资源分配问题。而且,手机已经和现代生活方式紧紧结合在一起,可以说是随身必带品。所以手机应用软件的盈利面因为手机的覆盖率而变得非常广。1.3课题设计目标易于操作性:既然手机应用软件面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习手机应用软件操作技巧。手机应用软件操作的简单性是开发过程中必须要遵循的基本特征。良好的用户界面:良好的用户界面用户界面更是吸引用户的硬指标。相关的美术构图、系统实时性和人性化提示也是必须要考虑的。可中断性:多任务处理是手机生活方式的基本特征。手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。而游戏、通讯和工作数据访问使用的是同一个设备。所以一个好的手机应用软件应该提供短时间的娱乐功能,并且允许用户在手机应用软件提醒模式和工作模式之间顺利切换。所以在手机应用软件的服务过程1中,如果遇到来电或接受到短信这样的优先级最高的进程,要能够保存手机应用软件进程,保证接完来电或查看短信之后还可以继续正常工作。所以,在设计过程中,要特别注意这几个方面的功能,使该系统更加完善。22关键技术平台与理论介绍2.1ANDROID平台简介和特点Android操作系统是与WindowsMobile、iPhone等手机操作系统处在同一级别的操作系统,是Google公司在2007年11月发布的基于Linux核心的手机操作系统,是真正开放和开源的移动平台操作系统。Android是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构。由下而上,其核心为嵌入式Linux2.6作业系统,向上搭配Google为Android开发的类库及Android运行时,再配合应用程序架构,来开发各种不同的应用程序。Android包含的功能非常强大和完善,有很好的应用环境和用户体验,当然也有很多的应用接口,在Android平台上,开发者可以随意开发出各式各样的应用,因而以Android为平台的应用程序越来越多。Android操作系统是第一个全部包含下列全部特点的平台环境,下列列出的功能只是一些平台具有的部分功能:(1)Android是一个基于Linux核心和开源的真正完全开放、自由的开发平台,移动手机制造企业当然可以不用像其他操作系统那样,交付Android操作系统的专利费用才能使用和定制Android平台;软件开发者也不用担心Android会突然由于某个厂商的倒闭或被收购而突然消失。开发者自己就可以设计、整合、扩展甚至可以替换现存的一些组件,Android也没有隐藏或者设置权限的框架API。因此加入到Android开发社区来共同改善和维护Android的开发者越来越多,在当下成为最为火热的手机操作系统。也正因为如此,在Android平台上应用程序与日剧增。(2)Android组件的架构是采用Internetmashups。最初的时候一个应用程序是不可以被另一个程序用不同的方式使用的;但是后来随着平台不断的发展出现了变化,一个应用程序的可以用不同的方式被另一个程序使用部分功能,这超出了程序员最初的预料。不同的用户完全可以用自己开发不断改善的版本替换一个已经存在的内嵌组件,这样的结果是解除了在移动手机开发上的开发者创新能力的束缚。(3)应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。(4)Dalvik虚拟机器:在Android平台上所使用Java虚拟机,不是Sim公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。(5)Android自身内嵌了大量的应用服务。集成的浏览器:集成的浏览器是Android内建的浏览器,是以WebKit的浏览引擎为基础所开发成的。WedKit是一个开源浏览器网页排版引擎,目前使用WebKit引擎的浏览器主要有:Safari,Midori,Epiphany等。配合Android手机的功能,可以在浏览网页时,达到更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果。优化的绘图能力:在程序里可以用到的绘图功能分为2D与3D两个方面。在2D方面,Android提供了一套特有的类库(SGL;而在3D方面则是使用OpenGLES1.0(openGLforEmbeddedsystems)规范的类库。它们是一种非常快的图形引擎,并且支持硬件加速。SQLite数据库:SQLite提供结构化的数据存取。SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如php,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持3数据库大小至2TB。它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。同时它还支持事务功能和并发处理等等。SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。多媒体的支持能力:主要用于播放媒体文件。这同时包括对音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址”(Note:URI即是统一资源识别地址)模式在网络上直接播放的流媒体。另外支持各种通用的静态图像格式,例如:JPG、PNG、GIF等格式。GSM技术:GlobalSystemforMobileCommunications,即全球移动通讯系统,俗称”全球通”,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM技术是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。蓝牙、EDGE、3G及Wi-Fi:蓝牙是一种新型、开放、低成本、短距离的无线连接技术,可取代短距离的电缆,实现话音和数据的无线传输。EDGE(EnhancedDataRateforGSM,Evolution),即增强型数据速率GSM演进技术。EDGE是一种从GSM到3G的过渡技术,它主要是在GSM系统中采用了一种新的调制方法,即最先进的多时隙操作和SPSK调制技术。由于8PSK可将现有GSM网络采用的GMSK调制技术的信号空间从2扩展到8,从而使每个符号所包含的信息是原来的4倍。Wi-Fi(WirelessFidelity),即无线保真技术,与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。该技术使用的是2.4GHz附近的频段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别是IEEE802.lla和IEEE802.11b。这些通讯能力也是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。GPS:GlobalPositioningSystem,即全球定位系统,它是一个由覆盖全球的24颗卫星组成的卫星系统。这个系统可以保证在任意时刻和任何地点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人。这个同样也是属于手机硬体方面的体现,也是在开发Android应用程序是可以突出的特点之一。(6)操作系统可以自动管理Android应用程序的生命周期,每个应用程序被很多的不同的安全层相互隔离,这样就使得现在的系统稳定性比以前的智能手机更加稳健,终端用户再也不用担心应用程序是否一直活动占用内用,而影响其他应用程序的运行,或者只有关闭一些应用程序才能使得其他的应用程序可以运行。Android还针对电力供应较弱,持续时间较短、存储容量小的设备专门作了一系列的优化。(7)可移植性好。大部分当前和将来的硬件都被覆盖了,因为Android上所有的程序都是用java编写,然后在Android的Dalvik虚拟机上运行,所以用户编写的代码可以移植到ARM、x86和其他架构上。支持多种输入设备,其中包括键盘、触屏和滚动球,用户接口可以很好的适应各种分辨率和方位。2.2Android应用的构成和工作机制对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidManifest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。Android应用的构成和工作流程如图2-1:4图2-1Android的构成和工作流程图2-2Android的构成和工作流程在AndroidSDK中,定义了让开发者使用与核心应用程序相同API的权限应用程序框架是为了要简化组件的重新利用而设计的,应用程序可以发布功能为其它应用程序所使用。但是,这要受限于应用程序架构的安全机制,使用者以用同样的机制来新增、置换组件。目前所有的应用程序是由服务及系统来组成,包含有:(l)一套强大和可扩展的视图系统:用来建构一个应用程序的基本组件,包了在开发系统画面时,常用的列表、网格、文本框、按钮等控制项,甚至是内嵌的Web浏览器。(2)内容提供者:使应用程序可以访问另一个应用程序的数据(如联系人数库),或者共享它们自己的数据。(3)资源管理器:提供各种非程序代码的资源让应用程序去使用。例如:本字符串、图形文件或排版相关的布局文件。(4)通知管理器:提供应用程序在状态栏中显示应用程序自定义的提示信息。(5)活动管理器:管理所有应用程序的生命周期及提供常用的导航回退功能。例如:启动应用程序要用到的资源准备及关闭应用程序时释放内存及相关资源等工作。5(6)视窗管理器:用来管理所有启动程序的视窗。(7)位置管理器:用来管理地图服务的相关功能。(8)电话管理器:用来管理用户拨打与接听电话的相关功能。(9)包管理器:管理所有安装在Android系统内的包。在Android中包含一些C/C+的类库,这些类库能被Android系统中不同的组件来使用。开发者可以通过应用程序框架使用这些功能。部分核心类库列表如下:(1)surfaceManager:主要的功能是让开发者可以去存取/显示系统及管理的功能,在显示与存取操作间的对应、互动以及实现无接缝的2D/3D多应用程序之间的整合。例如:在2D、2D显示上的合成、叠合动作。(2)3Dlibraries:主要是依openGLES1.0规范所定义的3D绘图引擎。该库使用硬件加速(当硬件可用时),可以将硬件的3D功能做最佳化的处理显示。(3)SGL:主要是处理有关显示2D方面的绘图引擎。(4)MediaFramework:主要是以packetVideo公司的OpenCORE为基础所发展的多媒体类库,该库支持回放和录制大量流行的音视频格式和静态图片。例如:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式(5)FreeType:主要是用来显示点阵图和处理向量字形的。(6)SSL:(secureSocketsuyer),中文名为“安全套接层协议层”,它是网景公司提出的基于WEB应用的安全协议,当前版本为3.0。SSL协议指定了一种在应用程序协议(如HTTP、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP胆协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSLRecordProtocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSLHandshakeprotocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL协议提供的服务主要有:认证用户和服务器,确保数据发送到正确的客户机和服务器;加密数据以防止数据中途被窃取;维护数据的完整性,确保数据在传输过程中不被改变。(7)SQLite:SQLite是一套开放性的关联式资料库,能够被所有应用程序使用的轻量级的关系数据库引擎。(8)webKit:是一个先进的网页浏览器引擎,被用来构建Android浏览器和内嵌的web视图,也可以让开发者利用这个引擎来做不同的应用。(9)libc:就是一个BSD标准C类库。但是,针对Linux嵌入式装置进行过最佳化的调整。虽然Android是用Java语言来开发、撰写应用程序,但却不使用Java运行时组件来执行Java程序,而是使用了由Google自行研发的Android运行时组件来执行程序。Android运行时组件包括两个重要的部分,一个是核心类库,另一个是Dalvik虚拟机。2.3开发环境的搭建2.3.1安装并配置JDK6首先需要的是JDK。AndroidSDK需要JDK5或更高的版本,我们使用JDK6来开发。以windows为例,从Sun网站(/javase/downloads/)下载JDK6并安装。6接下来,设置JAVA_HOME环境变量以指向JDK安装文件夹。右键单击“计算机”选择“属性”,选择“高级系统设置”,然后单击“环境变量”。单击“新建”添加JAVA_HOME变量,如果该变量已存在,单击“编辑”修改它。JAVA_HOME的值类似于“C:ProgramFilesJavajdk1.6.0_16”。2.3.2安装Eclipse安装JDK之后,可以从/downloads/下载EclipseIDEforJavaDevelopers。将下载的.zip的文件解压到任何位置。首次启动Eclipse时,它将要求为工作区间提供一个位置。为了简化操作,可以选择一个简单的位置,比如D:workspaces。2.3.3安装并配置AndroidSDKAndroidSDK是开发android应用程序的基本要求,没有AndroidSDK,android应用开发无从谈起。AndroidSDK中包含一个模拟器,所以无需带有Android操作系统的移动设备就能开发Android应用程序。AndroidSDK可以从/sdk下载。AndroidSDK同eclipse一样以.zip文件的形式发布,所以将其解压到合适的位置。AndroidSDK包含一个tools目录,需要将它添加到PATH中。2.3.4安装ADTADT这个Eclipse插件对开发Android应用程序有很大的帮助。它提供了一些工具来创建、测试、和调试Android应用程序。ADT需要使用Eclipse中的InstallNewSoftware工具来执行安装。(1)选择Help菜单项并选择InstallNewSoftware选项。这个选项在以前的Eclipse版本中为“SoftwareUpdates”。(2)选择“Workwith”字段,输/android/eclipse/。Eclipse将连接该网站并生成列表,如图2-3所示。然后选择父节点DeveloperTools,并确认同事选中所有子节点,然后单击Next。(3)更具提示安装所有的工具,并安装ADT所需工具的许可协议。单击“Iaccept”,然后单击Finish按钮。7图2-3使用Eclipse中的InstallNewSoftware功能安装ADT在Eclipse中安装ADT的最后一步是将他指向AndroidSDK。选择windows菜单并选择Preferences。在Preferences对话框中,选择Android节点并将SDKLocation字段设置为AndroidSDK的路径(参见图3-2)然后单击Apply按钮。2.4安卓应用程序的结构解析通常由以下四个组件来构建一个完整的Android应用程序。活动意图接收器服务内容提供者2.4.1Activities然而,并不是所有的Android应用程序都必须具备上面的四个组件,可以由上面的一个或几个来组建。当决定使用以上哪些组件来构建Android应用程序时,需要将它们注册在AndroidManifest.xml文件中,这是一个XML配置文件,在这个文件中可以声明应用程序组件以及它们的特性和要求。这个配置文件是每个Android应用程序所必需的。Activities是一个程序的组件之一。它的主要功能是提供界面。一个程序一般8由多个Activity组成,各activities之间关系很松散,它们之间没有直接的关联。必须有一个activity被指定为主activity,它是程序启动时首先显示的界面。每个activity都可以随意启动其它的activity。每当一个activity被启动,则前一个activity就被停止。一个程序中的所有启动的activity都被放在一个栈中,所以被停止的activity并没有销毁,而在存于棧中。新启动的activity先被存放于栈中,然后获得输入焦点。在当前活动的activity上点返回键,它被从棧中取出,然后销毁,然后上一个activity被恢复。当一个activity因为新的activity启动而被停止时,它会收到状态变化的通知,这样的变化有多个,每个都会引起系统调用一个相应的回调方法以通知activity,这些回调方法被统称为“生命周期回调方法”。这些回调方法分别在Activity被创建、停止、恢复、销毁时被调用。如图2-4,介绍各个“生命周期回调方法”,以及其各个方法之间的关系:onCreate:当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。onCreate方法有一个参数,该参数可以为空(null),也可以是之前调用onSaveInstanceState()方法保存的状态信息。onStart:该方法的触发表示所属活动将被展现给用户。onResume:当一个活动和用户发生交互的时候,触发该方法。onPause:当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。onStop:当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发onStop方法。所以保存状态信息是应该在onPause时做,而不是onStop时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。onRestart:当处于停止状态的活动需要再次展现给用户的时候,触发该方法。onDestroy:当活动销毁的时候,触发该方法。和onStop方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。9图2-4Android生命周期2.4.2ServiceService是android系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service的启动有两种方式:context.startService()和context.bindService()。使用context.startService()启动Service经历:context.startService()-onCreate()-onStart()-Servicerunningcontext.stopService()|-onDestroy()-Servicestop如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。10stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。所以调用startService的生命周期为:onCreateonStart(可多次调用)onDestroy使用使用context.bindService()启动Service会经历:context.bindService()-onCreate()-onBind()-ServicerunningonUnbind()-onDestroy()-ServicestoponBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind-onDestroy相应退出。所以调用bindService的生命周期为:onCreateonBind(只一次,不可多次绑定)onUnbindonDestory。在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等。2.4.3ContentProviderContentProvider属于Android应用程序的组件之一,作为应用程序之间唯一的共享数据的途径,ContentProvider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的借口。Android系统为一些常见的数据类型(如音乐、视频、图像、手机通信录联系人信息等)内置了一系列的ContentProvider,这些都位于vider包下。持有特定的许可,可以在自己开发的应用程序中访问这些ContentProvider。让自己的数据和其他应用程序共享有两种方式:创建自己的ContentProvier(即继承自ContentProvider的子类)或者是将自己的数据添加到已有的ContentProvider中去,后者需要保证现有的ContentProvider和自己的数据类型相同且具有该ContentProvider的写入权限。对于ContentProvider,最重要的就是数据模型(datamodel)和URI。113需求分析和可行性研究需求分析简单地说就是分析一般用户的要求,按照用户需求大致的把目标系统架构出来。需求分析首先要做的是详细调查实际要处理的对象,对当前目标的现状要做到充分了解,然后确定用户真正所需要的也切合实际情况的系统,最终才能根据实际情况确定系统所具有的全部功能。本次设计的图片阅读器即是如此。3.1问题的定义问题定义:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准.这些需求包括:功能需求(做什么),性能需求(要达到什么指标),环境需求(如机型,操作系统等),可靠性需求(不发生故障的概率),安全保密需求,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进度需求,预先估计以后系统可能达到的目标。在开发软件之前,经过查阅有关文献和著作,一段时间的分析和学习之后,基本了解了Android平台的一些具体应用以及如何在Android平台上开发应用程序,还有图像显示高分辨率的具体原理,也学习了图像处理相关的一些知识,认识到完成本软件和实现基本的功能,需要做到掌握Android平台框架,熟悉JAVA开发语言,熟悉相关的一些基础理论。3.2需求分析3.2.1需求分析的过程需求分析阶段的工作,可以分为三个方面:分析与综合,制订规格说明,评审。分析与综合:逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。最后,综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。制订规格说明书:即编制文档,描述需求的文档称为软件需求规格说明书。注意需求分析阶段的成果是需求规格说明书,向下一阶段提交。评审:对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。3.2.2需求分析的方法需求分析的方法有很多。这里只强调原型化方法,其它的方法如:结构化方法,动态分析法等在此不讨论。原型化方法是十分重要的。原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能。原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性,界面的友好性或其他方面上存在缺陷。建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性,技术的可行性,或考察是否满足用户的需求等。如,为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型.以后的目标系统就在原型系统的基础上开发。原型主要有三种类型(软考考过):探索型,实验型,进化型.探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。进化型:目的不在于改进12规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。使用原型化方法有两种不同的策略:废弃策略,追加策略。废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整,准确,一致,可靠的最终系统。系统构造完成后,原来的模型系统就被废弃不用.探索型和实验型属于这种策略。追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。进化型属于这种策略。3.2.3本软件研究方法软件工程是一类求解软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程是一门指导计算机软件开发和维护的工程学科。软件工程的模型是软件开发全部过程、活动和任务的结构框架。瀑布模型内容及特点:瀑布模型将软件生存周期的各项活动规定为依固定顺序连接的软干阶段工作,是一种线性模型。各阶段活动为,提出系统需求、提出软件需求、需求分析、设计、编码、测试和运行。每个开发阶段具有以下特征,从上一阶段接受本阶段工作的对象作为输入,对上述输入实施本阶段的活动,给出本阶段的工作成果作为输出传入下一阶段,对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段工作,否则返回前一阶段甚至更前阶段。瀑布模型最为突出的缺点是该模型缺乏灵活性。演化模型内容及特点:演化模型主要针对事先不能完整定义需求的软件开发,其开发过程一般是首先开发核心系统,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学期刊编辑自我效能感、胜任力与职业倦怠的现状及关系研究
- 锑冶炼生产数据分析考核试卷
- 近断层下承式钢管混凝土系杆拱桥抗震性能分析及减震研究
- 党委招聘面试题库及答案
- 长牡蛎LITAF-TNF-TNFR介导血淋巴细胞凋亡的机制研究
- 温州医科大学《中小学美术教师绘画技能》2023-2024学年第二学期期末试卷
- 西交利物浦大学《基础乐理》2023-2024学年第二学期期末试卷
- 齐鲁理工学院《水利工程施工课程设计》2023-2024学年第二学期期末试卷
- 品牌IP形象设计企业制定与实施新质生产力项目商业计划书
- 书法APP个性化封面设计创新创业项目商业计划书
- 2025年陕西省新高考语文试卷(含答案解析)
- 2025年江西省高考物理真题
- 饮食与营养试题及答案
- 公司岗变薪变管理制度
- 客户拜访跟进管理制度
- 影像科招聘试题及答案
- 湘教版七年级数学下册期末考试卷(附答案和解析)
- 关于中心医院“十五五”发展规划(2025-2030)
- 2025年健康管理师考试试题及答案
- 第六单元不规则或组合图形的周长“拓展型”专项练习-五年级数学下册典型例题(原卷版)苏教版
- 2025年中考化学模拟考试试卷附带答案
评论
0/150
提交评论