毕业论文-基于安卓的多功能手电筒APP设计与实现_第1页
毕业论文-基于安卓的多功能手电筒APP设计与实现_第2页
毕业论文-基于安卓的多功能手电筒APP设计与实现_第3页
毕业论文-基于安卓的多功能手电筒APP设计与实现_第4页
毕业论文-基于安卓的多功能手电筒APP设计与实现_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文PAGEPAGE1毕业论文(设计)论文(设计)题目:基于安卓的多功能手电筒APP设计与实现姓名学号学院软件学院专业数字媒体技术年级指导教师2016年5月11日PAGEPAGE1目录TOC\o"1-3"\f\h\z摘要 1ABSTRACT 2第1章绪论 31.1研究背景 31.2研究现状 41.3本文的主要工作 51.4论文的组织结构 6第2章Android相关技术介绍 72.1Android系统开发介绍 72.1.1Android技术简介 72.1.2Android的应用程序组件 82.2AndroidStudio简介 92.2.1架构组成 92.2.2主要功能 10第3章需求分析 123.1多功能手电筒的的功能需求 123.2多功能手电筒的性能需求 13第4章多功能手电筒的架构设计 144.1多功能手电筒架构设计目标和原则 144.2多功能手电筒的总体设计 144.3多功能手电筒的功能设计 15第5章多功能手电筒的详细设计与实现 165.1主界面设计 165.2多功能手电筒的模块设计 185.2.1手电筒详细设计 185.2.2发送摩尔斯电码详细设计 205.2.3彩色手电筒详细设计 24PAGEPAGE25.2.4警灯的详细设计 285.3简单设置的实现 28第6章多功能手电筒的实现与效果测试 296.1多功能手电筒总体实现与测试 296.2多功能手电筒模块实现与测试 30结论 31致谢 32参考文献 33附录1英文原文 34附录2中文译文 38PAGEPAGE40基于安卓的多功能手电筒APP设计与实现摘要随着第四代移动通信技术的发展、推广与应用,以及智能手机高速发展并且走进普通大众的生活,成为不可缺少的生活必需品,手机应用的开发与更新速度也日益加快。各种手机应用为智能机用户提供了舒适,方便快捷,环保而又丰富多彩的生活。本应用就是一款通过Java编程语言,在AndroidStudio这一谷歌自主研发的Android开发平台上设计的基于Android的多功能手电筒手机应用程序。本应用主要包括手机闪光灯实现手电筒的开关,通过屏幕的亮度调节以及颜色的变化实现彩色灯,以及通过屏幕闪烁实现警灯,还有新颖的功能发送摩尔斯电码等功能。这些可以满足用户对手电筒的基本需求,并且使得手电筒这一应用更加具有可玩性。本文详细介绍了开发多功能手电筒的设计流程,各个功能的设计,代码编写实现,调试修改,以及测试改进,对程序进行调整优化,并且通过对界面组件进行布局,使得用户有更佳的体验。关键字:手电筒;多功能;安卓;基础应用ABSTRACTWiththedevelopment,popularizationandapplicationofthefourthgenerationmobilecommunicationtechnology,aswellastherapiddevelopmentofsmartphonesandtheygointothelivesofordinarypeopleandbecomeanindispensablenecessitiesoflife,thedevelopmentandupdatingspeedofmobilephoneapplicationsisalsoincreasingdaybyday.Avarietyofmobileapplicationsprovideintelligentmachineusersacomfortable,convenient,environmentallyfriendlyandcolorfullife.Thisapplicationisakindofmulti-functionlflashlightmobilephoneapplicationprogrambasedonAndroid,whichisdesignedintheAndroiddevelopmentplatformwhichiscalledAndroidStudio,andisprogrammedwithJava.Itissuchamobileapplicationwhichincludessomefunctionslikeflashlightthroughcontrollingmobileflash,colorlightthroughadjustingthebrightnessofthescreenandchangingthecolorofthescreen,policelightthroughtheflickerofscreen,aswellassendingMorsecodewiththeflickerofflash.Thesefunctionscanmeetthebasicneedsoftheusertotheflashlight,andmakestheflashlightthisapplicationmorefuntoplay.Thispaperintroducesthedevelopmentflowofmulti-functionalflashlight,thedesignofeveryfunction,howtoprogram,debug,testandimprove,aswellasadjustingandoptimizingtheprogram.Userscanhaveabetterexperiencethroughthelayoutofinterfacecomponents.Keyword:flashlight;multi-function;Android;basicapplication

