I基于Android的多功能手电筒设计与实现摘要:在现代社会中,手机的功能越来越丰富,给生活带来了极大的趣味性和便捷性。手电筒是生活中最普通的生活必需品,它在我们身处黑暗时给予我们光亮。传统的手电筒体积较大,需要电池,不方便携带。手机与手电筒的结合恰恰可以解决传统手机带来的不便,同时还可以节约资源,保护环境。既可以让用户及时获得手电筒带来的益处,也可以让生活更加便捷,高效。基于以上背景,本文设计并实现了基于Android的多功能手电筒。该系统实现了手电筒、警示灯、摩尔斯电码、电灯泡、警灯、LED滚动等功能。通过该系统,用户可以方便的获得普通手电筒的功能,方便生活。关键字:安卓;手电筒;activityAbstract:Inmodernsociety,thefunctionofmobilephonesmoreandmorerich,tobringagreatlifeoffunandconvenience.Theflashlightisthemostcommonnecessitiesoflifeinlife,anditgivesuslightwhenweareindarkness.Thetraditionalflashlightisbulkyandrequiresabatterythatisinconvenienttocarry.Thecombinationofmobilephonesandflashlightscanjustsolvetheinconvenienceoftraditionalmobilephones,butalsocansaveresourcesandprotecttheenvironment.Bothuserscangetthebenefitsofflashlightinatimelymanner,butalsocanmakelifemoreconvenientandefficient.Basedontheabovebackground,thisarticledesignedandimplementedamulti-functionflashlightbasedonAndroid.Thesystemtoachievetheflashlight,warninglights,Morsecode,lightbulbs,lights,LEDscrollandotherfunctions.Throughthesystem,theusercaneasilyaccessthefunctionofordinaryflashlight,easytolive.Keyword:Android,flashlight,activity21绪论1.1研究背景及意义自从Google在2008年10月发布第一部Android智能手机以来,Android就以它强大的开源性以及易用性迅速席卷了全球的智能手机市场。2011年第一季度,Android在全球的市场份额跃居第一,这是它首次超过诺基亚的塞班系统。时代在进步,Android的发展也在昂首阔进,正如之前的“诺基亚时代”一样,现在是属于Android的时代。在Android面世的第五个年头,它就已经牢牢占据将近八成的全球市场,全世界采用Android系统的设备数量达到了10亿台。因此,拥有一部属于自己的Android手机已经是一件很平常的事情了。Android的流行在于它是一个高度开源的操作系统,拓展性非常强。对于开发者来说,他们利用Android开发的应用具有无限的可能性,这些Android应用可以涵盖生活的方方面面,无论衣食住行,我们都可以在任意一个Android应用市场上找到与之相关的应用。可以说移动应用已经改变了我们的生活方式,在这种情况下,为了满足人们日愈丰富的移动生活需求,开发基于Android的应用是很必要的。在现代社会中,手机的功能越来越丰富,给生活带来了极大的趣味性和便捷性。手电筒是生活中最普通的生活必需品,它在我们身处黑暗时给予我们光亮。传统的手电筒体积较大,需要电池,不方便携带。手机与手电筒的结合恰恰可以解决传统手机带来的不便,同时还可以节约资源,保护环境。既可以让用户及时获得手电筒带来的益处,也可以让生活更加便捷,高效。基于以上背景,本文设计并实现了基于Android的多功能手电筒。通过该系统,用户可以方便的获得普通手电筒的功能,方便生活。1.2国内外研究现状目前国内外关于手机手电筒的APP软件已经很多,基于市场调研,选取了终极手电筒、LED手电筒、多档手电筒等几种比较流行的APP进行分析。终极手电筒秉承联图一贯以来的简约风格,以干净的界面,简单的操作在用户中深受欢迎,是联图终极系列中最受欢迎的免费软件,拥有过千万的用户。终极手电筒包含LED手电筒和屏幕光源手电筒两种功能,附加闪灯灯、警示灯、电报效果等娱乐功能。以及可以直接开启\关闭的桌面Widget小部件。LED手电筒FlashlightLEDGenius是一款界面非常漂亮的LED手电筒软件,它最大的亮点就是可以在锁屏界面中通过摇晃手机来打开手电筒,免去了解锁手机过程,非常方便!多档手电筒可调节档位控制亮度。软件特点:最亮的照明工具最快速启动优3雅的外形闸门的模式和频率控制器使用摄像头闪关灯。2相关技术简介2.1Android框架AndyRunbin创立了Android公司并开发了Android系统。Android系统的巨大潜力引起了Google的极大注意,并花重金买下了AndyRunbin创立的Android公司。开放手机联盟及开放手机软件平台也应用而生。相比于IOS、黑莓、塞班等系统,Android系统有点更加突出,更加开放。Android系统的优点较为突出:(1)开放性:Android系统是基于开源的Linux内核而开发,Google公司基于开源软件的精神将Android向各手机厂商开放。为此还联合各家公司成立了开放手机联盟,任何的手机厂商、平板电脑厂商、芯片厂商都可以加入进来,共同不断完善Android系统,Google公司对此是不收取任何授权许可费用的。(2)应用程序都是平等的:在IOS等其他系统中,系统中的核心应用往往处于较高的级别,通常可以先于其他的第三方应用而运行。而在Android系统中,所用的应用的级别都是一样的,是完全平等的。用于可以把手机中的核心引用替换成自己更加想要的程序。(3)应用程序间无界限:在安卓系统中,手机上的联系人、图片、音乐、位置等信息是可以供开发人员进行使用的。而且当开发人员编写程序时,可以在程序中声明系统中的某些资源是可以被使用。(4)应用程序开发快速方便:由于安卓的开放性,诸多的系统设计人员为Android系统设计了许多的工具库,开发人员可以很放方便的调用这些工具。Android系统首先是基于Linux内核而设计,因此Android系统架构的底层为Linux内核,还包括各种设备的驱动程序的,Linux内核是Android系统最核心的地方。基于Linux内核,Google开发了Android的类库及各种各样的应用程序。安卓系统中具有四大组件,其中Activity是最主要的组件之一Activity是Android系统中的重要组件之一。主要完成两个工作:首先是处理业务逻辑,其次是渲染视图。Activity是组成应用的基本元素,不同Activity之间的互联形成整个应用的业务逻辑。在应用程序中,必需要规定某一个Activity作为MainActivity,作用就是将它设置为进入应用时显示的第一个Activity界面。各个Activity之间的跳转非常灵活,Android中利用Intent类就可以实现不同Activity之间的跳转动作。每当某一Activity获得执行焦点,即启动运行时,它的前一个Activity就会停止工作。Android程序中所有的Activity都会被存储在一个栈中,因此停止运行的Activity并不会被销毁,而会存储在栈中。新启动的4Activity会先存储于栈中,随即获取活动焦点。如果在某个Activity运行时执行返回操作,就会将当前的Activity从栈中获取并消除,这时前一个Activity就会重新取回活动焦点。Android是以Linux为基础的开放源代码操作系统,采用分层的系统架构。主要分为应用用程序层、应用程序框架层、系统运行库层和linux内核层[4]。本论文主要涉及以下架构:(1)应用程序架构:android应用程序框架丰富的,从系统开发到上层的应用,都可以直接使用android提供的各种框架及组件,可以节省很多开发时间。(2)Dalvik虚拟机器:不同于Windows及Linux下的虚拟机,Android下的虚拟机由Google公司自主研发的。该虚拟机的主要特征是在保证功能同时进行了大量简化,使其所占系统资源尽可能的少[5]。2.2Android应用构成及资源文件一个安卓应用程序主要由四大部分构成(Activity、IntentReceiver、Service、ContentProvider)。在android4.0以上系统中,每个安卓应用程序都必须有至少一个Activity活动构成。安卓应用程序运行中,为了采用程序实现功能所需要的组件等必要条件,首先需要在配置文件AndroidMainfest.xml中进行相应的配置。资源文件是安卓应用程序中重要组成部分。主要包括字符串、菜单、图像、声音、视频等内容,大多保存在res目录中。在生成apk文件时,这些资源都会被编译保存。在此应用中,书架上预存的两本书就是作为资源文件放到res/raw目录中,通过使用InputStream从而读取res/raw目录中的资源。图2.1示为整个res的目录。图2.1Android资源文件1)anim:资源类型:xml——用于保存与动画相关的信息。可以定义帧(frame)动画和补间(tween)动画;2)drawable:资源类型:图像——该目录中的文件可5以存放多种格式的图像文件,例如,bmp、png、jpg等。存放在目录中的图像不需要高分辨率,aapt工具会优化这个目录中的图像;3)layout:资源类型:xml——保存布局文件信息。每个layout都是一个布局界面;4)menu:资源类型:xml——保存菜单资源。一个资源文件表示一个菜单(包括子菜单);5)values资源类型:xml—保存字符串、颜色、尺寸、类型、主题等资源,可以是任意随意的文件名:6)raw资源类型:任意类型——该目录下的文件不会被编译。在该目录中可以放置任意类型的文件,例如,各种类型的文档、音频、视频文件等[7]。2.3Android组件一个安卓应用程序主要由四大部分构成(Activity、IntentReceiver、Service、ContentProvider)。在android4.0以上系统中,每个安卓应用程序都必须有至少一个Activity活动构成。安卓应用程序运行中,为了采用程序实现功能所需要的组件等必要条件,首先需要在配置文件AndroidMainfest.xml中进行相应的配置。在Android应用程序中,与用户进行交互几乎都是通过Activity,因此把Acitivity作为一个与用户进行交互的组件。一般是全屏幕界面,也可以是一个浮动在其他窗口上的小窗口。在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Activity。Android应用一般由多个有着松耦合的Activity组成。通常是有一个“main”Activity,用户初次启动程序时,它会展现在用户面前。接着程序通过用户的操作来启动其他的Activity,每次启动新的Activity时,之前的activity就“stopped”(停止)了,但它并没有被销毁,系统把它保存在“backstack”中,而新启动的Activity就被放在了“backstack”的栈首,在屏幕的最前端展现出来。当用户完成了与栈首的Activity的交互后,通过点击BACK键,栈首的