基于android的指南针软件的设计与实现_第1页
基于android的指南针软件的设计与实现_第2页
基于android的指南针软件的设计与实现_第3页
基于android的指南针软件的设计与实现_第4页
基于android的指南针软件的设计与实现_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

基于ANDROID的指南针软件的设计与实现摘要随着科技的发展,智能手机得到普及,由GOOGLE公司开发的基于LINUX的自由及开放源代码的操作系统ANDROID凭借其开放性及丰富的应用受到广大手机用户的喜爱,逐渐成为了市场占有量最大的移动平台操作系统,所以开发基于ANDROID系统的应用软件变得十分必要。本应用软件针对智能手机用户日常出游、出差时经常遇到的找不着方向的问题,采用软件工程中结构化思想、标准的软件设计流程,从可行性研究、需求分析、系统设计及系统实现和测试等步骤来开发,基于ANDROID开发平台,采用JAVA语言和XML布局编写,实现了利用手机自带的电子罗盘传感器来为用户指明方向的功能。关键词ANDROID;操作系统;智能手机;电子罗盘;指南针DESIGNANDIMPLEMENTATIONOFACOMPASSSOFTWAREBASEDONANDROIDABSTRACTWITHTHEDEVELOPMENTOFTECHNOLOGY,SMARTPHONESGAINPOPULARITY,DEVELOPEDBYGOOGLEBASEDONTHEFREEANDOPENSOURCELINUXOPERATINGSYSTEMANDROID,WITHITSOPENNESSANDRICHAPPLICATIONSLOVEDBYTHEMAJORITYOFMOBILEPHONEUSERS,HASBECOMETHELARGESTMARKETSHAREOFMOBILEOPERATINGSYSTEMPLATFORM,SODEVELOPERSBASEDONTHEANDROIDSYSTEMAPPLICATIONSOFTWAREBECOMESNECESSARYTHISAPPLICATIONSOFTWAREISDESIGNEDFORDEALTHEPROBLEMWHICHTHESMARTPHONEUSERSCOULDNOTFINDTHEDIRECTION,ANDTHISPROBLEMALWAYSHAPPENSDURINGTHEDAILYTRAVELTIMEORDAILYOUTINGS,USINGSTRUCTUREDSOFTWAREENGINEERINGIDEAS,USINGSTANDARDSOFTWAREDESIGNPROCESS,FROMFEASIBILITYSTUDIES,REQUIREMENTSANALYSIS,SYSTEMSDESIGNANDSYSTEMIMPLEMENTATIONANDTESTINGSTEPSTODEVELOP,BASEDONANDROIDDEVELOPMENTPLATFORM,WRITTENINJAVALANGUAGEANDXMLLAYOUTTOACHIEVEAUSETHEPHONECOMESWITHANELECTRONICCOMPASSSENSORTOINDICATETHEDIRECTIONOFTHEUSERFUNCTIONKEYWORDSANDROIDOPERATINGSYSTEMSMARTPHONESELECTRONICCOMPASSCOMPASS目录摘要IABSTRACTII1绪论111ANDROID系统开发背景1111研究背景1112ANDROID开发平台的优势1113ANDROID的市场前景2114ANDROID的国内市场212课题的目的与意义313本论文主要研究内容32ANDROID相关知识421开发工具4211ECLIPSE4212ANDROIDSDK5213ADT522ANDROID系统的特性523ANDROID系统平台架构6231LINUX内核7232ANDROID程序库7233ANDROID运行库8234应用程序框架8235应用程序824ANDROID系统的四大核心组件9241ACTIVITY及其生命周期9242SERVICE及其生命周期10243BROADCASTRECECIVER介绍11244CONTENTPROVIDER介绍1325ANDROID中的传感器1426ANDROID中的界面布局1527ANDROIDANIMATION动画173ANDROID的指南针软件的设计及准备1931研究目标1932可行性研究19321经济可行性20322技术可行性20323操作可行性2133需求分析22331实用性原则22332安全可靠性原则22333指南针软件的基本操作需求22334指南针软件的基本界面需求22335软件性能需求23336运行环境需求2334配置开发环境23341安装JDK23342安装ECLIPSE25343安装SDK25344安装ADT2635制作指南针软件的材料准备264基于ANDROID的指南针软件的实现2841界面设计2842方向传感器的应用29421获取管理服务29422方向传感监听器的注册和取消注册29423ONSENSORCHANGED及其效果3043程序退出对话框3144ANDROIDMANIFESTXML325基于ANDROID的指南针软件的测试346异常处理39总结40参考文献41致谢42附录43外文原文及其中文翻译471绪论智能手机,简单来说就是像电脑一样,具有独立的操作系统,可以通过安装第三方软件来扩充手机功能的手机。智能手机跟电脑一样,操作系统不止有一种,原因主要是手机的生产厂家很多,要统一基本不可能。但那是经过大浪淘沙,有四种手机操作系统被广大用户广泛接受,它们分别是SYMBIAN、ANDROID、WINDOWMOBILE和IOS。其中ANDROID是由谷歌、开放手持设备联盟联合研发,谷歌独家推出的智能操作系统,2011年初数据显示,仅正式上市两年的操作系统ANDROID已经超越称霸十年的塞班操作系统,跃居全球第一。2012年11月数据显示,安卓占据全球智能手机操作系统市场76的份额,中国市场占有率为90,彻底占领中国智能手机市场,也成为了全球最受欢迎的智能手机操作系统,因为谷歌推出安卓时采用开放源代码(开源)的形式推出,所以导致世界大量手机生产商采用安卓系统生产智能手机,再加上安卓在性能和其他各个方面上也非常优秀,便让安卓一举成为全球第一大智能操作系统。11ANDROID系统开发背景ANDROID是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。ANDROID最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,ANDROID里面具有非常丰富的图形系统、对多媒体的支持功能和非常强大的浏览器。ANDROID平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,因此,它具有很大的市场发展潜力。111研究背景ANDROID一词的本义指“机器人”,同时ANDROID也是GOOGLE于2007年11月5日宣布的基于LINUX平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。2008年9月22日,美国运营商TMOBILEUSA在纽约正式发布第一款基于ANDROID的手机TMOBILEG1。该款手机为宏达电制造,是世界上第一部使用ANDROID操作系统的手机,支持WCDMA/HSPA网络,理论下载速率72MBPS,并支持WIFI。在随后的几个月越来越多的厂商也开始宣布将提供ANDROID手机。112ANDROID开发平台的优势ANDROID是一个真正意义上的开放性移动设备综合平台。它包括操作系统、用户界面和应用程序移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。谷歌与开放手机联盟合作开发了ANDROID,这个联盟由包括中国移动、摩托罗拉、高通、宏达和TMOBILE在内的30多家技术和无线应用的领军企业组成。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。所有的ANDROID应用之间是完全平等的。在开发之初,ANDROID平台就被设计成一个由一系列应用所组成的平台。所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,ANDROID的所有其他的东西都是“应用”。因此,用户甚至可以将系统中默认的电话拨号软件替换成其他第三方的电话拨号软件。你也可以改变主界面显示窗口的内容,或者将手机中任意的应用替换成你所需要的其他应用。ANDROID打破了应用之间的界限,比如开发人员可以把WEB上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。此外应用程序不仅可以通过标准API访问核心移动设备功能,互联网,应用程序还可以声明它们的功能可以供其他应用程序使用,比如前面图ANDROID平台为开发人员提供了大量的实用库和工具,开发人员可以很快速的创建自己的应用。113ANDROID的市场前景美国知名的互联网统计公司COMSCORE近日刚刚发布了今年三月至五月的美国智能手机市场调研报告,这份最新的报告显示,全美目前共有4910万用户使用智能手机,其中有81的用户为近三个月来新增用户。作为打拼多年的老品牌,黑莓仍然以417的市占率稳居全美智能手机占有率排行版首位,其后的苹果和微软的是市占率分别为244和132,特别值得一提的是,谷歌ANDROID平台的占有率以13的市占率紧随微软的132之后,ANDROID平台的整体市占率增加了4,而如果将时间跨度限制到3月至5月的这三个月内,ANDROID平台市占率增长数字甚至接近了45。114ANDROID的国内市场在国内,ANDROID社区十分红火,这些社区为ANDROID在中国的普及做了很好的推广作用,同时也为ANDROID相关产品的消费提供了市场。国内厂商和运营商也纷纷加入了ANDROID阵营,包括中国移动,中国联通,华为通讯,联想等大企业。同时不仅仅局限于手机,国内厂家也陆续推出了采用ANDROID系统的MID(平板电脑)产品,比较著名的包括由ROCKCHIP和蓝魔推出的同时具备高清播放和智能系统的音悦汇W7。我们可以预见ANDROID也将会被广泛应用在国产智能上网设备上,将进一步扩大ANDORID系统的应用范围。ANDROID智能终端已成为当前智能手机,信息家电发展的主要方向,而网络故障的诊断解决已成为解决售后和用户正常使用的关键,研究和开发相关网络模块诊断程序变得尤为重要。本论文的主要研究目的就是研究为接下来的有关ANDROID产品的做好售后服务工作,开发一个智能终端的网络诊断界面,完成相关网络的检测,并做好功能扩展。12课题的目的与意义随着时代的发展和人民生活水平的提高,出差和出游已经成为人们日常生活中的常见事情,大多人也喜欢到不同的地方去欣赏不一样的景色、感受当地人不同的生活方式。但是,当人们独自一人到达陌生的环境时,找不着方向便成为人们常常遇到的问题。此时人们会选择地图和导航软件来寻找路线,但是,地图需要人们知道自身所走的方向,而当网络不畅时,导航软件便失去作用,此时一个指南针软件的出现显得尤为重要。本软件是一款指南针软件,旨在为外出的智能手机用户指明方向,方便大家的生活。13本论文主要研究内容本论文是对基于ANDROID的指南针软件的设计与实现,目的是为了在陌生环境为外出的人们提供指明方向的工具,是为了方便人们的生活。论文中介绍的指南针软件是通过ANDROID系统中的电子罗盘传感器实现的,所以本论文主要研究如何通过对指南针软件界面的设计和如何通过电子罗盘传感器(方向传感器)实现。主要内容1综述指南针软件在ANDROID平台上的应用及意义;2了解ANDROID系统UI设计的技术,;3熟悉指南针软件的开发环境及其测试环境;4设计基于ANDROID的指南针软件开始界面;5深入分析指南针的原理方法及界面的设计流程;6熟练掌握基于ANDROID的指南针软件的编写;7设计与实现基于ANDROID的指南针软件。2ANDROID相关知识21开发工具211ECLIPSEECLIPSE是一个开放源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括JAVA开发工具(JAVADEVELOPMENTKIT,JDK)。1基本介绍虽然大多数用户很乐于将ECLIPSE当作JAVA集成开发环境(IDE)来使用,但ECLIPSE的目标却不仅限于此。ECLIPSE还包括插件开发环境(PLUGINDEVELOPMENTENVIRONMENT,PDE),这个组件主要针对希望扩展ECLIPSE的软件开发人员,因为它允许他们构建与ECLIPSE环境无缝集成的工具。由于ECLIPSE中的每样东西都是插件,对于给ECLIPSE提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于JAVA开发工具。尽管ECLIPSE是使用JAVA语言开发的,但它的用途并不限于JAVA语言;例如,支持诸如C/C、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。ECLIPSE框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于ECLIPSE的应用程序的一个突出例子是IBMRATIONALSOFTWAREARCHITECT,它构成了IBMJAVA开发工具系列的基础。2语言拓展ECLIPSE是著名的跨平台的自由集成开发环境(IDE)。最初主要用来JAVA语言开发,通过安装不同的插件ECLIPSE可以支持不同的计算机语言,比如C和PYTHON等开发工具。ECLIPSE的本身只是一个框架平台,但是众多插件的支持使得ECLIPSE拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以ECLIPSE为框架开发自己的IDE。ECLIPSE最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的ECLIPSE代码基础,包括PLATFORM、JDT和PDE。ECLIPSE项目IBM发起,围绕着ECLIPSE项目已经发展成为了一个庞大的ECLIPSE联盟,有150多家软件公司参与到ECLIPSE项目中,其中包括BORLAND、RATIONALSOFTWARE、REDHAT及SYBASE等。ECLIPSE是一个开放源码项目,它其实是VISUALAGEFORJAVA的替代品,其界面跟先前的VISUALAGEFORJAVA差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。随后还有包括ORACLE在内的许多大公司也纷纷加入了该项目,ECLIPSE的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。3主要组成ECLIPSE是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由ECLIPSE项目、ECLIPSE工具项目和ECLIPSE技术项目三个项目组成,具体包括四个部分组成ECLIPSEPLATFORM、JDT、CDT和PDE。JDT支持JAVA开发、CDT支持C开发、PDE用来支持插件开发,ECLIPSEPLATFORM则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。ECLIPSEPLATFORM允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。212ANDROIDSDK软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,ANDROIDSDK指的是ANDROID专属的软件开发工具包。ANDROIDSDK提供了WINDOWS/LINUX/MAC平台上开发ANDROID应用开发组件,其包含了在ANDROID平台上开发移动应用的各种工具集。ANDROIDSDK不仅包括了ANDROID模拟器和用于ECLIPSE的ANDROID开发工具插件(ADT),而且包括了各种用来调试、打包以及在模拟器上安装应用的工具。ANDROIDSDK主要是以JAVA为基础,用户可以使用JAVA语言来开发ANDROID平台上的软件应用。通过SDK提供的一些工具将其打包成APK文件,然后应SDK中的模拟器来模拟和测试软件在ANDROID平台上的运行情况和效果。相关特性其最震撼人心之处在于ANDROID手机系统的开放性和服务免费。ANDROID是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了IPHONE等只能添加为数不多的固定软件的枷锁;同时与WINDOWSMOBILE、SYMBIAN等厂商不同,ANDROID操作系统免费向开发人员提供,这样可节省近三成成本。213ADTANDROID为ECLIPSE订制了一个插件,即ANDROIDDEVELOPMENTTOOLS,为ANDROID开发提供开发工具的升级或变更,也为用户提供一个强大的综合环境用于开发ANDROID应用程序。目前ANDROID开发所用的开发工具是ECLIPSE,在ECLIPSE编译IDE环境中,安装ADT,为ANDROID开发提供开发工具的升级或者变更,简单理解为在ECLIPSE下开发工具的升级下载工具。ADT扩展了ECLIPSE的功能,可以让用户快速地创建ANDROID项目,创建应用程序界面,以及SDK工具集调试应用程序。22ANDROID系统的特性1开放性在优势方面,ANDROID平台首先就是其开放性,开放的平台允许任何移动终端厂商加入到ANDROID联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于ANDROID的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。2挣脱运营商的束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从IPHONE上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。3丰富的硬件选择这一点还是与ANDROID平台的开放性相关,由于ANDROID的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚SYMBIAN风格手机一下改用苹果IPHONE,同时还可将SYMBIAN中优秀的软件带到IPHONE上使用、联系人等资料更是可以方便地转移。4不受任何限制的开发商ANDROID平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给ANDROID难题之一。5无缝结合的GOOGLE应用如今叱诧互联网的GOOGLE已经走过10年度历史。从搜索巨人到全面的互联网渗透,GOOGLE服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而ANDROID平台手机将无缝结合这些优秀的GOOGLE服务。1可重用和可替换组件的程序应用框架2针对移动设备优化过的DALVIK虚拟机3集成了基于开源WEBKIT引擎的网页浏览器4经过优化过的自定义2D图形库和基于OPENGLES10库可选硬件加速5SQLITE结构化的数据存储数据库6支持常规的音频视频多媒体格式,如MPEG4、H264、MP3、AAC、AMR、JPG、PNG、GIF、GSM电话硬件决定7蓝牙、GPRSEDGE、3G和WIFI无线网络硬件决定8相机、GPS全球定位、导航和感应加速器9丰富的开发环境包含设备模拟器、工具、调试器、内存和性能分析工具,以及ECLIPSE集成开发环境插件23ANDROID系统平台架构对操作系统而言,必须做到设计合理、层次分明。同时还需考虑整个系统的结构要聚耦适当,ANDROID系统是基于LINUX内核的,因此还具备开源的特性,以符合开发人员共同工作。ANDROID操作系统的体系结构可分为四层,由上到下依次是应用程序、应用程序框架、核心类库和LINUX内核,其中核心类库层还包括ANDROID运行时环境。系统架构如图21所示。图21ANDROID系统平台架构参照图21,对系统各部分主要组件作以下描述。231LINUX内核ANDROID的核心系统服务依赖于LINUX内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。LINUX内核也同时作为硬件和软件栈之间的硬件抽象层。ANDROID基于LINUX26提供核心系统服务,例如安全、内存管理、进程管理、网络堆栈、驱动模型。LINUXKERNEL也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(SERVICEACCESSPOINT),专业点可以说是高内聚、低耦合。232ANDROID程序库ANDROID包括一个被ANDROID系统中各种不同组件所使用的C/C集库。该库通过ANDROID应用程序框架为开发者提供服务。以下是一些核心库1)SURFACEMANAGER管理显示子系统,并且为多个应用程序提供2D和3D图层的无缝融合。2)MEDIAFRAMEWORK基于OPENCORE的多媒体框架,支持多种常用的音频、视频格式文件的回放和录制,同时支持静态图像文件。3)SQLITE一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。4)OPENGLES3D图形库,用于3D图形渲染,该库可以使用3D赢家加速。5)FREETYPE位图(BITMAP)和矢量(VECTOR)字体显示。6)WEBKIT支持ANDROID浏览器和一个可嵌入的WEB视图7)SGL2D图形库,用于2D图形渲染。8)LIBC一个从BSD继承的标准C系统函数库,他是专门为基于嵌入式LINUX设备制定的。233ANDROID运行库ANDROID运行时由两部分组成ANDROID核心库集和DALVIK虚拟机。其中核心库提供了JAVA语言核心库所能使用的绝大部分功能,而虚拟机则负责运行ANDROID应用程序。每个ANDROID应用程序都运行在单独的一个DALVIK虚拟机内,因此DALVIK专门针对同时高效地运行多个虚拟机进行了优化,因此ANDROID系统可以方便地实现对应用程序进行隔离。实际上,JVM虚拟机运行的是JAVA字节码(通常是CLASS文件),但DALVIK运行的是其专有的DEX(DALVIKEXECUTABLE)文件。JVM直接从CLASS文件或JAR包中加载字节码然后运行;而DALVIK则无法直接从CLASS文件或JAR包中加载字节码,它需要对DX工具将应用程序的所有CLASS文件编译成DEX文件,DALVIK则运行该DEX文件。234应用程序框架应用程序框架可以说是一个应用程序的核心,是所有参与开发的程序员共同使用和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性。其作用是让程序保持清晰和一目了然,在满足不同需求的同时又不互相影响。ANDROID系统提供给应用开发者的本身就是一个框架,所有的应用开发都必须遵守这个框架的原则。当我们开发ANDROID应用程序时,就是面向底层的应用程序框架进行的。从这个意义上看,ANDROID系统上的应用程序时完全平等的,不管是ANDROID系统提供的程序,还是普通开发者提供的程序,他们都可以访问ANDROID提供的API框架。ANDROID应用程序框架提供了大量API供开发者使用。应用程序框架可作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可发布它的功能模块只要发布时遵守了框架的约定,那么其他应用程序也可使用这个功能模块。235应用程序ANDROID系统发布时,会同一系列核心应用程序和常用程序一起发布,如经常电子邮件客户端、SMS程序、日历、地图、浏览器、联系人等、这些应用程序都是用JAVA编写的。24ANDROID系统的四大核心组件ANDROID四大基本组件分别是ACTIVITY,SERVICE服务,CONTENTPROVIDER内容提供者,BROADCASTRECEIVER广播接收器。不是每一个ANDROID应用程序都必须有这四部分组成。241ACTIVITY及其生命周期ACTIVITY通俗地讲就是用户界面,它有其自身的生命周期。一个应用程序通常包含多个ACTIVITY,它们可以互相切换。ACTIVITY的使用需要在MAINFEST文件中进行声明。一个ACTIVITY通常是一个单独的屏幕,ACTIVITY生命周期是指ACTIVITY从启动到销毁的过程。系统中的ACTIVITY被一个ACTIVITY栈所管理。当一个新的ACTIVITY启动时,将被放置到栈顶,成为运行中的ACTIVITY,前一个ACTIVITY保留在栈中,不再放到前台,直到运行中的ACTIVITY退出为止。ACTIVITY表现为四种状态活动状态(ACTIVEORRUNNING)也称为运行状态,处于ACTIVITY栈顶,在用户界面中最上层,完全能被用户看到,能够与用户进行交互;暂停状态(PAUSED)ACTIVITY失去焦点,ACTIVITY界面被部分遮挡,该ACTIVITY不再处于用户界面的最上层,且不能够与用户进行交互。一个暂停状态的ACTIVITY依然保持活力(保持所有的状态,成员信息,与窗口管理器保持连接),但是在系统内存不够用的时候将被杀掉;停止状态(STOPPED)ACTIVITY在界面上完全不能被用户看到,也就是说这个ACTIVITY被其他ACTIVITY全部遮挡,但它依然保持所有状态和成员信息,只是它不再可见,它的窗口被隐藏;非活动状态(KILLED)当系统内存需要被用在其他地方的时候,一个停止状态的ACTIVITY被杀掉。如果一个ACTIVITY是PAUSED或者STOPPED状态时可以被恢复,也可以被删除。一个被删除(杀掉)的ACTIVITY如果需要重新恢复就需要重启。ACTIVITY的生命周期由几个常用的覆写方法来实现,分别是ONCREATE,ONSTART,ONRESUME,ONPAUSE,ONSTOP,ONDESTROY,ONRESTART七个方法。整个生命周期,从ONCREATE()开始到ONDESTROY结束。ACTIVITY在ONCREATE()设置所有的“全局”状态,在ONDESTORY()释放所有的资源。例如某个ACTIVITY有一个在后台运行的线程,用于从网络下载数据,则该ACTIVITY可以在ONCREATE()中创建线程,在ONDESTORY()中停止线程。可见的生命周期,从ONSTART()开始到ONSTOP()结束。在这段时间,可以看到ACTIVITY在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如可以在ONSTART中注册一个INTENTRECEIVER来监听数据变化导致UI的变动,当不再需要显示时候,可以在ONSTOP()中注销它。ONSTART(),ONSTOP()都可以被多次调用,因为ACTIVITY随时可以在可见和隐藏之间转换。前台的生命周期,从ONRESUME()开始到ONPAUSE()结束。在这段时间里,该ACTIVITY处于所有ACTIVITY的最前面,和用户进行交互。ACTIVITY可以经常在RESUMED和PAUSED状态之间切换,例如当设备准备休眠时,当一个ACTIVITY处理结果被分发时,当一个新的INTENT被分发时。ACTIVITY的整个生命周期都定义在下面的接口方法中,所有方法都可以被重载。所有的ACTIVITY都需要实现ONCREATE()去初始化设置,大部分ACTIVITY需要实现ONPAUSE()去提交更改过的数据,当前大部分的ACTIVITY也需要实现ONFREEZE()接口,以便恢复在ONCREATE()里面设置的状态。图22展示了上述ACTIVITY生命周期以及ACTIVITY在这些方法过程之中经历的状态改变。图22ACTIVITY生命周期过程及历经的状态改变242SERVICE及其生命周期SERVICE不像ACTIVITY那样,它不直接与用户进行交互,没有用户界面,能长期在后台运行,且比ACTIVITY具有更高的优先级,在系统资源紧张时不会轻易被ANDROID系统终止。每个服务都是从SERVICE基类中派生的。SERVICE可以通过两种方式创建STARTSERVICE和BINDSERVICESTARTSERVICE一般用于在后台上传文件或者下载文件等,不跟其他组件通信,就算启动它的应用被销毁了,它仍然会欢快的在后台执行,直到完成任务的时候自刎(自己调用STOPSELF)或者被其他人下黑手调用STOPSERVICEBINDSERVICE允许其他组件跟它进行通信,允许多个客户端绑定到同一个SERVICE上,当所有的客户端都解除绑定后,该SERVICE就销毁了。SERVICE的生命周期主要是跟这4个回调函数相关,ONCREATE、ONSTARTCOMMEND、ONBIND、ONDESTORY。如下图所示图23SERVICE生命周期过程及历经的状态改变243BROADCASTRECECIVER介绍ANDROID系统中有各式各样的广播,当系统/应用程序运行时便会向ANDROID注册各种广播,主要有两种注册类型第一种是非常驻型广播,此类广播会伴随应该程序的生命周期;第二种是常驻型广播,此类广播不会随应用程序是否关闭而存在,只要有广播就会被系统调用自动运行。ANDROID系统接收到广播后便会对广播进行判断,并找出所需事件,然后向不同应用程序注册事件。一个广播接收者有一个回调方法VOIDONRECEIVECONTEXTCURCONTEXT,INTENTBROADCASTMSG。当一个广播消息到达接收者是,ANDROID调用它的ONRECEIVE方法并传递给它包含消息的INTENT对象。广播接收者被认为仅当它执行这个方法时是活跃的。当ONRECEIVE返回后,它是不活跃的。有一个活跃的广播接收者的进程是受保护的,不会被杀死。但是系统可以在任何时候杀死仅有不活跃组件的进程,当占用的内存别的进程需要时。这带来一个问题,当一个广播消息的响应时费时的,因此应该在独立的线程中做这些事,远离用户界面其它组件运行的主线程。如果ONRECEIVE衍生线程然后返回,整个进程,包括新的线程,被判定为不活跃的(除非进程中的其它应用程序组件是活跃的),将使它处于被杀的危机。解决这个问题的方法是ONRECEIVE启动一个服务,及时服务做这个工作,因此系统知道进程中有活跃的工作在做。推荐ANDROID开发广播(BROADCAST)的应用ANDROID中,不同进程之间传递信息要用到广播,可以有两种方式来实现。第一种方式在MANIFESTXML中注册广播,是一种比较推荐的方法,因为它不需要手动注销广播(如果广播未注销,程序退出时可能会出错)。具体实现在MANIFEST的APPLICATION中添加上面两个ANDROIDNAME分别是广播名和广播的动作(这里的动作是表示系统启动完成),如果要自己发送一个广播,在代码中为INTENTINEWINTENT“ANDROIDINTENTACTIONBOOT_COMPLETED“SENDBROADCASTI这样,广播就发出去了,然后是接收。接收可以新建一个类,继承至BROADCASTRECEIVER,也可以建一个BROADCASTRECEIVER的实例,然后得写ONRECEIVE方法,实现如下PROTECTEDBROADCASTRECEIVERMEVTRECEIVERNEWBROADCASTRECEIVEROVERRIDEPUBLICVOIDONRECEIVECONTEXTCONTEXT,INTENTINTENTSTRINGACTIONINTENTGETACTIONIFACTIONEQUALS“ANDROIDINTENTACTIONBOOT_COMPLETED“/DOSOMETHING第二种方式,直接在代码中实现,但需要手动注册注销,实现如下INTENTFILTERFILTERNEWINTENTFILTERFILTERADDACTION“ANDROIDINTENTACTIONBOOT_COMPLETED“REGISTERRECEIVERMEVTRECEIVER,FILTER/这时注册了一个RECEVIER,名为MEVTRECEIVER,然后同样用上面的方法以重写ONRECEIVER,最后在程序的ONDESTROY中要注销广播,实现如下OVERRIDEPUBLICVOIDONDESTROYSUPERONDESTROYUNREGISTERRECEIVERMPLAYEREVTRECEIVER244CONTENTPROVIDER介绍ANDROID中的CONTENTPROVIDER机制可支持在多个应用中存储和读取数据,这也是跨应用共享数据的唯一方式。数据库在ANDROID当中是私有的,当然这些数据包括文件数据和数据库数据以及一些其他类型的数据。不能将数据库设为WORLD_READABLE,每个数据库都只能创建它的包访问,这意味着只有由创建数据库的进程可访问它。如果需要在进程间传递数据,则可以使用AIDL/BINDER或创建一个CONTENTPROVIDER,但是不能跨越进程/包边界直接来使用数据库。一个CONTENTPROVIDER类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此CONTENTPROVIDER的各种数据类型。也就是说,一个程序可以通过实现一个CONTENTPROVIDER的抽象接口将自己的数据暴露出去。外界根本看不到,也不用看到这个应用暴露的数据在应用当中是如何存储的,或者是用数据库存储还是用文件存储,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和程序里的数据打交道,可以读取程序的数据,也可以删除程序的数据,当然,中间也会涉及一些权限的问题。下边列举一些较常见的接口,这些接口如下所示。QUERY(URIURI,STRINGPROJECTION,STRINGSELECTION,STRINGSELECTIONARGS,STRINGSORTORDER)通过URI进行查询,返回一个CURSOR。INSERT(URIURL,CONTENTVALUESVALUES)将一组数据插入到URI指定的地方。UPDATE(URIURI,CONTENTVALUESVALUES,STRINGWHERE,STRINGSELECTIONARGS)更新URI指定位置的数据。DELETE(URIURL,STRINGWHERE,STRINGSELECTIONARGS)删除指定URI并且符合一定条件的数据。25ANDROID中的传感器在ANDROID23之后,GOOGLE提供了11种传感器共应用层使用。分别是SENSOR_TYPE_ACCELEROMETER加速度传感器SENSOR_TYPE_MAGNETIC_FIELD磁力传感器SENSOR_TYPE_PRESSURE压力传感器SENSOR_TYPE_GRAVITY重力传感器SENSOR_TYPE_TEMPERATURE温度传感器SENSOR_TYPE_PROXIMITY接近传感器SENSOR_TYPE_ORIENTATION方向传感器SENSOR_TYPE_GYROSCOPE陀螺仪传感器SENSOR_TYPE_LIGHT光线感应传感器SENSOR_TYPE_LINEAR_ACCELERATION线性加速度传感器SENSOR_TYPE_ROTATION_VECTOR旋转矢量传感器本软件将借助方向传感器实现指南针的效果。图24方向传感器示意图如图24所示,绿色部分表示一个手机,带有小圈那一头是手机头部传感器中的X如上图所示,规定X正半轴为北,手机头部指向OF方向,此时X的值为0,如果手机头部指向OG方向,此时X值为90,指向OH方向,X值为180,指向OE,X值为270。传感器中的Y现在我们将手机沿着BC轴慢慢向上抬起,即手机头部不动,尾部慢慢向上翘起来,直到AD跑到BC右边并落在XOY平面上,Y的值将从0到180之间变动,如果手机沿着AD轴慢慢向上抬起,即手机尾部不懂,直到BC跑到AD左边并且落在XOY平面上,Y的值将从0到180之间变动,这就是方向传感器中Y的含义。传感器中的Z现在我们将手机沿着AB轴慢慢向上抬起,即手机左边框不动,右边框慢慢向上翘起来,直到CD跑到AB右边并落在XOY平面上,Z的值将从0到180之间变动,如果手机沿着CD轴慢慢向上抬起,即手机右边框不动,直到AB跑到CD左边并且落在XOY平面上,Z的值将从0到180之间变动,这就是方向传感器中发Z的含义。26ANDROID中的界面布局1)LINEARLAYOUT线性布局管理器,可分为水平放置和垂直放置两种,只能进行单行布局。如图25、图26所示图25LINEARLAYOUT中水平放置图26LINEARLAYOUT中垂直放置2)TABLELAYOUT任意行和列的表格布局管理器。其中TABLEROW代表一行,TABLEROW的每一个视图组件代表一个单元格。如图26所示,BUTTON1、BUTTON2、BUTTON3、BUTTON4、BUTTON5分别位于TABLELAYOUT布局中第一行的第一列、第一行的的二列、第二行的第二列、第二行的第三列和第三行的第三列中。图27TABLELAYOUT布局3)ABSOLUTELAYOUT绝对布局管理器,坐标轴的方式,左上角是(0,0)点,往右X轴递增,往下Y轴递增。在此布局中的子元素的ANDROIDLAYOUT_X和ANDROIDLAYOUT_Y属性将生效,用于描述该子元素的坐标位置。屏幕左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个0代表纵坐标,向下移动,此值增大。在此布局中的子元素可以相互重叠。如图27所示图28ABSOLUTELAYOUT布局4)FRAMELAYOUT左上角只显示一个组件。在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。如图28所示,第一个TEXTVIEW被第二个TEXTVIEW完全遮挡,第三个TEXTVIEW遮挡了第二个TEXTVIEW的部分位置。图29FRAMELAYOUT布局5)RELATIVELAYOUT相对布局管理器,利用控件之间的相对位置关系来对布局进行放置,刚容器中的控件与其他任何一个控件或容器(包括父控件)有相对关系。RELATIVELAYOUT是ANDROID五大布局结构中最灵活的一种布局结构,比较适合一些复杂界面的布局。如图210就展示这么一个情况,第一个文本框与父组件的底部对齐,第二个文本框位于第一个文本框的上方,并且第三个文本框位于第二个文本框的左方。图210RELATIVELAYOUT布局本应用程序界面将使用FRAMELAYOUT布局。27ANDROIDANIMATION动画DRAWABLE最强大的功能是显示ANIMATION。ANDROIDSDK介绍了2种ANIMATION1)TWEENANIMATION渐变动画通过对场景里的对象不断做图像变换平移、缩放、旋转产生动画效果。2)FRAMEANIMATION帧动画顺序播放事先做好的图像,类似放电影在使用ANIMATION前,我们先学习如何定义ANIMATION,这对我们使用ANIMATION会有很大的帮助。ANIMATION是以XML格式定义的,定义好的XML文件存放在RES/ANIM中。TWEENANIMATION分类XML中分为1)ALPHA渐变透明度动画效果2)SCALE渐变尺寸伸缩动画效果3)TRANSLATE画面转换位置移动动画效果4)ROTATE画面转移旋转动画效果。JAVACODE中分为1)ALPHAANIMATION渐变透明度动画效果2)SCALEANIMATION渐变尺寸伸缩动画效果3)TRANSLATEANIMATION画面转换位置移动动画效果4)ROTATEANIMATION画面转移旋转动画效果。本文介绍的应用程序将使用ROTATEANIMATION画面转移旋转动画效果,其使用是代码如下ROTATEANIMATIONFLOATFROMDEGREES,FLOATTODEGREES,INTPIVOTXTYPE,FLOATPIVOTXVALUE,INTPIVOTYTYPE,FLOATPIVOTYVALUE参数说明1)FLOATFROMDEGREES旋转的开始角度。2)FLOATTODEGREES旋转的结束角度。3)INTPIVOTXTYPEX轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。4)FLOATPIVOTXVALUEX坐标的伸缩值。5)INTPIVOTYTYPEY轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。6)FLOATPIVOTYVALUEY坐标的伸缩值。本软件将使用ROTATEANIMATION画面转移旋转动画效果来实现当方向改变时指针的转动效果。3ANDROID的指南针软件的设计及准备31研究目标随着时代的发展和人民生活水平的提高,出差和出游已经成为人们日常生活中的常见事情。但是,当人们独自一人到达陌生的环境时,找不着路便成为人们常常遇到的问题。此时人们需要一款指南针软件来为他们指明方向。本设计旨在利用ANDROID系统提供的方向传感器来实现指南针的作用。1了解ANDROID系统UI设计的技术,;2熟悉指南针软件的开发环境及其测试环境;3设计基于ANDROID的指南针软件开始界面;4深入分析指南针的原理方法及界面的设计流程;5熟练掌握基于ANDROID的指南针软件的编写;6设计与实现基于ANDROID的指南针软件。本应用程序是基于ECLIPSE的开发环境,在ANDROID平台上的手机应用软件。32可行性研究1可行性研究(FEASIBILITYSTUDY),是指在调查的基础上,通过市场分析、技术分析、财务分析和国民经济分析,对各种投资项目的技术可行性与经济合理性进行的综合评价。可行性研究的基本任务,是对新建或改建项目的主要问题,从技术经济角度进行全面的分析研究,并对其投产后的经济效果进行预测,在既定的范围内进行方案论证的选择,以便最合理地利用资源,达到预定的社会效益和经济效益。可行性研究必须从系统总体出发,对技术、经济、财务、商业以至环境保护、法律

温馨提示

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

评论

0/150

提交评论