第1章绪论1.1研究背景智能手机,是指像个人电脑一样,具有独立的操作系统,独立的运行空间,可以由用户自行安装软件、游戏、导航等第三方服务商提供的程序,并可以通过移动通讯网络来实现无线网络接入手机类型的总称。智能手机的使用范围已经布满全世界,各个手机厂商纷纷转向智能手机的生产与销售,其中Google、苹果、三星、诺基亚、HTC这五大品牌在全世界最广为人知,而小米、华为、魅族、联想、中兴、酷派等品牌在中国备受关注。智能手机飞速发展,成为人们生活中的必需品。 智能手机有几大特点具备无线接入互联网的能力:即需要支持GSM网络下的GPRS或者CDMA网络的CDMA1X或3G(WCDMA、CDMA-2000、TD-CDMA)网络,甚至4G(HSPA+、FDD-LTE、TDD-LTE)。具有PDA的功能:包括PIM(个人信息管理)、日程记事、任务安排、多媒体应用、浏览网页。具有开放性的操作系统:拥有独立的核心处理器(CPU)和内存,可以安装更多的应用程序,使智能手机的功能可以得到无限扩展。人性化:可以根据个人需要扩展机器功能。根据个人需要,实时扩展机器内置功能,以及软件升级,智能识别软件兼容性,实现了软件市场同步的人性化功能。功能强大:扩展性能强,第三方软件支持多。运行速度快:随着半导体业的发展,核心处理器(CPU)发展迅速,使智能手机在运行方面越来越极速。智能手机支持多种操作系统,比如:谷歌的Android、苹果公司的iOS、微软公司的WindowsPhone、RIM公司的黑莓Blackberry、塞班公司的Symbian等,其中在智能手机操作系统份额最重的是Android,约占80%,成为全球第一大智能操作系统。Android一词的本意是指“机器人”,同时也是谷歌公司于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。在2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且当天谷歌宣布建立一个全球性的组织联盟,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商组成,并与84家硬件制造商、软件开发商及电信运营商组成开放手持设备联盟,共同研发改良Android系统。Android是基于Linux的自由以及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑等,由谷歌公司以及开放手机联盟领导和开发。2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。Android应用也随着Android的发展如雨后春笋般出现,现在在Android应用商店中可以看到大量的软件,这些软件涉及到人们生活中的方方面面,如网上购物,网上缴费,游戏娱乐等等方便着人们的生活。而随着手机硬件的发展,智能手机也在不断地发生着改变,带有闪光灯的高像素摄像头成为了爱美自拍人士的首选,现在智能手机基本上都配备有闪光灯,这就使得我们可以开发一款基于这一硬件的智能手机应用--多功能手电筒,来代替人们日常的手电筒,可以节约电池,减少污染,循环利用,携带方便。一般手机都有自带的手电筒的应用程序,但是其功能单一,只有打开和关闭闪光灯两种状态。这里,我将对手电筒系统进行修改,增加一些新的功能,使之更加实用。1.2研究现状中国移动设备的制造发展迅速,截止2015年第三季度,国内活跃设备数达到10.8亿,说明我国已经进入了智能时代,人们几乎人手一部智能设备,而在2012年智能手机在国内的份额还不是很高,智能设备尤其是智能手机的的高速发展,以其方便性,多功能性,实用性,以及现在很多厂商的廉价高性能的追求,使得智能手机在全球发展迅猛,国内更是盛况空前,各个品牌每年都有多样产品推出,也加速了智能手机的更新换代,同时,智能手机也实现了出口创汇,促进了经济的发展,也推动了我国的创新能力。在国内所有活跃的移动智能设备中,安卓平台设备依旧占据主要地位,约为62%,霸主地位不可撼动。在国内Android设备厂商中只有三星一家为国外品牌,其余都是国内品牌。小米、魅族等厂商通过其对安卓系统的优化改良,形成了自己独特的操作系统风格,这些在安卓系统上的定制版本操作系统使得这些公司迅猛发展。安卓系统的优化与改良仍然是手机厂商的一大卖点。安卓系统的价格低廉,因为Android是开源的,所有的生产厂商都可以免费使用,对其进行个性化定制也变的低成本,并且安卓系统给予终端厂商和开发者更大的灵活性,开发者在程序的开发移植上更为方便,生产厂商不需要再考虑终端内容审核问题,在终端厂商、电信运营商和第三方应用开发商的推动下,用户可选择的内容进一步丰富。各大Android应用商店呈现百花齐放的态势。随着应用商店的不断发展和开发者的涌入,Android平台的应用资源优势正逐渐扩大。在信息高度发达,即将迈入数据时代的今天,智能手机已经很普及了,而各种Android应用也拥有了庞大的用户。多功能手电筒作为一种简单实用的功能也必将为人们的生活带来方便,通过手机实现手电筒功能,可以应对一些突发状况,尤其是在夜晚,还可以通过发射摩尔斯电码进行求救,以及定制属于你自己的暗号密语,通过警灯来吸引人们的注意来保护自己,彩色的屏幕可以为你的单调的生活增加一些乐趣。1.3本文的主要工作在基于现实中智能手机的发展状况以及Android系统的应用,开发一款超级手电筒是有意义的,可以作为对Android系统应用开发的初步认识入门,并以之为跳板深入学习Android有很大帮助,多功能手电筒也是一款对现实生活有意义的应用。本文在当前Android的发展现状基础上,展示了一款基础应用--多功能手电筒的逻辑思路、系统结构以及各个功能实现的详细过程。本文主要采用Android的View,AppCompatActivity等Android的基本组件来实现多功能手电筒的。当点击进入软件时,出现的是一个手电筒界面,在一个星空背景之中有一个手电筒,当点击手电筒中部时,会打开手电筒,再一次点击会关闭,在界面的右上侧有一个按钮,点击该按钮回进入主界面,主界面中显示的是各种功能,第一个是手电筒,第二个是发送摩尔斯电码,第三个是彩灯,第四个是警灯,最后一个是设置,点击图标进入相应的界面之中进行操作。本文主要是对这几个功能的实现开发的介绍。1.4论文的组织结构绪论:主要描述的是基于安卓的多功能手电筒开发背景,Android以及智能手机发展的现状,本论文研究的主要目的和意义和本文需要完成的工作。Android相关技术介绍:Android基本技术简介,Android工作机制,开发所运用到的基本框架组件View、AppCompatActivity等的简介,以及现阶段Android比较常用的开发工具AndroidStudio平台的介绍。需求分析:对多功能手动电筒所需要的功能以及户所需要的性能进行分析。多功能手电筒的架构设计:描述应用的设计目标和原则,并介绍应用的总体设计和功能设计,为详细设计提供参考,也使得设计的方向清晰明了。多功能手电筒的详细设计与实现:介绍应用中的具体的界面构成以及各个功能的详细实现过程。多功能手电筒的实现与测试:描述多功能手电筒的总体实现以及各个功能的模块实现,并对实现过程中的问题进行说明。

