基于Android的多功能手电筒设计与实现_第1页
基于Android的多功能手电筒设计与实现_第2页
基于Android的多功能手电筒设计与实现_第3页
基于Android的多功能手电筒设计与实现_第4页
基于Android的多功能手电筒设计与实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

I基于 Android 的多功能手电筒设计与实现摘 要: 在现代社会中,手机的功能越来越丰富,给生活带来了极大的趣味性和便捷性。手电筒是生活中最普通的生活必需品,它在我们身处黑暗时给予我们光亮。传统的手电筒体积较大,需要电池,不方便携带。手机与手电筒的结合恰恰可以解决传统手机带来的不便,同时还可以节约资源,保护环境。既可以让用户及时获得手电筒带来的益处,也可以让生活更加便捷,高效。基于以上背景,本文设计并实现了基于 Android 的多功能手电筒。该系统实现了手电筒、警示灯、摩尔斯电码、电灯泡、警灯、LED 滚动等功能。通过该系统,用户可以方便的获得普通手电筒的功能,方便生活。关键字: 安卓;手电筒;activityAbstract: In modern society, the function of mobile phones more and more rich, to bring a great life of fun and convenience. The flashlight is the most common necessities of life in life, and it gives us light when we are in darkness. The traditional flashlight is bulky and requires a battery that is inconvenient to carry. The combination of mobile phones and flashlights can just solve the inconvenience of traditional mobile phones, but also can save resources and protect the environment. Both users can get the benefits of flashlight in a timely manner, but also can make life more convenient and efficient. Based on the above background, this article designed and implemented a multi-function flashlight based on Android. The system to achieve the flashlight, warning lights, Morse code, light bulbs, lights, LED scroll and other functions. Through the system, the user can easily access the function of ordinary flashlight, easy to live.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 手电筒和屏幕光源手电筒两种功能,附加闪灯灯、警示灯、3电报效果等娱乐功能。以及可以直接开启关闭的桌面 Widget 小部件。LED 手电筒 Flashlight LED Genius 是一款界面非常漂亮的 LED 手电筒软件,它最大的亮点就是可以在锁屏界面中通过摇晃手机来打开手电筒,免去了解锁手机过程,非常方便! 多档手电筒可调节档位控制亮度。软件特点:最亮的照明工具最快速启动优雅的外形闸门的模式和频率控制器使用摄像头闪关灯。2 相关技术简介2.1 Android 框架Andy Runbin 创立了 Android 公司并开发了 Android 系统。Android 系统的巨大潜力引起了 Google 的极大注意,并花重金买下了 Andy Runbin 创立的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之间的互联形成整个应用的业务逻辑。在应用程序中,必需要规定某一个4Activity 作为 Main Activity,作用就是将它设置为进入应用时显示的第一个Activity 界面。各个 Activity 之间的跳转非常灵活,Android 中利用 Intent 类就可以实现不同 Activity 之间的跳转动作。每当某一 Activity 获得执行焦点,即启动运行时,它的前一个 Activity 就会停止工作。Android 程序中所有的 Activity都会被存储在一个栈中,因此停止运行的 Activity 并不会被销毁,而会存储在栈中。新启动的 Activity 会先存储于栈中,随即获取活动焦点。如果在某个Activity 运行时执行返回操作,就会将当前的 Activity 从栈中获取并消除,这时前一个 Activity 就会重新取回活动焦点。Android 是以 Linux 为基础的开放源代码操作系统,采用分层的系统架构。主要分为应用用程序层、应用程序框架层、系统运行库层和 linux 内核层4。本论文主要涉及以下架构:(1)应用程序架构:android 应用程序框架丰富的,从系统开发到上层的应用,都可以直接使用 android 提供的各种框架及组件,可以节省很多开发时间。(2)Dalvik 虚拟机器:不同于 Windows 及 Linux 下的虚拟机,Android 下的虚拟机由 Google 公司自主研发的。该虚拟机的主要特征是在保证功能同时进行了大量简化,使其所占系统资源尽可能的少5。2.2 Android 应用构成及资源文件一个安卓应用程序主要由四大部分构成(Activity、 Intent Receiver、Service、Content Provider) 。在 android4.0 以上系统中,每个安卓应用程序都必须有至少一个 Activity 活动构成。安卓应用程序运行中,为了采用程序实现功能所需要的组件等必要条件,首先需要在配置文件AndroidMainfest.xml 中进行相应的配置。资源文件是安卓应用程序中重要组成部分。主要包括字符串、菜单、图像、声音、视频等内容,大多保存在 res 目录中。在生成 apk 文件时,这些资源都会被编译保存。在此应用中,书架上预存的两本书就是作为资源文件放到res/raw 目录中,通过使用 InputStream 从而读取 res/raw 目录中的资源。图 2.1 示为整个 res 的目录。5图 2.1 Android 资源文件1)anim:资源类型:xml用于保存与动画相关的信息。可以定义帧(frame)动画和补间(tween)动画;2)drawable:资源类型:图像该目录中的文件可以存放多种格式的图像文件,例如,bmp、 png、jpg 等。存放在目录中的图像不需要高分辨率,aapt 工具会优化这个目录中的图像;3)layout :资源类型:xml保存布局文件信息。每个 layout 都是一个布局界面;4)menu:资源类型:xml保存菜单资源。一个资源文件表示一个菜单(包括子菜单) ;5)values资源类型:xml保存字符串、颜色、尺寸、类型、主题等资源,可以是任意随意的文件名:6)raw资源类型:任意类型该目录下的文件不会被编译。在该目录中可以放置任意类型的文件,例如,各种类型的文档、音频、视频文件等7。2.3 Android 组件一个安卓应用程序主要由四大部分构成(Activity、 Intent Receiver、Service、Content Provider)。在 android4.0 以上系统中,每个安卓应用程序都必须有至少一个 Activity 活动构成。安卓应用程序运行中,为了采用程序实现功能所需要的组件等必要条件,首先需要在配置文件AndroidMainfest.xml 中进行相应的配置。在 Android 应用程序中,与用户进行交互几乎都是通过 Activity,因此把Acitivity 作为一个与用户进行交互的组件。一般是全屏幕界面,也可以是一个浮动在其他窗口上的小窗口。在一个应用程序中通常由多个 Activity 构成,都会在 Manifest.xml 中指定一个主的 Activity。Android 应用一般由多个有着松耦合的 Activity 组成。通常是有一个“main”6Activity,用户初次启动程序时,它会展现在用户面前。接着程序通过用户的操作来启动其他的 Activity,每次启动新的 Activity 时,之前的 activity 就“stopped”(停止)了,但它并没有被销毁,系统把它保存在“back stack”中,而新启动的 Activity 就被放在了“back stack”的栈首,在屏幕的最前端展现出来。当用户完成了与栈首的 Activity 的交互后,通过点击 BACK 键,栈首的 Activity即被从栈里 pop 出来并销毁了,先前的 Activity 就 resumes(重新恢复) 。Activity 的生命周期如图 2.2 所示。A c t i v i t y S t a r t so n C r e a t e ( )o n S t a r t ( )N e w A c t i v i t y i s s t a r t e do n R e s u m e ( )A c t i v i t y i s r u n n i n go n S t o p ( )Y o u r A c t i v i t y i s n o l o n g v i s i b l eo n P a u s e ( )o n D e s t r o y ( )A c t i v i t y i s s h u t d o w nU s e r n a v i g a t e s b a c k t o y o u r A c t i v i t yP r o c e s s i s k i l l e dO t h e r a p p l i c a t i o n n e e d m e m o r yO n R e s t a r t ( )Y o u r A c t i v i t y c o m e s t o t h e f o r e g r o u n dY o u r A c t i v i t y c o m e s t o t h e f o r e g r o u n d图 2.2 Activity 状态变换路径图Service 是 android 系统中的一种组件,它跟 Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service 是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,我们打开 Android 浏览器,这个时候虽然我们已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的 Service 进行控制。当然这个播放音乐的 Service 也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他 Activity 这个时候程序要在后台继续播7放,比如检测 SD 卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。在 Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。而 BroadcastReceiver 是对发送出来的 Broadcast 进行过滤接受并响应的一类组件。可以使用 BroadcastReceiver 来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用 BroadcastReceiver 进行处理。BroadcastReceiver 的生命周期,从对象调用它开始,到 onReceiver 方法执行完成之后结束。另外,每次广播被接收后会重新创建 BroadcastReceiver 对象,并在 onReceiver 方法中执行完就销毁,如果 BroadcastReceiver 的 onReceiver 方法中不能在 10 秒内执行完成,Android 会出现 ANR 异常。所以不要在 BroadcastReceiver 的 onReceiver 方法中执行耗时的操作。如果需要在 BroadcastReceiver 中执行耗时的操作,可以通过 Intent 启动 Service 来完成。但不能绑定 Service。Content Provider 是 Android 提供的第三方应用数据的访问方案。在Android 中,对数据的保护是很严密的,除了放在 SD 卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的。应用想对外提供的数据,可以通过派生 ContentProvider 类, 封装成一枚 Content Provider,每个 Content Provider 都用一个 uri 作为独立的标识。 ContentProvider 为存储和读取数据提供了统一的接口,使用 ContentProvider,应用程序可以实现数据共享, Android 内置的许多数据都是使用 ContentProvider 形式,供开发者调用的(如视频,音频,图片,通讯录等)。 当应用继承 ContentProvider 类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences 共享数据,需要使用 sharedpreferences API 读写数据。而使用ContentProvider 共享数据的好处是统一了数据访问方式。2.4 Eclipse 及插件介绍 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 8虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。 这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+ 和 COBOL 等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。 基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。XMLBuddy:编辑 xml 文件;下载地址为 。 Fat Jar:打包插件,可以方便的完成各种打包任务,可以包含外部的包等。Log4E:Log4j 插件,提供各种与 log4j 相关的任务,Log4j 专用于为程序输入调试信息。Lomboz:Ecilpse 的一个 J2EE 的插件,可以将很多 java 应用服务器,J2EE 组件和 web 应用开发集成到 Eclipse 中,可以帮助 Java 开发者使用 Eclipse 建立,测试和部署 J2ee 应用。支持 jsp 编写,包括语法着色和语法检查:。TomcatPlugin:支持 Tomcat 插件。2.5 开发平台搭建Eclipse 作为跨平台的自由集成开发环境(IDE ) ,虽然本身只是一个框架平台,但拥有众多插件支持,灵活性佳,因此选择基于 Java 的整合型可扩展平台Eclipse 作为开发平台。安装步骤:(1)首先安装 JDK1.7,配置环境变量;(2)在官网选择 windows 64 位系统下载对应的 Eclipse 与 Android SDK,然后点击 SDK 安装目录下的 setup.exe,接着点击 Installed Packages 安装一个SDK platform。(3)安装 Android ADT 插件:双击图标启动 Eclipse,在菜单找到按钮点击9Help-Install New Software。在 work with 中输入选择本地文件,找到 ADT 安装包,输入 ADT 的名字,接着点击下一步,全选安装,安装完成后重新启动Eclipse;(4)配置 SDK:双击打开 Eclipse,选择 Windows-Preferences-Android,在本地中找到 SDK 存放目录,选择配置 Android SDK 9;(5)创建 AVD,打开 Eclipse,选择菜单中的手机图标,点击 new,输入模拟器名字、版本、SD Card 内存大小,点击 OK,创建完成;(6)启动模拟器。2.6 调试方法Eclipse 调试:Android 程序在编译的过程中,如果出现了编译错误,就会停止编译,并报告错误记录,通过错误记录可以查找到出错代码的具体位置和出错的原因,这是最基础的调试方法。然而当程序在编译过程中并没有出错,而在运行过程中出现错误时,通常要使用断点调试和 Logcat 调试。断点调

温馨提示

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

评论

0/150

提交评论