




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于安卓的多功能手电筒APP设计与实现目录摘要1ABSTRACT2第1章绪论31.1 研究背景31.2 研究现状41.3 本文的主要工作51.4 论文的组织结构6第2章 Android相关技术介绍72.1 Android系统开发介绍72.1.1 Android技术简介72.1.2 Android的应用程序组件82.2 Android Studio简介92.2.1架构组成92.2.2 主要功能10第3章需求分析123.1 多功能手电筒的的功能需求123.2多功能手电筒的性能需求13第4章多功能手电筒的架构设计144.1多功能手电筒架构设计目标和原则144.2多功能手电筒的总体设计144.3多功能
2、手电筒的功能设计15第5章多功能手电筒的详细设计与实现165.1主界面设计165.2多功能手电筒的模块设计185.2.1 手电筒详细设计185.2.2发送摩尔斯电码详细设计205.2.3 彩色手电筒详细设计2435.2.4 警灯的详细设计285.3 简单设置的实现28第6章多功能手电筒的实现与效果测试296.1多功能手电筒总体实现与测试296.2多功能手电筒模块实现与测试30结论31致谢32参考文献33附录1 英文原文34附录2 中文译文384基于安卓的多功能手电筒APP设计与实现摘 要随着第四代移动通信技术的发展、推广与应用,以及智能手机高速发展并且走进普通大众的生活,成为不可缺少的生活必需
3、品,手机应用的开发与更新速度也日益加快。各种手机应用为智能机用户提供了舒适,方便快捷,环保而又丰富多彩的生活。本应用就是一款通过Java编程语言,在Android Studio这一谷歌自主研发的Android开发平台上设计的基于Android的多功能手电筒手机应用程序。本应用主要包括手机闪光灯实现手电筒的开关,通过屏幕的亮度调节以及颜色的变化实现彩色灯,以及通过屏幕闪烁实现警灯,还有新颖的功能发送摩尔斯电码等功能。这些可以满足用户对手电筒的基本需求,并且使得手电筒这一应用更加具有可玩性。本文详细介绍了开发多功能手电筒的设计流程,各个功能的设计,代码编写实现,调试修改,以及测试改进,对程序进行调
4、整优化,并且通过对界面组件进行布局,使得用户有更佳的体验。关键字:手电筒;多功能;安卓;基础应用ABSTRACTWith the development, popularization and application of the fourth generation mobile communication technology,as well as the rapid development of smart phones and they go into the lives of ordinary people and become an indispensable necessities
5、 of life ,the development and updating speed of mobile phone applications is also increasing day by day.A variety of mobile applications provide intelligent machine users a comfortable, convenient, environmentally friendly and colorful life.This application is a kind of multi-functionl flashlight mo
6、bile phone application program based on Android,which is designed in the Android development platform which is called Android Studio,and is programmed with Java. It is such a mobile application which includes some functions like flashlight through controlling mobile flash,color light through adjusti
7、ng the brightness of the screen and changing the color of the screen,police light through the flicker of screen,as well as sending Morse code with the flicker of flash.These functions can meet the basic needs of the user to the flashlight, and makes the flashlight this application more fun to play.T
8、his paper introduces the development flow of multi-functional flashlight,the design of every function,how to program,debug , test and improve,as well as adjusting and optimizing the program.Users can have a better experience through the layout of interface components.Keyword:flashlight;multi-functio
9、n;Android;basic application第1章 绪论1.1 研究背景智能手机,是指像个人电脑一样,具有独立的操作系统,独立的运行空间,可以由用户自行安装软件、游戏、导航等第三方服务商提供的程序,并可以通过移动通讯网络来实现无线网络接入手机类型的总称。智能手机的使用范围已经布满全世界,各个手机厂商纷纷转向智能手机的生产与销售,其中Google、 苹果、三星、诺基亚、HTC这五大品牌在全世界最广为人知,而小米、华为、魅族、联想、中兴、酷派等品牌在中国备受关注。智能手机飞速发展,成为人们生活中的必需品。智能手机有几大特点具备无线接入互联网的能力:即需要支持GSM网络下的GPRS或者CD
10、MA网络的CDMA1X或3G(WCDMA、CDMA-2000、TD-CDMA)网络,甚至4G(HSPA+、FDD-LTE、TDD-LTE)。具有PDA的功能:包括PIM(个人信息管理)、日程记事、任务安排、多媒体应用、浏览网页。具有开放性的操作系统:拥有独立的核心处理器(CPU)和内存,可以安装更多的应用程序,使智能手机的功能可以得到无限扩展。人性化:可以根据个人需要扩展机器功能。根据个人需要,实时扩展机器内置功能,以及软件升级,智能识别软件兼容性,实现了软件市场同步的人性化功能。功能强大:扩展性能强,第三方软件支持多。运行速度快:随着半导体业的发展,核心处理器(CPU)发展迅速,使智能手机在
11、运行方面越来越极速。智能手机支持多种操作系统,比如:谷歌的Android、苹果公司的iOS、微软公司的Windows Phone、RIM公司的黑莓Blackberry、塞班公司的Symbian等,其中在智能手机操作系统份额最重的是Android,约占80%,成为全球第一大智能操作系统。Android一词的本意是指“机器人”,同时也是谷歌公司于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。在2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且当天谷歌宣布建立一个全球性的组织联盟,该组织由34
12、家手机制造商、软件开发商、电信运营商以及芯片制造商组成,并与84家硬件制造商、软件开发商及电信运营商组成开放手持设备联盟,共同研发改良Android系统。Android是基于Linux的自由以及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑等,由谷歌公司以及开放手机联盟领导和开发。2012年11月数据显示,Android 占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。Android应用也随着Android的发展如雨后春笋般出现,现在在Android应用商店中可以看到大量的软件,这些软件涉及到人们生活中的方方面面,如网上购物,网上缴费,游戏娱乐等等方便着人们的
13、生活。而随着手机硬件的发展,智能手机也在不断地发生着改变,带有闪光灯的高像素摄像头成为了爱美自拍人士的首选,现在智能手机基本上都配备有闪光灯,这就使得我们可以开发一款基于这一硬件的智能手机应用-多功能手电筒,来代替人们日常的手电筒,可以节约电池,减少污染,循环利用,携带方便。一般手机都有自带的手电筒的应用程序,但是其功能单一,只有打开和关闭闪光灯两种状态。这里,我将对手电筒系统进行修改,增加一些新的功能,使之更加实用。1.2 研究现状中国移动设备的制造发展迅速,截止2015年第三季度,国内活跃设备数达到10.8亿,说明我国已经进入了智能时代,人们几乎人手一部智能设备,而在2012年智能手机在国
14、内的份额还不是很高,智能设备尤其是智能手机的的高速发展,以其方便性,多功能性,实用性,以及现在很多厂商的廉价高性能的追求,使得智能手机在全球发展迅猛,国内更是盛况空前,各个品牌每年都有多样产品推出,也加速了智能手机的更新换代,同时,智能手机也实现了出口创汇,促进了经济的发展,也推动了我国的创新能力。在国内所有活跃的移动智能设备中,安卓平台设备依旧占据主要地位,约为62%,霸主地位不可撼动。在国内Android设备厂商中只有三星一家为国外品牌,其余都是国内品牌。小米、魅族等厂商通过其对安卓系统的优化改良,形成了自己独特的操作系统风格,这些在安卓系统上的定制版本操作系统使得这些公司迅猛发展。安卓系
15、统的优化与改良仍然是手机厂商的一大卖点。安卓系统的价格低廉,因为Android是开源的,所有的生产厂商都可以免费使用,对其进行个性化定制也变的低成本,并且安卓系统给予终端厂商和开发者更大的灵活性,开发者在程序的开发移植上更为方便,生产厂商不需要再考虑终端内容审核问题,在终端厂商、电信运营商和第三方应用开发商的推动下,用户可选择的内容进一步丰富。各大Android应用商店呈现百花齐放的态势。随着应用商店的不断发展和开发者的涌入,Android 平台的应用资源优势正逐渐扩大。在信息高度发达,即将迈入数据时代的今天,智能手机已经很普及了,而各种Android应用也拥有了庞大的用户。多功能手电筒作为一
16、种简单实用的功能也必将为人们的生活带来方便,通过手机实现手电筒功能,可以应对一些突发状况,尤其是在夜晚,还可以通过发射摩尔斯电码进行求救,以及定制属于你自己的暗号密语,通过警灯来吸引人们的注意来保护自己,彩色的屏幕可以为你的单调的生活增加一些乐趣。1.3 本文的主要工作在基于现实中智能手机的发展状况以及Android系统的应用,开发一款超级手电筒是有意义的,可以作为对Android系统应用开发的初步认识入门,并以之为跳板深入学习Android有很大帮助,多功能手电筒也是一款对现实生活有意义的应用。本文在当前Android的发展现状基础上,展示了一款基础应用-多功能手电筒的逻辑思路、系统结构以及
17、各个功能实现的详细过程。本文主要采用Android的View,AppCompatActivity等Android的基本组件来实现多功能手电筒的。当点击进入软件时,出现的是一个手电筒界面,在一个星空背景之中有一个手电筒,当点击手电筒中部时,会打开手电筒,再一次点击会关闭,在界面的右上侧有一个按钮,点击该按钮回进入主界面,主界面中显示的是各种功能,第一个是手电筒,第二个是发送摩尔斯电码,第三个是彩灯,第四个是警灯,最后一个是设置,点击图标进入相应的界面之中进行操作。本文主要是对这几个功能的实现开发的介绍。1.4 论文的组织结构第1章 绪论:主要描述的是基于安卓的多功能手电筒开发背景,Android
18、以及智能手机发展的现状,本论文研究的主要目的和意义和本文需要完成的工作。第2章 Android相关技术介绍:Android基本技术简介,Android工作机制,开发所运用到的基本框架组件View、AppCompatActivity等的简介,以及现阶段Android比较常用的开发工具Android Studio平台的介绍。第3章 需求分析:对多功能手动电筒所需要的功能以及户所需要的性能进行分析。第4章 多功能手电筒的架构设计:描述应用的设计目标和原则,并介绍应用的总体设计和功能设计,为详细设计提供参考,也使得设计的方向清晰明了。第5章 多功能手电筒的详细设计与实现:介绍应用中的具体的界面构成以及
19、各个功能的详细实现过程。第6章 多功能手电筒的实现与测试:描述多功能手电筒的总体实现以及各个功能的模块实现,并对实现过程中的问题进行说明。第2章 Android相关技术介绍2.1 Android系统开发介绍2.1.1 Android技术简介Android作为一个系统,是一个运行在Linux核心上的Java基础的操作系统。Android的系统框架和其操作系统一样,采用分层架构的思想,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层及Linux内核层。应用程序层该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于
20、自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。应用程序框架层该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。系统库和Android运行时系统库包括九个子系统,分别是图层管理、媒体
21、库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。Linux内核Android核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层
22、。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。Linux提供的是最核心最基础的一些功能。Android层次总结Android的系统架构采用分层架构的思想,架构清晰,层次分明,协同工作。Android的系统架构不仅从宏观上认识了Android系统,同时,也给我们的学习与实践指明了方向。若是从事Android应用开发,那应该研究Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事Android驱动开发,那应该研究Android的Li
23、nux内核。总之,找准切入点,实践出真知。Android项目结构中包括java源代码目录、mainfests文件夹、res资源文件夹,Gradle Scripts文件夹。Java文件夹中存放Android应用程序的所有源代码,mainfests文件夹中是AndroidMainfest.xml项目清单文件,该文件列出了应用程序提供的功能,开发好的各种组件需要在此文件中进行配置,尤其是Activity、Intent、Service以及ContentProvider,凡需要用到的组件都需要在此文件中注册,当使用系统内置的应用时,还需要在此文件中声明使用权限,该文件也是所有Android应用程序都需要
24、的文件,描述了程序包的全局变量,包括公开的应用程序组件和每个组件的实现类,什么数据可以操作,在什么地方可以运行等。res资源目录存放使用到的各种资源,如XML界面文件、图片数据等。Gradle Scripts文件夹中是各种Gradle文件,Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言。2.1.2 Android的应用程序组件在Android程序中没有入口点(Main方法),取而代之的是一系列应用程序组件,这些组件都可以单独实例化。对于一个Android应用程序来说,是由Activity、 Intent Receiver 、Se
25、rvice、Content Provider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。Activity(Android的窗体)Activity是Android的核心类,相当于C/S程序中的窗体或者Web程序的页面。每一个Activity提供了一个可视化的区域。在这个区域可以放置各种Android控件,如按钮、图像、文本框等。在Activity类中有一个onCreate事件方法,一般在该
26、方法中对Activity进行初始化。通过setContentView方法可以将View放到Activity上。绑定后,Activity会显示View上的控件。Service(服务)Service是提供连续信息的应用程序。它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台,直到用户停止该服务或服务运行结束。本系统客户端扩展功能就是采用Service来进行设计和开发的。Broadcast Receiver(广播接收器)广播接收器的唯一功能是接收广播动作,以及对广播动作做出反应。很多时候,广播动作是由系统发出的,例如时区的
27、变化、电池电量不足、收到短信等。此外,应用程序还可以发送广播动作,例如,通知其他程序数据已经下载完毕,并且这些数据已经可以使用了。Content Provider(内容提供者)内容提供者可以为其他应用程序提供数据,这些数据可以保存在系统文件中。在Content Provider类中定义了一系列的方法,通过这些方法可以是其他应用程序获得内容提供者所提供的数据。但在应用程序中不能直接调用,而需要通过android.Content.ContentResolver类的方法来调用内容提供者类中提供的方法。2.2 Android Studio简介2.2.1架构组成基于IDEA,Android Studio
28、 提供以下功能:基于Gradle的构建支持Android 专属的重构和快速修复提示工具以捕获性能、可用性、版本兼容性等问题支持ProGuard 和应用签名基于模板的向导来生成常用的 Android 应用设计和组件功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览2.2.2 主要功能2013年5月16日,在I/O大会上,谷歌推出新的Android开发环境Android Studio,并对开发者控制台进行了改进,增加了五个新的功能,包括优化小贴士、应用翻译服务、推荐跟踪、营收曲线图、用版测试和阶段性展示。优化小贴士:在主体中打开你的应用,点击小贴士,会得到这样的建议:为你的应用开发平板电
29、脑版本。应用翻译服务:允许开发者直接在开发主体中获得专业的翻译。上传你的需求,选择翻译,其会显示翻译方和价格,并在一周内发回译本。推荐跟踪:允许开发者找出最有效的广告营收曲线图:向开发者展示其应用营收,以国家进行划分试用版测试和阶段性展示:开发者可以对应用进行测试,然后向测试用户推出,测试结果不会对外公布。当一个版本的测试结束,开发者可以向特定比例用户推出。Android Studio这款开发工具被首次公布,这也是为了方便开发者基于Android开发。首先解决的一个问题是多分辨率。Android设备拥有大量不同尺寸的屏幕和分辨率,根据新的Studio,开发者可以很方便的调整在各个分辨率设备上的
30、应用。同时Studio还解决语言问题,多语言版本(但是没有中文版本)、支持翻译都让开发者更适应全球开发环境。Studio还提供收入记录功能。最大的改变在于Beta测试的功能。Studio提供了Beta Testing,可以让开发者很方便试运行。2015年5月29日,在谷歌I/O开发者大会上,谷歌发布AndroidStudio 1.3版,支持C+编辑和查错功能。Android Studio 1.3版开发码代码变得更加容易,速度提升,而且支持C+编辑和查错功能。第3章 需求分析3.1 多功能手电筒的的功能需求对于应用的设计,首要原则是以用户为主,以用户满意为宗旨,所以要分析用户对超级手电筒功能需求
31、。多功能手电筒首先是一款手电筒类的软件,所以其最原始的需求就是用户在黑暗下对光亮的需求,以方便照明,虽然现在手机都会自带手电筒软件,但作为一款多功能软件,还是要将手电筒照明的功能考虑进去,以方便用户的使用,所以应用的首个功能是手电筒照明。由于手电筒原理是唤醒闪光灯,设置其开关状态,所以对于闪光灯还是有一定的损伤,所以对于手电筒需要有一定的改进,所以在分析智能手机和android应用程序的基础上,需要开发出与之适应的功能。所以开发出手机屏幕来代替手电筒,将手机屏幕亮度调到最大,基本可以满足照明的需求,但仅仅调整屏幕亮度并没有新奇之处,因为手机设置之中就自带屏幕亮度调整,所以我们就将彩色屏幕应用其
32、中,不只是将屏幕的亮度调至最大,而且还在屏幕中心设有色彩选择菜单,你可以选择自己喜欢的颜色将屏幕亮度调到最大,而且这种彩色灯还适应在其他颜色亮光下凸显自己,并且还可以在黑暗中营造氛围,比如在讲恐怖故事时,适时的绿色光亮,给人一种诡异的感觉,在浪漫的情调下,粉红色为人带来温暖温馨。用户可以自己选择自己喜欢的颜色,定制自己的彩色灯。然而彩色的灯光并不一定能够满足用户的需要,人们追求的实个性,独特,凸显自己,而不是生活在一个静态的世界里。因此,在设计功能时,需要考虑一种个性需求,所以增加了警灯这一功能。警灯是很吸引人的眼球的,因为其独特的颜色,所以在颜色的基础上,加上了动态的效果,以一定的频率闪动。
33、警灯并不一定是为了警示效果,当身处黑暗中,警灯容易吸引人,在演唱会上闪烁的警灯也为演唱会增加一种狂野不羁的效果。警灯是以冷暖色调的变化为依托的,所以选用的是红色和蓝色这两种最极端相对的颜色来作为警灯闪动的基础,并且辅以黑色,交替变换,形成很好的效果。在考虑闪烁的基础上,闪光灯也可以进行相应的处理,所以就以闪光灯的闪烁为基础来应用摩尔斯电码来传递消息,这样既可以凸显个性,又可以充分利用资源。摩尔斯电码是用来传递加密信息的,而且起传播是要有一定距离的,所以以闪光灯强烈的光束是很满足条件的。所以利用摩尔斯电码来发送属于你自己的信息,发送属于你自己的暗号,属于两个人或者更多人的密语,是多么令人兴奋的事
34、情。以上就是对多功能手电筒功能需求的分析,确定了手电筒、彩色灯、警灯和摩尔斯电码四种功能为基础进行开发。3.2多功能手电筒的性能需求手机软件要有良好的用户体验,而良好的用户体验是建立在好的性能方面的,而评价应用的性能的标准是以界面、用户操作、响应速度、操作提示等方面来进行指定的。首先要有良好的用户界面,好的用户界面不仅包括良好的美工,还包括良好的进入界面,主菜单的整体布局等方面,多功能手电筒的见面布局是以基础的进入界面为手电筒界面,点击按钮进入主界面,主界面线性布局各种功能,点击相应的按钮就会进入相应功能的操作界面,虽然基础,但很实用,所以用户的操作也会非常方便。关于响应速度,应用程序的响应速
35、度还是比较快的,但由于考虑对闪光灯算还,所以对于上光灯的相应设置为0.2秒,响应稍显慢,但基本不会影响使用。在操作提示方面,对于退出方面,设置为点击两次退出应用,点击一次会有提示:“再按一次退出”。在进入彩灯界面中,会有“请点击屏幕中央显示调色板”并且会在三秒后自动消失,这样可以提示用户点击中央显示调色板来调屏幕的颜色。在发送摩尔斯电码界面,当发送的内容错误时,会提醒用户只能发送数字、字母和空格,使用户了解可以发送的内容,良好的提示界面对于一个用户的影响很大,这相当于游戏中的新手引导,引导玩家迅速上手。第4章 多功能手电筒的架构设计4.1多功能手电筒架构设计目标和原则实现手电筒的基本功能,可以
36、照明;照明的多方式实现,使用闪光灯、屏幕作作为照明工具;多功能性,符合设计的基本要求,满足用户需求;易用性,界面良好,容易操作,容易上手;可靠性,功能响应快,有一定的容错能力。4.2多功能手电筒的总体设计一个程序的开发流程对于高效率实现客户需求,完成所要求的设计任务有着很大影响,并且还要按照标准进行测试,来检验是否符合应用的要求。对于多功能能手电筒的开发来说,要首先制定开发流程,即基于对需求的分析来制定开发流程。在需求中有两个功能依靠的是闪光灯,所以先进行开发,彩灯和警灯是依靠屏幕的,后进行开发。而且应用是以手电筒为最终应用的,所以初始界面设计为手电筒功能界面,可以直接打开手电筒用以照明。然后
37、在根据Button的单击事件进入主界面,主界面则罗列的是各种功能,根据用户自己的需要选择相应的功能。下图是功能开发的流程,从左到右,从上到下依次进行,如图4-1所示图4-1功能开发流程4.3多功能手电筒的功能设计每个功能都需要单独进行设计,因为多功能手电筒各个功能之间是单独运行的。当总体的开发流程确定,对整体开发胸有成足后,就是对于各个功能进行详细的设计,毕竟每个功能才是用户体验的最终效果。手电筒对于手电筒,没有什么太大的要求,只需要可以打开和关闭即可。当单击app快捷方式进入应用后,应当进入手电筒的界面,这时手电筒的状态为关闭,处于off视图中,对于手电筒的单击事件,需要在手电筒界面设置一个
38、热点,当该热点被点击时,会开启闪光灯,对于处在开启状态的闪光灯则会显示on的视图,此时点击热点会关闭闪光灯。摩尔斯电码进入摩尔斯电码选项后,界面有提示“请输入摩尔斯电码字符(只能输入字母、数字和空格)”,下面是一个输入文本框而且默认的信息是SOS,用户可以将自己想要发送的内容输入在文本框中 ,文本框底下是一个发送按钮,点击按钮就会将信息通过闪光灯发送。当输入的文本不符合要求时,点击发送按钮,会有一个提示信息“摩尔斯电码只能由字母、数字和空格组成”,然后用户可以修改文本。当发送摩尔斯电码时,是不能退出的,当发送完摩尔斯电码以后,后有一个提示“摩尔斯电码发送完毕”。彩灯进入界面以后,首先是默认的红
39、色,并且把屏幕的亮度调到最大,这就是进入彩灯功能以后的效果。而且在中心部分会有一个提示“请点击屏幕中央显示调色板”,3秒后提示消失,当用户想要切换到自己想要的颜色时,只需要点击屏幕中央然后像是一个白色背景,有彩色光环的调色板,当点击需要的颜色时,中间的按钮会显示选中的颜色,点击一下,屏幕就会切换到相应的颜色,这样就实现了彩色灯功能。警灯警灯直接进去就是以一定的频率闪动屏幕,屏幕的颜色依次为红、黑、蓝黑,屏幕的亮度也是最大的,可以很好的吸引注目,并且还有警示的效果。第5章 多功能手电筒的详细设计与实现对于手电筒首先要设置权限,对于应用的要求,需要闪光灯的权限,而使用闪光灯是需要和照相机联系起来,
40、所以还需要获取照相机的权限,下面是获得照相机和闪光灯的权限,如表5-1所示表5-1 Camera和Flashlight权限<uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.FLASHLIGHT"/>在默认的情况下,默写权限是自动加上的,例如触摸屏,代码如表5-2所示表5-2 触摸屏默认状态代码<uses-featureandroid:name="an
41、droid.hardware.touchscreen"android:required="true"/>一般触摸屏是处于开启的状态,因为智能机以及Android应用都需要依托触摸来完成各种操作,但对于一些特殊类型的应用,某些功能并不需要或者禁止使用触摸屏时,则需要将触摸屏设置为关闭状态,将required的值设置为false即可。5.1主界面设计主界面是多功能手电筒的功能选择界面,在主界面上可以选择用户所需要的界面。当然所定义的初始进入界面并不是主界面,而是手电筒界面,将会在手电筒的详细设计之中进行详细的描述,这里只介绍主界面的详细开发,当然与各个界面都有联
42、系。图5-1所示是主界面的整体布局图5-1主界面布局多功能手电筒的界面布局与其他应用有所区别,整个应用只有一个窗口,UI的切换是在同一个窗口中完成的,切换的原理是隐藏其他窗口,只显示当前需要的窗口。将所有界面放入同一个窗口中,需要在activity_main.xml中将所有UI都包括在窗口之中,代码如表5-3所示表5-3 将所有视图添加到同一窗口<include layout="layout/ui_flashlight"/><include layout="layout/ui_main"/><include layout=&
43、quot;layout/ui_morse"/><include layout="layout/ui_colorlight"/><include layout="layout/ui_policelight"/><include layout="layout/ui_settings"/>对于隐藏界面和显示UI视图的问题,我们需要定义一个方法来隐藏界面,为此定义了一个隐藏窗口的方法,如表5-4所示表5-4 隐藏所有UI视图protected void hideAllUI() mUIFlas
44、hlight.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.VISIB
45、LE)使当前界面可见。所以对于所有的应用图标都有一个onClick点击响应事件,当点击相应的图标时,就会进入应用的UI视图中。以上是整体布局,当然还有主界面的详细布局,主要是图标的布局模式,右上角按钮点击事件的响应以及背景图片的设置。对于图标的布局,采用的是线性布局模式,将屏幕平均分为三份,所以要设置一个权重,使layout_weight=1.共有三个线性布局,每一个线性布局中有三个IamgeView,每个ImageView的权重也设置为1,整个布局只有五个图标,剩下的ImageView都设置为不可见,这样就完成了对于图标界面的布局。对于屏幕的线性布局,要有一个ID,用来找到当前的UI视图。对
46、于右上角按钮的,主要是用来响应当前的点击事件,按钮的功能是回到主界面,但当前为主界面时,则需要回到前一个视图界面,所以需要定义两个变量mCurrentUIType和mLastUIType来表示当前视图和前一个视图,并且使用一个枚举类型来表示所有会出现的视图状态,如表5-5所示表5-5枚举所有视图状态protected enum UIType UI_TYPE_MAIN,UI_TYPE_FLASHLIGHT,UI_TYPE_MORSEMODE,UI_TYPE_COLOR,UI_TYPE_POLICELIGHT,UI_TYPE_SETTINGS并且在MainActivity类中定义按钮的点击事件。初
47、始化的mCurrentUIType和mLastUIType都是UI_TYPE_FLASHLIGHT,对于单击事件,先判断当前状态,如果当前状态不是主界面,则把mCurrentUIType值给mLastUIType,再令mCurrentUIType = UI_TYPE_MAIN,再隐藏所有界面,将主界面设置为可见,如果当前状态是主界面,则根据记录的mLastUIType,令mCurrentUIType = mLastUIType,并且令mLastUIType = UI_TYPE_MAIN,隐藏所有界面,将当前界面设置为可见。背景图片是drawable资源中的图片,将其设置为所有界面的背景图片,在
48、style.xml和activity_main.xml文件中进行设置,所有的图片资源都需要提前引入到res目录的drawable文件夹下,然后才可以调用相应资源。5.2多功能手电筒的模块设计5.2.1 手电筒详细设计手电筒的界面设计手电筒的界面相对比较简单,而且手电筒的应用界面也是初始的进入界面。手电筒有开和关两种状态,所以对应的两种状态都有与之相对的视图效果,所以在drawable资源中引入两个资源图片分别表示开关状态,这也是手电筒的最终界面布局,如下图5-2所示图5-2手电筒关闭状态上图是打开应用的初始界面,手电筒的状态处于关闭状态,如下图5-3所示图5-3 手电筒开启状态当点击中间的热键
49、之后,就会切换到如上图所示的开状态效果,两个视图的转换是定义在一个xml文件中,该xml文件在drawable资源中定义,如表5-6所示表5-6 开关视图切换的xml文件<transition xmlns:android="<item android:drawable="drawable/off"/><item android:drawable="drawable/on"/></transition>这个文件中用来定义一些特效,以上语句是说明只允许放置两个界面,两个界面转换是通过渐变方式。对于热点的设置
50、,需要对手电筒的主界面的布局进行设置,采用的是框架布局,因此可以用一个图像覆盖另一个图像,在主界面flashlight的上面覆盖一个imageview,用来响应单击事件。首先要定义两个变量,用来表示两个imageview,并且对其进行初始化。因为手机的屏幕并不都是相同的,所以为了使热点适应不同屏幕的尺寸,所以需要获得屏幕的像素尺,然后依据热点的位置,设置热点的尺寸,如表5-7所示表5-7热点的设置LayoutParams laParams = (LayoutParams)mImageViewFlashlightController.getLayoutParams();laParams.heig
51、ht = point.y*3/4;laParams.width = point.x/3;mImageViewFlashlightController.setLayoutParams(laParams);热点的尺寸是高度的四分之三,宽度是屏幕宽度的三分之一,而且热点的位置是在底部居中,这样可以很好的适应用户点击的位置要求。热点的点击事件在flashlight类中进行定义,首先是检测手机有没有闪光灯,比如在模拟机上测试是没有闪光灯的,会给用户一个反馈,智能机上没有上光灯可用,当然也就不能实现该功能。当检测到硬件设备有闪光灯时,需要判断此时闪光灯所处的状态,这里采用设置一个标签的方法来标示闪光灯的状
52、态,如果闪光灯被点亮,则tag标签为真,如果闪光灯关闭状态,则tag标签为假。当标签为真时,点击热点,则会关闭闪光灯,为假时,打开闪光灯。如表5-8所示表5-8闪光灯的控制public void onClick_Flashlight(View view) if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) Toast.makeText(this,"该设备没有闪光灯",Toast.LENGTH_LONG).show();return;if(Boolean)mImageVie
53、wFlashlight.getTag() = false) openFlashlight();else closeFlashlight();5.2.2发送摩尔斯电码详细设计摩尔斯电码是以简单的方式来发送较为复杂的信息的,类似于我们所了解的二进制,摩尔斯电码是由两个基本单位组成,一个是点(.),发音是“嘀”;另一个是横(-),发音是“嗒”。由于摩尔斯电码 是由欧美人发明的,所以整个摩尔斯电码表一般只有26个英文字母,10个阿拉伯数字,以及一些标点符号,这里我们采用的是数字和字母。各个字符之间是有停顿时间的,来区分各个字符的发送,比如点和横之间的停顿,字符之间的停顿,单词之间的停顿,以及点的闪烁时
54、间和横的闪烁时间都是不同的,只有这样才能实现摩尔斯电码的成功发送。屏幕和闪光灯都可以进行摩尔斯电码的发送,但是对于屏幕来说,亮度远不及闪光灯,使用闪光灯可以发送的距离比较远,因此采用闪光灯作为摩尔斯电码的发送设备较好。对于摩尔斯电码的发送,首先需要设置界面,在layout文件夹中建一个xml文件设置界面布局,界面比较简单,主要是有一个输入提示框,提示用户只能输入数字和字母,在下面是一个文本输入框,用户可以在文本输入框中输入需要发送的信息,当输入的信息不符合要求时,会有提示信息。文本输入框下面是一个发送按钮,点击发送按钮就可以将输入的信息以摩尔斯电码的方式通过闪光灯发送出去。默认界面和提示界面如
55、下:默认文本框中是SOS,当在文本框中输入“我”的时候,点击发送按钮会提示用户摩尔斯电码发送的要求,界面布局如图5-4所示,出错提示如图5-5所示图5-4 摩尔斯电码界面布局图5-5出错提示在代码中对界面的布局,TextView是纯文本,主要是提示用户,EditText是文本输入框,可以在其中进行编辑,Button则是发送按钮,Button有一个单击响应事件,是用来调用闪光灯来发送摩尔斯电码的。摩尔斯电码发送的主要设计是在对发送按钮的响应而进行发送,调用闪光灯按照规定的频率进行发送。首先是要定义摩尔斯电码表,通过mMorseCodeMap.put()方法进行,如表5-9所示表5-9摩尔斯电码表
56、示例代码mMorseCodeMap.put('a', ".-");mMorseCodeMap.put('b', "-.");mMorseCodeMap.put('c', "-.-.");mMorseCodeMap.put('d', "-.");26个字母和10个数字都有与之对应的摩尔斯电码。其次是文本内容的发送,首先定义点的发送长度是200ms,横的时长是点的三倍,点和横之间的时间间隔为点的长度,字符之间的间隔为三倍的点的闪烁时间,单词之间的间隔为七倍
57、的点的闪烁时间,实现代码如表5-10所示表5-10 闪烁时间和间隔的定义private final int DOT_TIME = 200;private final int LINE_TIME = 3*DOT_TIME;private final int DOT_LINE_TIME = DOT_TIME;private final int CHAR_CHAR_TIME = 3*DOT_TIME;private final int WORD_WORD_TIME = 7*DOT_TIME;对于发送文本句子,首先是将句子分成单词,是依据正则表达式,以空格来分割句子,使每个单词独立出来,如表5-11所示表5-11 句子的发送private void sendSentence(String s) String words = s.split(" +");for(int i = 0;i < words.length;i+) sendWord(wordsi);if(i < words.length-1) sleepExt(W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国股票基金行业发展分析及发展趋势预测报告
- 2025-2030中国聚氨酯软质泡沫行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国聚乙烯复合纸市场发展分析及市场趋势与投资方向研究报告
- 人教版《道德与法治》课堂教学创新计划
- 2025-2030中国羊奶行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国网约车行业经营效益及前景发展创新监测报告
- 小学三年级音乐社团活动计划
- 2025-2030中国经济型酒店行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030中国细胞存储行业发展分析及投资风险与战略研究报告
- 2025-2030中国纺织材料行业市场发展趋势与前景展望战略研究报告
- 实验室变风量排风柜
- 13恶劣天气监理实施细则
- PCSA联盟2020合作共赢分享会知识共享试题及答案
- 金矿设计正文
- 初中语文--修辞手法练习题(含答案)
- 心灵游戏之一“生命中最重要的五样”
- 钢结构进场验收记录
- 丧堂孝歌------三国孝歌上集
- 《想法不同-心情不同》刘秋菊
- NO.5机械原理矢量方程图解法汇总
- 半纤维素(春之绿树模板)
评论
0/150
提交评论