第2章Android相关技术介绍2.1Android系统开发介绍2.1.1Android技术简介Android作为一个系统,是一个运行在Linux核心上的Java基础的操作系统。Android的系统框架和其操作系统一样,采用分层架构的思想,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层及Linux内核层。应用程序层该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。应用程序框架层该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。系统库和Android运行时系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。Linux内核Android核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。Linux提供的是最核心最基础的一些功能。Android层次总结Android的系统架构采用分层架构的思想,架构清晰,层次分明,协同工作。Android的系统架构不仅从宏观上认识了Android系统,同时,也给我们的学习与实践指明了方向。若是从事Android应用开发,那应该研究Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事Android驱动开发,那应该研究Android的Linux内核。总之,找准切入点,实践出真知。Android项目结构中包括java源代码目录、mainfests文件夹、res资源文件夹,GradleScripts文件夹。Java文件夹中存放Android应用程序的所有源代码,mainfests文件夹中是AndroidMainfest.xml项目清单文件,该文件列出了应用程序提供的功能,开发好的各种组件需要在此文件中进行配置,尤其是Activity、Intent、Service以及ContentProvider,凡需要用到的组件都需要在此文件中注册,当使用系统内置的应用时,还需要在此文件中声明使用权限,该文件也是所有Android应用程序都需要的文件,描述了程序包的全局变量,包括公开的应用程序组件和每个组件的实现类,什么数据可以操作,在什么地方可以运行等。res资源目录存放使用到的各种资源,如XML界面文件、图片数据等。GradleScripts文件夹中是各种Gradle文件,Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言。2.1.2Android的应用程序组件在Android程序中没有入口点(Main方法),取而代之的是一系列应用程序组件,这些组件都可以单独实例化。对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。Activity(Android的窗体)Activity是Android的核心类,相当于C/S程序中的窗体或者Web程序的页面。每一个Activity提供了一个可视化的区域。在这个区域可以放置各种Android控件,如按钮、图像、文本框等。在Activity类中有一个onCreate事件方法,一般在该方法中对Activity进行初始化。通过setContentView方法可以将View放到Activity上。绑定后,Activity会显示View上的控件。Service(服务)Service是提供连续信息的应用程序。它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台,直到用户停止该服务或服务运行结束。本系统客户端扩展功能就是采用Service来进行设计和开发的。BroadcastReceiver(广播接收器)广播接收器的唯一功能是接收广播动作,以及对广播动作做出反应。很多时候,广播动作是由系统发出的,例如时区的变化、电池电量不足、收到短信等。此外,应用程序还可以发送广播动作,例如,通知其他程序数据已经下载完毕,并且这些数据已经可以使用了。ContentProvider(内容提供者)内容提供者可以为其他应用程序提供数据,这些数据可以保存在系统文件中。在ContentProvider类中定义了一系列的方法,通过这些方法可以是其他应用程序获得内容提供者所提供的数据。但在应用程序中不能直接调用,而需要通过android.Content.ContentResolver类的方法来调用内容提供者类中提供的方法。2.2AndroidStudio简介2.2.1架构组成基于IDEA,AndroidStudio提供以下功能:基于Gradle的构建支持Android专属的重构和快速修复提示工具以捕获性能、可用性、版本兼容性等问题支持ProGuard和应用签名基于模板的向导来生成常用的Android应用设计和组件功能强大的布局编辑器,可以让你拖拉UI控件并进行效果预览2.2.2主要功能2013年5月16日,在I/O大会上,谷歌推出新的Android开发环境——AndroidStudio,并对开发者控制台进行了改进,增加了五个新的功能,包括优化小贴士、应用翻译服务、推荐跟踪、营收曲线图、用版测试和阶段性展示。优化小贴士:在主体中打开你的应用,点击小贴士,会得到这样的建议:为你的应用开发平板电脑版本。应用翻译服务:允许开发者直接在开发主体中获得专业的翻译。上传你的需求,选择翻译,其会显示翻译方和价格,并在一周内发回译本。推荐跟踪:允许开发者找出最有效的广告营收曲线图:向开发者展示其应用营收,以国家进行划分试用版测试和阶段性展示:开发者可以对应用进行测试,然后向测试用户推出,测试结果不会对外公布。当一个版本的测试结束,开发者可以向特定比例用户推出。AndroidStudio这款开发工具被首次公布,这也是为了方便开发者基于Android开发。首先解决的一个问题是多分辨率。Android设备拥有大量不同尺寸的屏幕和分辨率,根据新的Studio,开发者可以很方便的调整在各个分辨率设备上的应用。同时Studio还解决语言问题,多语言版本(但是没有中文版本)、支持翻译都让开发者更适应全球开发环境。Studio还提供收入记录功能。最大的改变在于Beta测试的功能。Studio提供了BetaTesting,可以让开发者很方便试运行。2015年5月29日,在谷歌I/O开发者大会上,谷歌发布AndroidStudio1.3版,支持C++编辑和查错功能。AndroidStudio1.3版开发码代码变得更加容易,速度提升,而且支持C++编辑和查错功能。

第3章需求分析3.1多功能手电筒的的功能需求对于应用的设计,首要原则是以用户为主,以用户满意为宗旨,所以要分析用户对超级手电筒功能需求。多功能手电筒首先是一款手电筒类的软件,所以其最原始的需求就是用户在黑暗下对光亮的需求,以方便照明,虽然现在手机都会自带手电筒软件,但作为一款多功能软件,还是要将手电筒照明的功能考虑进去,以方便用户的使用,所以应用的首个功能是手电筒照明。由于手电筒原理是唤醒闪光灯,设置其开关状态,所以对于闪光灯还是有一定的损伤,所以对于手电筒需要有一定的改进,所以在分析智能手机和android应用程序的基础上,需要开发出与之适应的功能。所以开发出手机屏幕来代替手电筒,将手机屏幕亮度调到最大,基本可以满足照明的需求,但仅仅调整屏幕亮度并没有新奇之处,因为手机设置之中就自带屏幕亮度调整,所以我们就将彩色屏幕应用其中,不只是将屏幕的亮度调至最大,而且还在屏幕中心设有色彩选择菜单,你可以选择自己喜欢的颜色将屏幕亮度调到最大,而且这种彩色灯还适应在其他颜色亮光下凸显自己,并且还可以在黑暗中营造氛围,比如在讲恐怖故事时,适时的绿色光亮,给人一种诡异的感觉,在浪漫的情调下,粉红色为人带来温暖温馨。用户可以自己选择自己喜欢的颜色,定制自己的彩色灯。然而彩色的灯光并不一定能够满足用户的需要,人们追求的实个性,独特,凸显自己,而不是生活在一个静态的世界里。因此,在设计功能时,需要考虑一种个性需求,所以增加了警灯这一功能。警灯是很吸引人的眼球的,因为其独特的颜色,所以在颜色的基础上,加上了动态的效果,以一定的频率闪动。警灯并不一定是为了警示效果,当身处黑暗中,警灯容易吸引人,在演唱会上闪烁的警灯也为演唱会增加一种狂野不羁的效果。警灯是以冷暖色调的变化为依托的,所以选用的是红色和蓝色这两种最极端相对的颜色来作为警灯闪动的基础,并且辅以黑色,交替变换,形成很好的效果。在考虑闪烁的基础上,闪光灯也可以进行相应的处理,所以就以闪光灯的闪烁为基础来应用摩尔斯电码来传递消息,这样既可以凸显个性,又可以充分利用资源。摩尔斯电码是用来传递加密信息的,而且起传播是要有一定距离的,所以以闪光灯强烈的光束是很满足条件的。所以利用摩尔斯电码来发送属于你自己的信息,发送属于你自己的暗号,属于两个人或者更多人的密语,是多么令人兴奋的事情。以上就是对多功能手电筒功能需求的分析,确定了手电筒、彩色灯、警灯和摩尔斯电码四种功能为基础进行开发。3.2多功能手电筒的性能需求手机软件要有良好的用户体验,而良好的用户体验是建立在好的性能方面的,而评价应用的性能的标准是以界面、用户操作、响应速度、操作提示等方面来进行指定的。首先要有良好的用户界面,好的用户界面不仅包括良好的美工,还包括良好的进入界面,主菜单的整体布局等方面,多功能手电筒的见面布局是以基础的进入界面为手电筒界面,点击按钮进入主界面,主界面线性布局各种功能,点击相应的按钮就会进入相应功能的操作界面,虽然基础,但很实用,所以用户的操作也会非常方便。关于响应速度,应用程序的响应速度还是比较快的,但由于考虑对闪光灯算还,所以对于上光灯的相应设置为0.2秒,响应稍显慢,但基本不会影响使用。在操作提示方面,对于退出方面,设置为点击两次退出应用,点击一次会有提示:“再按一次退出”。在进入彩灯界面中,会有“请点击屏幕中央显示调色板”并且会在三秒后自动消失,这样可以提示用户点击中央显示调色板来调屏幕的颜色。在发送摩尔斯电码界面,当发送的内容错误时,会提醒用户只能发送数字、字母和空格,使用户了解可以发送的内容,良好的提示界面对于一个用户的影响很大,这相当于游戏中的新手引导,引导玩家迅速上手。

