




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学毕业设计(论文)用纸基于Android的指南针软件的设计与实现摘要随着科技的发展,智能手机得到普及,由Google公司开发的基于Linux的自由及开放源代码的操作系统Android凭借其开放性及丰富的应用受到广大手机用户的喜爱,逐渐成为了市场占有量最大的移动平台操作系统,所以开发基于Android系统的应用软件变得十分必要。本应用软件针对智能手机用户日常出游、出差时经常遇到的找不着方向的问题,采用软件工程中结构化思想、标准的软件设计流程,从可行性研究、需求分析、系统设计及系统实现和测试等步骤来开发,基于Android开发平台,采用Java语言和xml布局编写,实现了利用手机自带的电子罗盘传感器来为用户指明方向的功能。
关键词:Android;
操作系统;智能手机;电子罗盘;指南针
DesignandimplementationofacompasssoftwarebasedonAndroidAbstractWiththedevelopmentoftechnology,smartphonesgainpopularity,developedbyGooglebasedonthefreeandopen-sourceLinuxoperatingsystemAndroid,withitsopennessandrichapplicationslovedbythemajorityofmobilephoneusers,hasbecomethelargestmarketshareofmobileoperatingsystemplatform,sodevelopersbasedontheAndroidsystemapplicationsoftwarebecomesnecessary.Thisapplicationsoftwareisdesignedfordealtheproblemwhichthesmartphoneuserscouldnotfindthedirection,andthisproblemalwayshappensduringthedailytraveltimeordailyoutings,usingstructuredsoftwareengineeringideas,usingstandardsoftwaredesignprocess,fromfeasibilitystudies,requirementsanalysis,systemsdesignandsystemimplementationandtestingstepstodevelop,basedonAndroiddevelopmentplatform,writteninJavalanguageandxmllayouttoachieveausethephonecomeswithanelectroniccompasssensortoindicatethedirectionoftheuserfunction.Keywords:Android;operatingsystem;smartphones;electroniccompass;compass目录摘要 iAbstract ii1 绪论 11.1 Android系统开发背景 11.1.1 研究背景 11.1.2 Android开发平台的优势 11.1.3 Android的市场前景 21.1.4 Android的国内市场 21.2 课题的目的与意义 31.3 本论文主要研究内容 32 Android相关知识 42.1 开发工具 42.1.1 Eclipse 42.1.2 AndroidSDK 52.1.3 ADT 52.2 Android系统的特性 52.3 Android系统平台架构 62.3.1 Linux内核 72.3.2 Android程序库 72.3.3 Android运行库 82.3.4 应用程序框架 82.3.5 应用程序 82.4 Android系统的四大核心组件 92.4.1 Activity及其生命周期 92.4.2 Service及其生命周期 102.4.3 BroadCastRececiver介绍 112.4.4 ContentProvider介绍 132.5 Android中的传感器 142.6 Android中的界面布局 152.7 AndroidAnimation动画 173 Android的指南针软件的设计及准备 193.1 研究目标 193.2 可行性研究 193.2.1 经济可行性 203.2.2 技术可行性 203.2.3 操作可行性 213.3 需求分析 223.3.1 实用性原则 223.3.2 安全可靠性原则 223.3.3 指南针软件的基本操作需求 223.3.4 指南针软件的基本界面需求 223.3.5 软件性能需求 233.3.6 运行环境需求 233.4 配置开发环境 233.4.1 安装JDK 233.4.2 安装Eclipse 253.4.3 安装SDK 253.4.4 安装ADT 263.5 制作指南针软件的材料准备 264 基于Android的指南针软件的实现 284.1 界面设计 284.2 方向传感器的应用 294.2.1 获取管理服务 294.2.2 方向传感监听器的注册和取消注册 294.2.3 onSensorChanged及其效果 304.3 程序退出对话框 314.4 AndroidManifest.xml 325 基于Android的指南针软件的测试 346 异常处理 39总结 40参考文献 41致谢 42附录 43外文原文及其中文翻译 47绪论Android系统开发背景研究背景Android开发平台的优势Android的市场前景Android的国内市场课题的目的与意义本论文主要研究内容Android相关知识开发工具Eclipse虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于
Java
开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础。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集成者,使用者只需下载各种语言的插件即可。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。AndroidSDK其最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与WindowsMobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。ADT目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。Android系统的特性开放性:在优势方面,Android平台首先就是其开放性,开放的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。挣脱运营商的束缚:在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。丰富的硬件选择:这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。不受任何限制的开发商:Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。无缝结合的Google应用:如今叱诧互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。Android系统平台架构Linux内核Android基于Linux2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。LinuxKernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(ServiceAccessPoint),专业点可以说是高内聚、低耦合。Android程序库Android运行库应用程序框架应用程序框架可以说是一个应用程序的核心,是所有参与开发的程序员共同使用和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性。其作用是让程序保持清晰和一目了然,在满足不同需求的同时又不互相影响。
Android系统提供给应用开发者的本身就是一个框架,所有的应用开发都必须遵守这个框架的原则。应用程序Android系统的四大核心组件Activity及其生命周期一个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如果需要重新恢复就需要重启。整个生命周期,从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()里面设置的状态。图2-2Activity生命周期过程及历经的状态改变Service及其生命周期图2-3Service生命周期过程及历经的状态改变BroadCastRececiver介绍ContentProvider介绍Android中的传感器图2-4方向传感器示意图Android中的界面布局图2-5LinearLayout中水平放置图2-6LinearLayout中垂直放置图2-7TableLayout布局图2-8AbsoluteLayout布局图2-9FrameLayout布局图2-10AndroidAnimation动画Drawable最强大的功能是:显示Animation。\o"查看Android的全部文章"Android
SDK介绍了2种Animation:1)TweenAnimation(渐变动画):通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果。2)FrameAnimation(帧动画)
:顺序播放事先做好的图像,类似放电影在使用Animation前,我们先学习如何定义Animation,这对我们使用Animation会有很大的帮助。Animation是以XML格式定义的,定义好的XML文件存放在res/anim中。TweenAnimation分类:Android的指南针软件的设计及准备研究目标可行性研究1.可行性研究(FeasibilityStudy),是指在调查的基础上,通过市场分析、技术分析、财务分析和国民经济分析,对各种投资项目的技术可行性与经济合理性进行的综合评价。可行性研究的基本任务,是对新建或改建项目的主要问题,从技术经济角度进行全面的分析研究,并对其投产后的经济效果进行预测,在既定的范围内进行方案论证的选择,以便最合理地利用资源,达到预定的社会效益和经济效益。可行性研究必须从系统总体出发,对技术、经济、财务、商业以至环境保护、法律等多个方面进行分析和论证,以确定建设项目是否可行,为正确进行投资决策提供科学依据。项目的可行性研究是对多因素、多目标系统进行的不断的分析研究、评价和决策的过程。它需要有各方面知识的专业人才通力合作才能完成。可行性研究不仅应用于建设项目,还可应用于科学技术和工业发展的各个阶段和各个方面。例如,工业发展规划、新技术的开发、产品更新换代、企业技术改造等工作的前期,都可应用可行性研究。可行性研究自20世纪30年代美国开发田纳西河流域时开始采用以后,已逐步形成一套较为完整的理论、程序和方法。1978年联合国工业发展组织编制了《工业可行性研究编制手册》。1980年,该组织与阿拉伯国家工业发展中心共同编辑《工业项目评价手册》。中国从1982年开始,已将可行性研究列为基本建设中的一项重要程序需求分析是一项重要的工作,也是最困难的工作。该阶段工作有以下特点:2.供需交流困难:在软件生存周期中,其它四个阶段都是面向软件技术问题,只有本阶段是面向用户的。需求分析是对用户的业务活动进行分析,明确在用户的业务环境中软件系统应该"做什么"。但是在开始时,开发人员和用户双方都不能准确地提出系统要"做什么?"。因为软件开发人员不是用户问题领域的专家,不熟悉用户的业务活动和业务环境,又不可能在短期内搞清楚;而用户不熟悉计算机应用的有关问题。由于双方互相不了解对方的工作,又缺乏共同语言,所以在交流时存在着隔阂。3.需求动态化:对于一个大型而复杂的软件系统,用户很难精确完整地提出它的功能和性能要求。一开始只能提出一个大概、模糊的功能,只有经过长时间的反复认识才逐步明确。有时进入到设计、编程阶段才能明确,更有甚者,到开发后期还在提新的要求。这无疑给软件开发带来困难。4.后续影响复杂:需求分析是软件开发的基础。假定在该阶段发现一个错误,解决它需要用一小时的时间,到设计、编程、测试和维护阶段解决,则要花2.5、5、25、100倍的时间。因此,对于大型复杂系统而言,首先要进行可行性研究。开发人员对用户的要求及现实环境进行调查、了解,从技术、经济和社会因素等多个方面进行研究并论证该软件项目的可行性,根据可行性研究的结果,决定项目的取舍。经济可行性经济可行性是指可以使用的资源的可能性(资源包括人力资源、自然资源和资金条件)。经济可行性包括两个方面的内容:一是某一备选方案占有和使用经济资源的可能性,进而实现政策目标的可能性;二是实施某一政策方案所需花费的成本和取得的收益。政府的财政资源是有限的,任何政策方案占有和使用的经济资源也是有限的。因此,任何一项公共政策都存在一个争取公共经济资源的问题。一般说来,“公共政策的经济资源的占有量与其政策目标的期望值成正比例关系。”当然,这还涉及到一个成本效益问题。如果某一方案的成本大于收益,显然这项政策是不可行的。技术可行性技术可行性是指决策的技术和决策方案的技术不能突破组织所拥有的或有关人员所掌握的技术资源条件的边界。进行技术可行性分析时,要注意以下一些问题。1.全面考虑系统开发过程所涉及的所有技术问题软件开发涉及多方面的技术,包括开发方法、软硬件平台、网络结构、系统布局和结构、输入输出技术、系统相关技术等。应该全面和客观地分析软件开发所涉及的技术,以及这些技术的成熟度和现实性。2.尽可能采用成熟技术成熟技术是被多人采用并被反复证明行之有效的技术,因此采用成熟技术一般具有较高的成功率。另外,成熟技术经过长时间、大范围使用、补充和优化,其精细程度、优化程度、可操作性、经济性等方面要比新技术好。鉴于以上原因,软件项目开发过程中,在可以满足系统开发需要、能够适应系统发展、保证开发成本的条件下,应该尽量采用成熟技术。3.慎重引入先进技术在软件项目开发过程中,有时为了解决系统的特定问题,为了使所开发系统具有更好的适应性,需要采用某些先进或前沿技术。在选用先进技术时,需要全面分析所选技术的成熟程度。有许多报道的先进技术或科研成果实际上仍处在实验室阶段,其实用性和适应性并没有得到完全解决,也没有经过大量实践验证,在选择这种技术时必须慎重。例如,许多文章中已经报道了指纹识别技术,而且市场上也有实验性产品,但指纹识别技术至今仍有许多重大技术难题没有突破,离具体应用仍有一定距离。因此,在项目开发中要谨慎选用这种技术。如果不加分析,在项目中盲目采用指纹识别技术,应用时肯定会出现许多难以解决的具体问题。4.着眼于具体的开发环境和开发人员许多技术总的来说可能是成熟和可行的,但是在开发队伍中如果没有人掌握这种技术,而且在项目组中又没有引进掌握这种技术的人员,那么这种技术对本系统的开发仍然是不可行的。例如,分布对象技术是分布式系统的一种通用技术,但是如果在开发队伍中没有人掌握这种技术,那么从技术可行性来看就是不可行的。5.技术可行性评价技术可行性评价是通过原有系统和欲开发系统的系统流程图和数据流图,对系统进行比较,分析新系统具有的优越性,以及对设备、现有软件、用户、系统运行、开发环境、运行环境和经费支出的影响,然后评价新系统的技术可行性。主要包括以下几个方面:1)在限制条件下,功能目标是否能达到;2)利用现有技术,性能目标是否能够达到;3)对开发人员数量和质量的要求,并说明能否满足;4)在规定期限内,开发是否能够完成。由此可以判断该软件满足:操作可行性需求分析
在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后,他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤。但在近十年内,越来越多的人认识到,需求分析是整个过程中最关键的一个部分。假如在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件项目无法在规定的时间里完工。实用性原则
安全可靠性原则
指南针软件的基本操作需求指南针软件的基本界面需求软件性能需求当使用指南针软件时,手机在转动一定角度时,软件一定要快速响应作出相应的旋转指针的变化。运行环境需求操作系统:Windows7支持环境:Android2.1以上版本开发环境:Eclipse+ADT配置开发环境安装JDKJDK(Java
Development
Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(Java
Development
Kit)是Sun
Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。
JDK包含的基本组件包括:
javac
–
编译器,将源程序转成字节码
jar
–
打包工具,将相关的类文件打包成一个文件
javadoc
–
文档生成器,从源码注释中提取文档
jdb
–
debugger,查错工具
JDK中还包括完整的JRE(Java
Runtime
Environment,Java运行环境),也被称为private
runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。
JDK中还包括各种例子程序,用以展示Java
API中的各部分。
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
JDK一般有三种版本:
SE(J2SE),standard
edition,标准版,是我们通常用的一个版本
EE(J2EE),enterpsise
edtion,企业版,使用这种JDK开发J2EE应用程序,
ME(J2ME),micro
edtion,主要用于移动设备、嵌入式设备上的java应用程序
Java开发工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。
JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java
API包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,Java
API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。
作为JDK实用程序,工具库中有七种主要程序。
Javac:Java编译器,将Java源代码转换成字节码。
Java:Java解释器,直接从类文件执行Java应用程序字节代码。
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javadoc:根据Java源码及说明语句生成HTML文档。
Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。图3-1JDK下载页面图3-2“环境变量”对话框安装Eclipse图3-3Eclipse下载页面安装SDK安装ADT图3-4ADT下载页面图3-5AddReppository对话框制作指南针软件的材料准备图3-6指南针方位图图3-7指南针指针图图3-8指南者应用图标
基于Android的指南针软件的实现界面设计相关代码:<?xmlversion="1.0"encoding="utf-8"?><FrameLayoutxmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#fff" ><ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="fitCenter" android:src="@drawable/background"/><ImageView android:id="@+id/znzImage" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="fitCenter" android:src="@drawable/compass1"/></FrameLayout>图4-1布局效果图方向传感器的应用获取管理服务方向传感监听器的注册和取消注册@OverrideprotectedvoidonResume(){ super.onResume(); mSensorManager.registerListener(this ,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);}@OverrideprotectedvoidonPause(){ mSensorManager.unregisterListener(this); super.onPause(); }@OverrideprotectedvoidonStop(){ mSensorManager.unregisterListener(this); super.onStop(); }onSensorChanged及其效果@Override publicvoidonSensorChanged(SensorEventevent){ //TODOAuto-generatedmethodstub intsensorType=event.sensor.getType(); switch(sensorType){ caseSensor.TYPE_ORIENTATION: floatdegree=event.values[0];//获取z转过的角度 //旋转动画 RotateAnimationra=newRotateAnimation(currentDegree,-degree,Animation.RELATIVE_TO_SELF,0.5f ,Animation.RELATIVE_TO_SELF,0.5f); //动画持续时间 ra.setDuration(100); image.startAnimation(ra); currentDegree=-degree; break; } }图4-2触发事件前图4-3触发事件发生后程序退出对话框相关代码:@Override publicbooleanonKeyDown(intkeyCode,KeyEventevent){ if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0){ newAlertDialog.Builder(Zhinanzhen.this) .setMessage("确定退出吗?") .setTitle("提示").setPositiveButton("确定",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ IntentmediaServer=newIntent(Zhinanzhen.this,Zhinanzhen.class); stopService(mediaServer); finish(); } }).setNegativeButton("取消",null).show(); returnfalse; }returnsuper.onKeyDown(keyCode,event); }}图4-4退出对话框效果图AndroidManifest.xml相关代码:<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="/apk/res/android"package=""android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="10"/><applicationandroid:icon="@drawable/icon"android:label="@string/app_name"><activityandroid:label="@string/app_name"android:name=".Zhinanzhen"android:screenOrientation="portrait"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity></application></manifest>
基于Android的指南针软件的测试软件测试(英语:softwaretesting),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。由于基于Android的指南针软件是利用Android系统提供的方向传感器来实现指南针的效果,且指南针软件的演示需要方向上的变化,所以基于Android的指南针软件不能利用模拟器来进行演示,因此使用带有方向传感器功能的Android手机来进行演示。在测试的手机上安装zhinanzhen.apk图5-1指南针软件安装包图5-2指南针软件的图标经过测试,在手机上点击指南针软件的安装包,可以正常启动安装程序,并可在用户界面中找到指南针软件的图标。点击指南针图标,进入程序图5-3用户界面中的指南针图标图5-4点击指南针软件的图标图5-5进入程序显示的界面经过测试,点击指南针软件的图标进入指南针程序的功能成功实现,未发现任何异常情况。界面显示测试图5-6指南针软件界面进过测试,指南针软件的界面显示正确,指针的位置及方位图的位置正确,没有出现异常。指针旋转的测试水平放置手机,将手机水平顺时针旋转90度,观察指针是否转动图5-7水平放置手机时的界面图5-8手机水平顺时针旋转90度水平放置手机,将手机水平逆时针旋转90度,观察指针是否转动图5-9水平放置手机时的界面图5-10手机水平逆时针旋转90度进过测试,当水平放置手机时旋转手机指针会随之产生相应的旋转变化,该功能成功实现,但是当手机旋转至横向时,手机出现屏幕旋转变化异常,无法正常使用。指向的测试经过测试指南针软件的指向基本正确,可正常使用。返回键的测试按下返回键,出现退出对话框图5-11退出对话框选择“取消”,返回程序界面图5-12返回程序界面选择“确定”,退出程序,返回到用户界面图5-13用户界面经过测试,返回键功能成功实现,未发现异常异常处理在测试过程中发现一处异常,即手机旋转是发生屏幕随之旋转进行横-竖屏的转换,影响程序的正常使用,所以使用一下两种方法处理:手机系统中锁定竖屏,取消自动旋转屏幕的功能,如图6-1所示:图6-1自动旋转屏幕的设置代码实现在AndroidManifest.xml中的Activity中加入android:screenOrientation="portrait"竖屏显示代码实现锁定竖屏的功能。总结
参考文献刘正,陈强.基于Android的GPS应用中的研究与开发[J].中国西部科技.2010(32)夏勇峰.小手机,大软件[J].IT经理世界.2008(15)王茜.Android嵌入式系统架构及内核浅析[J].电脑开发与应用.2011(04)李杨,冯刚,李亮,罗拥华.基于Android的多媒体应用开发与研究[J].计算机与现代化.2011(04)张仕成.基于GoogleAndroid平台的应用程序开发与研究[J].电脑知识与技术.2009(28)公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化.2008(08)芝麻开门——进入智能手机的世界[J].少年电脑世界.2010(12)Kirubakaran.
Mobileapplicationtesting—Challengesandsolutionapproachthroughautomation.
[J].2013Vilkomir.
Evaluationoft-wiseApproachforTestingLogicalExpressionsinSoftware.
[J].2013Martins.
UsabilitytestingofaBrain-ComputerInterface.
[J].2013Dukes.Acasestudyonwebapplicationsecuritytestingwithtoolsandmanualtesting.
[J].2013ErikaMichelleChin.HelpingDevelopersConstructSecureMobileApplications.
[D].2013
致谢作者在设计(论文)期间都是在李建林和闫宇帅老师全面、具体指导下完成进行的。李建林和闫宇帅老师渊博的学识、敏锐的思维、民主而严谨的作风使学生受益非浅,并终生难忘。感谢我的学友和朋友对我的关心和帮助,在大学四年里,我在学习和思想上都得到了很大的进步和提高,出来自身的努力之外,跟家要感谢同学和朋友们对我的帮助和支持,我的进步与你们息息相关。最后感谢百度提供的搜索,使我在设计和实现软件功能时遇到问题能够及时得到解决,同时感谢Google提供的开发工具和开发指导。
附录Zhinanzhen.javapackage;import.R;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.DialogInterface;importandroid.content.Intent;importandroid.hardware.Sensor;importandroid.hardware.SensorEvent;importandroid.hardware.SensorEventListener;importandroid.hardware.SensorManager;importandroid.os.Bundle;importandroid.view.KeyEvent;importandroid.view.animation.Animation;importandroid.view.animation.RotateAnimation;importandroid.widget.ImageView;/***@authortyut*@version1.0*/publicclassZhinanzhenextendsActivityimplementsSensorEventListener{ ImageViewimage; floatcurrentDegree=0f; SensorManagermSensorManager; /**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);image=(ImageView)findViewById(R.id.znzImage);mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);}@OverrideprotectedvoidonResume(){ super.onResume(); mSensorManager.registerListener(this ,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);}@OverrideprotectedvoidonPause(){ mSensorManager.unregisterListener(this); super.onPause(); }@OverrideprotectedvoidonStop(){ mSensorManager.unregisterListener(this); super.onStop(); } @Override publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){ //TODOAuto-generatedmethodstub } @Override publicvoidonSensorChanged(SensorEventevent){ //TODOAuto-generatedmethodstub intsensorType=event.sensor.getType(); switch(sensorType){ caseSensor.TYPE_ORIENTATION: floatdegree=event.values[0]; RotateAnimationra=n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 相关性强的2024文化产业管理证书考试试题及答案
- 线缆测试题 及答案
- 罗湖技师考核试题及答案
- 目视管理考试试题及答案
- 网络规划设计师备考资料分享试题及答案
- 税务师考试后备计划准备试题及答案
- 半天妖考试试题及答案
- 2025年上海市安全员-A证考试题库及答案
- 精细化心理咨询师考试准备试题及答案
- 激光技术工程师证书考试中的常见试题及答案
- 废气治理设施运行管理规程制度
- 西安庆华民用爆破器材股份有限公司百色分公司增雨防雹火箭弹生产线建设项目环评报告
- 泥石流灾害综合治理工程可行性研究报告
- 智能建造施工技术应用实施方案
- 机械设计说明书-多功能自动跑步机机械部分设计
- 英语小故事(中英文对照)课件
- 《古罗马人的数字》课件
- 2022-2023学年上海市徐汇区世界外国语中学八年级(下)期中物理试卷
- 注塑工艺培训-课件
- 钓鱼中各种氨基酸诱食剂说明书及使用方法
- 会计事务所内控审计所需资料清单
评论
0/150
提交评论