第4章多功能手电筒的架构设计4.1多功能手电筒架构设计目标和原则实现手电筒的基本功能,可以照明;照明的多方式实现,使用闪光灯、屏幕作作为照明工具;多功能性,符合设计的基本要求,满足用户需求;易用性,界面良好,容易操作,容易上手;可靠性,功能响应快,有一定的容错能力。4.2多功能手电筒的总体设计一个程序的开发流程对于高效率实现客户需求,完成所要求的设计任务有着很大影响,并且还要按照标准进行测试,来检验是否符合应用的要求。对于多功能能手电筒的开发来说,要首先制定开发流程,即基于对需求的分析来制定开发流程。在需求中有两个功能依靠的是闪光灯,所以先进行开发,彩灯和警灯是依靠屏幕的,后进行开发。而且应用是以手电筒为最终应用的,所以初始界面设计为手电筒功能界面,可以直接打开手电筒用以照明。然后在根据Button的单击事件进入主界面,主界面则罗列的是各种功能,根据用户自己的需要选择相应的功能。下图是功能开发的流程,从左到右,从上到下依次进行,如图4-1所示图4-1功能开发流程4.3多功能手电筒的功能设计每个功能都需要单独进行设计,因为多功能手电筒各个功能之间是单独运行的。当总体的开发流程确定,对整体开发胸有成足后,就是对于各个功能进行详细的设计,毕竟每个功能才是用户体验的最终效果。手电筒对于手电筒,没有什么太大的要求,只需要可以打开和关闭即可。当单击app快捷方式进入应用后,应当进入手电筒的界面,这时手电筒的状态为关闭,处于off视图中,对于手电筒的单击事件,需要在手电筒界面设置一个热点,当该热点被点击时,会开启闪光灯,对于处在开启状态的闪光灯则会显示on的视图,此时点击热点会关闭闪光灯。摩尔斯电码进入摩尔斯电码选项后,界面有提示“请输入摩尔斯电码字符(只能输入字母、数字和空格)”,下面是一个输入文本框而且默认的信息是SOS,用户可以将自己想要发送的内容输入在文本框中,文本框底下是一个发送按钮,点击按钮就会将信息通过闪光灯发送。当输入的文本不符合要求时,点击发送按钮,会有一个提示信息“摩尔斯电码只能由字母、数字和空格组成”,然后用户可以修改文本。当发送摩尔斯电码时,是不能退出的,当发送完摩尔斯电码以后,后有一个提示“摩尔斯电码发送完毕”。彩灯进入界面以后,首先是默认的红色,并且把屏幕的亮度调到最大,这就是进入彩灯功能以后的效果。而且在中心部分会有一个提示“请点击屏幕中央显示调色板”,3秒后提示消失,当用户想要切换到自己想要的颜色时,只需要点击屏幕中央然后像是一个白色背景,有彩色光环的调色板,当点击需要的颜色时,中间的按钮会显示选中的颜色,点击一下,屏幕就会切换到相应的颜色,这样就实现了彩色灯功能。警灯警灯直接进去就是以一定的频率闪动屏幕,屏幕的颜色依次为红、黑、蓝黑,屏幕的亮度也是最大的,可以很好的吸引注目,并且还有警示的效果。第5章多功能手电筒的详细设计与实现对于手电筒首先要设置权限,对于应用的要求,需要闪光灯的权限,而使用闪光灯是需要和照相机联系起来,所以还需要获取照相机的权限,下面是获得照相机和闪光灯的权限,如表5-1所示表5-1Camera和Flashlight权限<uses-permissionandroid:name="android.permission.CAMERA"/>

<uses-permissionandroid:name="android.permission.FLASHLIGHT"/>在默认的情况下,默写权限是自动加上的,例如触摸屏,代码如表5-2所示表5-2触摸屏默认状态代码<uses-feature

android:name="android.hardware.touchscreen"

android:required="true"/>一般触摸屏是处于开启的状态,因为智能机以及Android应用都需要依托触摸来完成各种操作,但对于一些特殊类型的应用,某些功能并不需要或者禁止使用触摸屏时,则需要将触摸屏设置为关闭状态,将required的值设置为false即可。5.1主界面设计主界面是多功能手电筒的功能选择界面,在主界面上可以选择用户所需要的界面。当然所定义的初始进入界面并不是主界面,而是手电筒界面,将会在手电筒的详细设计之中进行详细的描述,这里只介绍主界面的详细开发,当然与各个界面都有联系。图5-1所示是主界面的整体布局图5-1主界面布局多功能手电筒的界面布局与其他应用有所区别,整个应用只有一个窗口,UI的切换是在同一个窗口中完成的,切换的原理是隐藏其他窗口,只显示当前需要的窗口。将所有界面放入同一个窗口中,需要在activity_main.xml中将所有UI都包括在窗口之中,代码如表5-3所示表5-3将所有视图添加到同一窗口<includelayout="@layout/ui_flashlight"/>

<includelayout="@layout/ui_main"/>

<includelayout="@layout/ui_morse"/>

<includelayout="@layout/ui_colorlight"/>

<includelayout="@layout/ui_policelight"/>

<includelayout="@layout/ui_settings"/>对于隐藏界面和显示UI视图的问题,我们需要定义一个方法来隐藏界面,为此定义了一个隐藏窗口的方法,如表5-4所示表5-4隐藏所有UI视图protectedvoidhideAllUI(){

mUIFlashlight.setVisibility(View.GONE);

mUIMain.setVisibility(View.GONE);

mUIMorse.setVisibility(View.GONE);

mUIColorLight.setVisibility(View.GONE);

mUIPoliceLight.setVisibility(View.GONE);

mUISettings.setVisibility(View.GONE);

}这个方法是将所有的UI界面都设置为不可见,当进入用户所需要的功能时,就会调用此方法,将所有的界面隐藏,再将该功能的界面setVisibility(View.VISIBLE)使当前界面可见。所以对于所有的应用图标都有一个onClick点击响应事件,当点击相应的图标时,就会进入应用的UI视图中。以上是整体布局,当然还有主界面的详细布局,主要是图标的布局模式,右上角按钮点击事件的响应以及背景图片的设置。对于图标的布局,采用的是线性布局模式,将屏幕平均分为三份,所以要设置一个权重,使layout_weight=1.共有三个线性布局,每一个线性布局中有三个IamgeView,每个ImageView的权重也设置为1,整个布局只有五个图标,剩下的ImageView都设置为不可见,这样就完成了对于图标界面的布局。对于屏幕的线性布局,要有一个ID,用来找到当前的UI视图。对于右上角按钮的,主要是用来响应当前的点击事件,按钮的功能是回到主界面,但当前为主界面时,则需要回到前一个视图界面,所以需要定义两个变量mCurrentUIType和mLastUIType来表示当前视图和前一个视图,并且使用一个枚举类型来表示所有会出现的视图状态,如表5-5所示表5-5枚举所有视图状态protectedenumUIType{

UI_TYPE_MAIN,UI_TYPE_FLASHLIGHT,UI_TYPE_MORSEMODE,

UI_TYPE_COLOR,UI_TYPE_POLICELIGHT,UI_TYPE_SETTINGS

}并且在MainActivity类中定义按钮的点击事件。初始化的mCurrentUIType和mLastUIType都是UI_TYPE_FLASHLIGHT,对于单击事件,先判断当前状态,如果当前状态不是主界面,则把mCurrentUIType值给mLastUIType,再令mCurrentUIType=UI_TYPE_MAIN,再隐藏所有界面,将主界面设置为可见,如果当前状态是主界面,则根据记录的mLastUIType,令mCurrentUIType=mLastUIType,并且令mLastUIType=UI_TYPE_MAIN,隐藏所有界面,将当前界面设置为可见。背景图片是drawable资源中的图片,将其设置为所有界面的背景图片,在style.xml和activity_main.xml文件中进行设置,所有的图片资源都需要提前引入到res目录的drawable文件夹下,然后才可以调用相应资源。5.2多功能手电筒的模块设计5.2.1手电筒详细设计手电筒的界面设计手电筒的界面相对比较简单,而且手电筒的应用界面也是初始的进入界面。手电筒有开和关两种状态,所以对应的两种状态都有与之相对的视图效果,所以在drawable资源中引入两个资源图片分别表示开关状态,这也是手电筒的最终界面布局,如下图5-2所示图5-2手电筒关闭状态上图是打开应用的初始界面,手电筒的状态处于关闭状态,如下图5-3所示图5-3手电筒开启状态当点击中间的热键之后,就会切换到如上图所示的开状态效果,两个视图的转换是定义在一个xml文件中,该xml文件在drawable资源中定义,如表5-6所示表5-6开关视图切换的xml文件<transitionxmlns:android="/apk/res/android">

<itemandroid:drawable="@drawable/off"/>

<itemandroid:drawable="@drawable/on"/>

</transition>这个文件中用来定义一些特效,以上语句是说明只允许放置两个界面,两个界面转换是通过渐变方式。对于热点的设置,需要对手电筒的主界面的布局进行设置,采用的是框架布局,因此可以用一个图像覆盖另一个图像,在主界面flashlight的上面覆盖一个imageview,用来响应单击事件。首先要定义两个变量,用来表示两个imageview,并且对其进行初始化。因为手机的屏幕并不都是相同的,所以为了使热点适应不同屏幕的尺寸,所以需要获得屏幕的像素尺,然后依据热点的位置,设置热点的尺寸,如表5-7所示表5-7热点的设置LayoutParamslaParams=(LayoutParams)mImageViewFlashlightController.getLayoutParams();

laParams.height=point.y*3/4;

laParams.width=point.x/3;mImageViewFlashlightController.setLayoutParams(laParams);热点的尺寸是高度的四分之三,宽度是屏幕宽度的三分之一,而且热点的位置是在底部居中,这样可以很好的适应用户点击的位置要求。热点的点击事件在flashlight类中进行定义,首先是检测手机有没有闪光灯,比如在模拟机上测试是没有闪光灯的,会给用户一个反馈,智能机上没有上光灯可用,当然也就不能实现该功能。当检测到硬件设备有闪光灯时,需要判断此时闪光灯所处的状态,这里采用设置一个标签的方法来标示闪光灯的状态,如果闪光灯被点亮,则tag标签为真,如果闪光灯关闭状态,则tag标签为假。当标签为真时,点击热点,则会关闭闪光灯,为假时,打开闪光灯。如表5-8所示表5-8闪光灯的控制publicvoidonClick_Flashlight(Viewview){

if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))

{

Toast.makeText(this,"该设备没有闪光灯",Toast.LENGTH_LONG).show();

return;

}

if(((Boolean)mImageViewFlashlight.getTag())==false){

openFlashlight();

}

else{

closeFlashlight();

}

}5.2.2发送摩尔斯电码详细设计摩尔斯电码是以简单的方式来发送较为复杂的信息的,类似于我们所了解的二进制,摩尔斯电码是由两个基本单位组成,一个是点(.),发音是“嘀”;另一个是横(-),发音是“嗒”。由于摩尔斯电码是由欧美人发明的,所以整个摩尔斯电码表一般只有26个英文字母,10个阿拉伯数字,以及一些标点符号,这里我们采用的是数字和字母。各个字符之间是有停顿时间的,来区分各个字符的发送,比如点和横之间的停顿,字符之间的停顿,单词之间的停顿,以及点的闪烁时间和横的闪烁时间都是不同的,只有这样才能实现摩尔斯电码的成功发送。屏幕和闪光灯都可以进行摩尔斯电码的发送,但是对于屏幕来说,亮度远不及闪光灯,使用闪光灯可以发送的距离比较远,因此采用闪光灯作为摩尔斯电码的发送设备较好。对于摩尔斯电码的发送,首先需要设置界面,在layout文件夹中建一个xml文件设置界面布局,界面比较简单,主要是有一个输入提示框,提示用户只能输入数字和字母,在下面是一个文本输入框,用户可以在文本输入框中输入需要发送的信息,当输入的信息不符合要求时,会有提示信息。文本输入框下面是一个发送按钮,点击发送按钮就可以将输入的信息以摩尔斯电码的方式通过闪光灯发送出去。默认界面和提示界面如下:默认文本框中是SOS,当在文本框中输入“我”的时候,点击发送按钮会提示用户摩尔斯电码发送的要求,界面布局如图5-4所示,出错提示如图5-5所示图5-4摩尔斯电码界面布局图5-5出错提示在代码中对界面的布局,TextView是纯文本,主要是提示用户,EditText是文本输入框,可以在其中进行编辑,Button则是发送按钮,Button有一个单击响应事件,是用来调用闪光灯来发送摩尔斯电码的。摩尔斯电码发送的主要设计是在对发送按钮的响应而进行发送,调用闪光灯按照规定的频率进行发送。首先是要定义摩尔斯电码表,通过mMorseCodeMap.put()方法进行,如表5-9所示表5-9摩尔斯电码表示例代码mMorseCodeMap.put('a',".-");

mMorseCodeMap.put('b',"-...");

mMorseCodeMap.put('c',"-.-.");

mMorseCodeMap.put('d',"-..");26个字母和10个数字都有与之对应的摩尔斯电码。其次是文本内容的发送,首先定义点的发送长度是200ms,横的时长是点的三倍,点和横之间的时间间隔为点的长度,字符之间的间隔为三倍的点的闪烁时间,单词之间的间隔为七倍的点的闪烁时间,实现代码如表5-10所示表5-10闪烁时间和间隔的定义privatefinalintDOT_TIME=200;

privatefinalintLINE_TIME=3*DOT_TIME;

privatefinalintDOT_LINE_TIME=DOT_TIME;

privatefinalintCHAR_CHAR_TIME=3*DOT_TIME;

privatefinalintWORD_WORD_TIME=7*DOT_TIME;对于发送文本句子,首先是将句子分成单词,是依据正则表达式,以空格来分割句子,使每个单词独立出来,如表5-11所示表5-11句子的发送privatevoidsendSentence(Strings){

String[]words=s.split("+");

for(inti=0;i<words.length;i++){

sendWord(words[i]);

if(i<words.length-1){

sleepExt(WORD_WORD_TIME);

}

}当将句分割完成以后,需要对每一个单词进行处理,利用一个字符数组来存储一个单词中的所有字符,然后逐个输出字符,如表5-12所示表5-12单词的发送privatevoidsendWord(Strings){

for(inti=0;i<s.length();i++){

charc=s.charAt(i);

sendChar(c);

if(i<s.length()-1){

sleepExt(CHAR_CHAR_TIME);

}

}

}对于发送字符来说,需要从摩尔斯电码表中进行查询,将摩尔斯电码中字符对应的电码逐个进行发送,并且当前一个发送的是点,而即将发送的是横,则需要一段时间的间隔,如表5-13所示表5-13字符的发送privatevoidsendChar(charc){

StringmorseCode=mMorseCodeMap.get(c);

if(morseCode!=null){

charlastChar='';

for(inti=0;i<morseCode.length();i++){

chardotLine=morseCode.charAt(i);

if(dotLine=='.'){

sendDot();

}elseif(dotLine=='-'){

sendLine();

}

if(i>0&&i<morseCode.length()){

if(lastChar=='.'&&dotLine=='-'){

sleepExt(DOT_LINE_TIME);

}

}

lastChar=dotLine;

}

}

}发送点和横只需要打开闪光灯即可,并且在达到设定的时间后自动关闭,然后点和横依次发送,如表5-14所示表5-14点和横的发送privatevoidsendDot(){

openFlashlight();

sleepExt(DOT_TIME);

closeFlashlight();

}

privatevoidsendLine(){

openFlashlight();

sleepExt(LINE_TIME);

closeFlashlight();

}以上是对于莫尔斯电码发送的开发介绍。其实是发送句子时调用发送单词的方法,发送单词调用发送字符的方法,发送字符是调用发送点和横的方法,从句子开始分析,更加符合设计理念。当所有摩尔斯电码完成后,会发送一个“摩尔斯电码已发送完成”的提示信息,来提醒用户摩尔斯电码已经发送完成。5.2.3彩色手电筒详细设计彩色灯的设计旨在对于闪光灯式的手电筒的补充,因为考虑到闪光灯的损耗问题,屏幕无疑是一个很好的代替品,因为屏幕一直处于开的状态,而且其最大亮度也基本满足黑暗照明的需求,更何况彩色的屏幕更有吸引力。首先是搭建彩色灯的UI,将彩色灯的初始颜色为红色,并且使用HideTextView控件来显示一段文字“请单击屏幕中央显示调色板”,初始界面如图5-6所示图5-6彩色灯初始界面文本只是提示信息,因此会在三秒后自动消失,界面如下图5-7所示图5-7提示文本消失界面设置文本的颜色,因为屏幕的颜色缘故需要随着当前屏幕的颜色改变文本的颜色,以屏幕颜色的互补色显示文本。另外需要一个方法调整屏幕的亮度,如下表5-15所示表5-15是屏幕亮度最大化protectedvoidscreenBrightness(floatvalue){

try{

WindowManager.LayoutParamslayout=getWindow().getAttributes();

layout.screenBrightness=value;

getWindow().setAttributes(layout);

}catch(Exceptione){

}

}以此方法来调整屏幕的颜色,只需在打开彩灯UI时,将屏幕的亮度设置为最大即可。对于应用中最主要的部分是调色板,利用调色板进行屏幕颜色的调整,使用户选择自己最喜欢的颜色。首先要定义一个类来进行调色板的定义。调色板首先是出现在屏幕的中央,外部是一个彩色圆环,是通过定义七个颜色,然后计算自动生成圆环中间的过渡色,这样就可以实现各种颜色的选择,对于选择颜色,中间会有一个圆形按钮,当选中颜色后会显示在小按钮上,当点击进去,就会将当前屏幕的颜色改成所选的颜色,如下图5-8所示;图5-8调色板界面定义彩色换的起始色,并且对其进行初始化。初始化颜色以后,会对圆环进行绘制,通过两个同心圆所截的圆环用来放入颜色带,对于中间色我们是通过如下处理产生,如下表5-16所示表5-16中间色的生成代码privateintinterpColor(intcolors[],floatunit){

if(unit<=0){

returncolors[0];

}

if(unit>=1){

returncolors[colors.length-1];

}

floatp=unit*(colors.length-1);

inti=(int)p;

p-=i;

intc0=colors[i];

intc1=colors[i+1];

inta=ave(Color.alpha(c0),Color.alpha(c1),p);

intr=ave(Color.red(c0),Color.red(c1),p);

intg=ave(Color.green(c0),Color.green(c1),p);

intb=ave(Color.blue(c0),Color.blue(c1),p);

returnColor.argb(a,r,g,b);

}对于单击事件,当彩灯的界面接收到单击事件时,就会出现调色板,用户可以点击相应的颜色来选择。单击事件有三个动作可选,一个是按下状态,如果处于中心圆内,则设置为高亮,用来表示选中了画板颜色;移动动作是根据反三角函数计算弧度来计算当前所选择的颜色,中间的颜色会随着手指移动而改变颜色;还有一个UP状态,即抬起,判断当前抬起位置是否在中心圆内,如果处于中心圆,则回改变当前屏幕的颜色,否则无响应。响应时间代码如下表5-17所示表5-17调色板点击事件响应publicbooleanonTouchEvent(MotionEventevent){

floatx=event.getX()-CENTER_X;

floaty=event.getY()-CENTER_Y;

booleaninCenter=Math.sqrt(x*x+y*y)<=CENTER_RADTUS;

switch(event.getAction()){

caseMotionEvent.ACTION_DOWN:

mTrackingCenter=inCenter;

if(inCenter){

mHightlightCenter=true;

invalidate();

break;

}

caseMotionEvent.ACTION_MOVE:

floatangle=(float)Math.atan2(y,x);

floatunit=angle/(2*PI);

if(unit<0){

unit+=1;

}

mCenterPaint.setColor(interpColor(mColors,unit));

invalidate();

break;

caseMotionEvent.ACTION_UP:

if(mTrackingCenter){

if(inCenter){

mListener.colorChanged(mCenterPaint.getColor());

}

mTrackingCenter=false;

invalidate();

}

break;

default:

break;

}

returntrue;

}

}这样就完成了彩灯的基本设计。5.2.4警灯的详细设计警灯主要是通过红色和蓝色不断地切换来实现警灯,在之前的基础上,实现比较容易。首先是先设置UI界面,界面的控件加入的是HideTextView,内容只是来提醒当前功能是警灯状态。主要方面是警灯屏幕的闪动效果,在控制屏幕颜色方面,需要定义一个Handler来操控屏幕颜色的改变。然后通过多线程的方式来进行屏幕颜色的交替,如下表5-18所示表5-18多线程控制屏幕闪烁classPoliceThreadextendsThread{

publicvoidrun(){

mPoliceState=true;

while(mPoliceState){

mHandler.sendEmptyMessage(Color.BLUE);

sleepExt(100);

mHandler.sendEmptyMessage(Color.BLACK);

sleepExt(100);

mHandler.sendEmptyMessage(Color.RED);

sleepExt(100);

mHandler.sendEmptyMessage(Color.BLACK);

sleepExt(100);

}

}

}sleepExt()方法是自定义的,用来挂起当前线程,显示屏幕为蓝色,挂起100ms,在改变屏幕的颜色为黑色,同样挂起100ms,再将屏幕颜色改变为红色,同样存在100ms,最后是黑色,存在100ms。当界面一直处于警灯视图时,各线程一直按照这样的模式循环,这样就形成了警灯效果。5.3简单设置的实现为了防止一次错误的点击就退出应用程序,所以对于程序要有一些初始的设置,所以需要有单击一次提醒即将退出,如果继续点击即连按两次退出,就会退出程序,使用finish()方法来实现此功能,代码如表5-19所示表5-19点击退回键的响应方法实现publicvoidfinish(){

mFinishCount++;

if(mFinishCount==1){

Toast.makeText(this,"再按一次退出!",Toast.LENGTH_LONG).show();

}elseif(mFinishCount==2){

super.finish();

}

}当误按时,接下来有其他的点击事件,则会把mFinishCount设置为零,如表5-20所示表5-20其他点击事件将计数清零publicbooleandispatchTouchEvent(MotionEventev){

mFinishCount=0;

returnsuper.dispatchTouchEvent(ev);

}该方法是对于其他所有的触摸事件,将回退计数清零,这样可以实现简单的容错。我们可以看到主界面还有一个设置功能,通过该功能来设置警灯的频率,但是其实现效果对于警灯的功能影响较小,所以不做重点介绍。第6章多功能手电筒的实现与效果测试6.1多功能手电筒总体实现与测试对于多功能手电筒的总体实现,主要体现在主界面和手电筒进入界面的设置之上,当进入初始界面时,反应速度较快,比较良好,对于右上方的按钮的点击来说,响应也是良好,可以实现各个界面之间的相互切换,反应比较快。对于主界面的设置,布局比较大众化,对于所选的图标,有一定的标示性,但是一些图标可能会使用户感到困惑,但是经过一次使用以后,用户基本上都能熟悉应用的基本操作,对于各个功能都会有一定的了解,达到了直观简便,操作轻松,功能实用的应用程序的基本要求。6.2多功能手电筒模块实现与测试对于手电筒的实现效果基本令人满意,点击即开启手电筒,不同的手电筒状态配有的视图也不相同,可以很好地使用户了解到当前的使用状态。而且热点的位置和大小的设置也使得用户的体验比较好,适用于人们平常的习惯。但在使用的问题上还有待改进,因为出于对闪光灯的保护,所以闪光灯的响应稍微有些慢,这稍显不足,但需要更多的用户数据来验证响应速度的最佳体验和对闪光灯的保护最好。对于摩尔斯电码的实现效果,整体比较好,突出的效果是各种提示信息比较齐全,对用户的提示可以使用户很快的上手并且了解其中功能,而且摩尔斯电码比较新颖,可以使用户有新奇感,比较吸引人。而在使用中还是有一些需要改进的地方,那就是在发送摩尔斯电码的时候无法强制停止,而且发送的时间有些长,如果是过长的信息,则手机会在此期间无法使用,但是对于手机用户只发送一些简单的信息,效果还是比较可观的。彩灯实现的效果比较好,彩色的屏幕,而且还可以调色,对于一些需要特殊照亮需求的人帮助比较大,但是调色板的界面并没有太好的效果,调色板的背景颜色太突出,美观度不足,而且触摸的效果需要改进,因为最后改变屏幕颜色时,会因为手指的稍微移动而改变。警灯效果比较好,很吸引人,虽然颜色可能有些单一,但闪光效果还是比较实用的。

结论基于安卓的多功能手电筒虽然是一个比较基础的安卓应用,但是这个应用的实用性还是比较强的。而且在基础的手电筒功能上,增加了另外几个功能,虽然有一些功能并没有太大的实用性,但是会给用户带来很好的体验,使得一个比较枯燥一般的应用变的丰富有趣。基础应用通常被人们所忽略,是因为一些基础应用的实用性较低,而且应用场合有限,最重要的是基础应用的功能一般,并不能吸引用户。但我们并不能忽视基础应用带给人们的一些便捷之处,所以在其他安卓游戏软件等应用大红大紫的时候,要把基础应用也带进人们的眼球,并且对基础应用进行改进,使得这些应用真正的为广大的用户服务,丰富用户的生活。多功能手电筒应用的开发同时也可以作为学习安卓系统的一个良好的机会,通过对程序的开发更好的了解安卓的开发过程,以及了解安卓的开发框架。总之,多功能手电筒是一个很实用的应用。

致谢在本文即将完成之际,回想为毕业设计和毕业论文而努力奋斗的这段时光,我衷心感谢我的指导老师杨公平教授。在完成毕业设计和毕业论文的这段时光里,杨公平老师对我们的问题有问必答,关心我们的完成进度,尽职尽责,精心指导我们在毕业设计和毕业论文中出现的问题,帮助我们改正并且完善毕业设计。杨老师平易近人,和蔼可亲,而且学识丰富,他深厚的理论素养、渊博的知识、严谨的治学态度,极大地感染了我们,我想这一切都会让我们感动铭记和受益终身的。杨老师对我的课程学习、课题研究、论文选题和撰写都给与了极大的关注和悉心指导,在此谨致以诚挚的敬意和衷心的感谢!最后,感谢在我成长的过程中给予我帮助的所有老师、朋友和同学们。

参考文献[1]李兴华.Android开发实战经典.北京:清华大学出版社,2012[2]李刚.疯狂Android讲义.北京:电子工业出版社,2015[3][美]罗杰等.Android应用开发.人民邮电出版社,2010[4]盖索林.GoogleAndroid开发入门指南.人民邮电出版社,2009[5]Java核心技术.卷Ⅱ.高级特性/(美)CayS.Horstmann,GaryCornell著陈昊鹏,王浩,姚建平等译北京:机械工业出版社,2014[6]李兴华.Java开发实战经典.清华大学出版社,2009[7][美]MarkMurphy.李雪飞、吴明晖译.BeginningAndroid2[M].北京:人民邮电出版社,2010[8]余志龙.GoogleAndroidSDK开发范例大全(第2版)[M].北京:人民邮电出版社,2010:6-6[9]BruceEckel.Thinkinginjava(java编程思想)第四版.北京:机械工业出版社,2011[10]杨丰盛.Android技术内幕[M].北京:机械工业出版社,2011[11]高洪岩.Android学习精要.北京:清华大学出版社,2012[12]王国辉李伟等.Android开发宝典.北京:机械工业出版社,2012[13]郭志宏.Android应用开发详解[M].北京:电子工业出版社,2010[14]李宁.Android/OPhone开发完全讲义[M/CD].北京:水利水电出版社,2010[15]RyanCohen,TaoWang.AndroidapplicationdevelopmentfortheIntel®platform.[Berkeley,CA]:Apress,2014

附录1英文原文UnderstandingAndroidSecurity--WILLIAMENCKMACHIGARONGRANG,McDANIELPennsylvaniaStateUniversityThenextgenerationofopenoperatingsystemswon’tbeondesktopsormainframesbutonthesmallmobiledeviceswecarryeveryday.Theopennessofthesenewenvironmentswillleadtonewapplicationsandmarketsandwillenablegreaterintegrationwithexistingonlineservices.However,astheimportanceofthedataandservicesourcellphonessupportincreases,sotoodotheopport

温馨提示

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

评论

0/150

提交评论