基于安卓的多功能手電筒APP設(shè)計與實現(xiàn)_第1頁
基于安卓的多功能手電筒APP設(shè)計與實現(xiàn)_第2頁
基于安卓的多功能手電筒APP設(shè)計與實現(xiàn)_第3頁
基于安卓的多功能手電筒APP設(shè)計與實現(xiàn)_第4頁
基于安卓的多功能手電筒APP設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于安卓的多功能手電筒APP設(shè)計與實現(xiàn)目錄摘要1ABSTRACT2第1章緒論31.1 研究背景31.2 研究現(xiàn)狀41.3 本文的主要工作51.4 論文的組織結(jié)構(gòu)6第2章 Android相關(guān)技術(shù)介紹72.1 Android系統(tǒng)開發(fā)介紹72.1.1 Android技術(shù)簡介72.1.2 Android的應用程序組件82.2 Android Studio簡介92.2.1架構(gòu)組成92.2.2 主要功能10第3章需求分析123.1 多功能手電筒的的功能需求123.2多功能手電筒的性能需求13第4章多功能手電筒的架構(gòu)設(shè)計144.1多功能手電筒架構(gòu)設(shè)計目標和原則144.2多功能手電筒的總體設(shè)計144.3多功能

2、手電筒的功能設(shè)計15第5章多功能手電筒的詳細設(shè)計與實現(xiàn)165.1主界面設(shè)計165.2多功能手電筒的模塊設(shè)計185.2.1 手電筒詳細設(shè)計185.2.2發(fā)送摩爾斯電碼詳細設(shè)計205.2.3 彩色手電筒詳細設(shè)計2435.2.4 警燈的詳細設(shè)計285.3 簡單設(shè)置的實現(xiàn)28第6章多功能手電筒的實現(xiàn)與效果測試296.1多功能手電筒總體實現(xiàn)與測試296.2多功能手電筒模塊實現(xiàn)與測試30結(jié)論31致謝32參考文獻33附錄1 英文原文34附錄2 中文譯文384基于安卓的多功能手電筒APP設(shè)計與實現(xiàn)摘 要隨著第四代移動通信技術(shù)的發(fā)展、推廣與應用,以及智能手機高速發(fā)展并且走進普通大眾的生活,成為不可缺少的生活必需

3、品,手機應用的開發(fā)與更新速度也日益加快。各種手機應用為智能機用戶提供了舒適,方便快捷,環(huán)保而又豐富多彩的生活。本應用就是一款通過Java編程語言,在Android Studio這一谷歌自主研發(fā)的Android開發(fā)平臺上設(shè)計的基于Android的多功能手電筒手機應用程序。本應用主要包括手機閃光燈實現(xiàn)手電筒的開關(guān),通過屏幕的亮度調(diào)節(jié)以及顏色的變化實現(xiàn)彩色燈,以及通過屏幕閃爍實現(xiàn)警燈,還有新穎的功能發(fā)送摩爾斯電碼等功能。這些可以滿足用戶對手電筒的基本需求,并且使得手電筒這一應用更加具有可玩性。本文詳細介紹了開發(fā)多功能手電筒的設(shè)計流程,各個功能的設(shè)計,代碼編寫實現(xiàn),調(diào)試修改,以及測試改進,對程序進行調(diào)

4、整優(yōu)化,并且通過對界面組件進行布局,使得用戶有更佳的體驗。關(guān)鍵字:手電筒;多功能;安卓;基礎(chǔ)應用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 研究背景智能手機,是指像個人電腦一樣,具有獨立的操作系統(tǒng),獨立的運行空間,可以由用戶自行安裝軟件、游戲、導航等第三方服務商提供的程序,并可以通過移動通訊網(wǎng)絡(luò)來實現(xiàn)無線網(wǎng)絡(luò)接入手機類型的總稱。智能手機的使用范圍已經(jīng)布滿全世界,各個手機廠商紛紛轉(zhuǎn)向智能手機的生產(chǎn)與銷售,其中Google、 蘋果、三星、諾基亞、HTC這五大品牌在全世界最廣為人知,而小米、華為、魅族、聯(lián)想、中興、酷派等品牌在中國備受關(guān)注。智能手機飛速發(fā)展,成為人們生活中的必需品。智能手機有幾大特點具備無線接入互聯(lián)網(wǎng)的能力:即需要支持GSM網(wǎng)絡(luò)下的GPRS或者CD

10、MA網(wǎng)絡(luò)的CDMA1X或3G(WCDMA、CDMA-2000、TD-CDMA)網(wǎng)絡(luò),甚至4G(HSPA+、FDD-LTE、TDD-LTE)。具有PDA的功能:包括PIM(個人信息管理)、日程記事、任務安排、多媒體應用、瀏覽網(wǎng)頁。具有開放性的操作系統(tǒng):擁有獨立的核心處理器(CPU)和內(nèi)存,可以安裝更多的應用程序,使智能手機的功能可以得到無限擴展。人性化:可以根據(jù)個人需要擴展機器功能。根據(jù)個人需要,實時擴展機器內(nèi)置功能,以及軟件升級,智能識別軟件兼容性,實現(xiàn)了軟件市場同步的人性化功能。功能強大:擴展性能強,第三方軟件支持多。運行速度快:隨著半導體業(yè)的發(fā)展,核心處理器(CPU)發(fā)展迅速,使智能手機在

11、運行方面越來越極速。智能手機支持多種操作系統(tǒng),比如:谷歌的Android、蘋果公司的iOS、微軟公司的Windows Phone、RIM公司的黑莓Blackberry、塞班公司的Symbian等,其中在智能手機操作系統(tǒng)份額最重的是Android,約占80%,成為全球第一大智能操作系統(tǒng)。Android一詞的本意是指“機器人”,同時也是谷歌公司于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成。在2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統(tǒng),并且當天谷歌宣布建立一個全球性的組織聯(lián)盟,該組織由34

12、家手機制造商、軟件開發(fā)商、電信運營商以及芯片制造商組成,并與84家硬件制造商、軟件開發(fā)商及電信運營商組成開放手持設(shè)備聯(lián)盟,共同研發(fā)改良Android系統(tǒng)。Android是基于Linux的自由以及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦等,由谷歌公司以及開放手機聯(lián)盟領(lǐng)導和開發(fā)。2012年11月數(shù)據(jù)顯示,Android 占據(jù)全球智能手機操作系統(tǒng)市場76%的份額,中國市場占有率為90%。Android應用也隨著Android的發(fā)展如雨后春筍般出現(xiàn),現(xiàn)在在Android應用商店中可以看到大量的軟件,這些軟件涉及到人們生活中的方方面面,如網(wǎng)上購物,網(wǎng)上繳費,游戲娛樂等等方便著人們的

13、生活。而隨著手機硬件的發(fā)展,智能手機也在不斷地發(fā)生著改變,帶有閃光燈的高像素攝像頭成為了愛美自拍人士的首選,現(xiàn)在智能手機基本上都配備有閃光燈,這就使得我們可以開發(fā)一款基于這一硬件的智能手機應用-多功能手電筒,來代替人們?nèi)粘5氖蛛娡玻梢怨?jié)約電池,減少污染,循環(huán)利用,攜帶方便。一般手機都有自帶的手電筒的應用程序,但是其功能單一,只有打開和關(guān)閉閃光燈兩種狀態(tài)。這里,我將對手電筒系統(tǒng)進行修改,增加一些新的功能,使之更加實用。1.2 研究現(xiàn)狀中國移動設(shè)備的制造發(fā)展迅速,截止2015年第三季度,國內(nèi)活躍設(shè)備數(shù)達到10.8億,說明我國已經(jīng)進入了智能時代,人們幾乎人手一部智能設(shè)備,而在2012年智能手機在國

14、內(nèi)的份額還不是很高,智能設(shè)備尤其是智能手機的的高速發(fā)展,以其方便性,多功能性,實用性,以及現(xiàn)在很多廠商的廉價高性能的追求,使得智能手機在全球發(fā)展迅猛,國內(nèi)更是盛況空前,各個品牌每年都有多樣產(chǎn)品推出,也加速了智能手機的更新?lián)Q代,同時,智能手機也實現(xiàn)了出口創(chuàng)匯,促進了經(jīng)濟的發(fā)展,也推動了我國的創(chuàng)新能力。在國內(nèi)所有活躍的移動智能設(shè)備中,安卓平臺設(shè)備依舊占據(jù)主要地位,約為62%,霸主地位不可撼動。在國內(nèi)Android設(shè)備廠商中只有三星一家為國外品牌,其余都是國內(nèi)品牌。小米、魅族等廠商通過其對安卓系統(tǒng)的優(yōu)化改良,形成了自己獨特的操作系統(tǒng)風格,這些在安卓系統(tǒng)上的定制版本操作系統(tǒng)使得這些公司迅猛發(fā)展。安卓系

15、統(tǒng)的優(yōu)化與改良仍然是手機廠商的一大賣點。安卓系統(tǒng)的價格低廉,因為Android是開源的,所有的生產(chǎn)廠商都可以免費使用,對其進行個性化定制也變的低成本,并且安卓系統(tǒng)給予終端廠商和開發(fā)者更大的靈活性,開發(fā)者在程序的開發(fā)移植上更為方便,生產(chǎn)廠商不需要再考慮終端內(nèi)容審核問題,在終端廠商、電信運營商和第三方應用開發(fā)商的推動下,用戶可選擇的內(nèi)容進一步豐富。各大Android應用商店呈現(xiàn)百花齊放的態(tài)勢。隨著應用商店的不斷發(fā)展和開發(fā)者的涌入,Android 平臺的應用資源優(yōu)勢正逐漸擴大。在信息高度發(fā)達,即將邁入數(shù)據(jù)時代的今天,智能手機已經(jīng)很普及了,而各種Android應用也擁有了龐大的用戶。多功能手電筒作為一

16、種簡單實用的功能也必將為人們的生活帶來方便,通過手機實現(xiàn)手電筒功能,可以應對一些突發(fā)狀況,尤其是在夜晚,還可以通過發(fā)射摩爾斯電碼進行求救,以及定制屬于你自己的暗號密語,通過警燈來吸引人們的注意來保護自己,彩色的屏幕可以為你的單調(diào)的生活增加一些樂趣。1.3 本文的主要工作在基于現(xiàn)實中智能手機的發(fā)展狀況以及Android系統(tǒng)的應用,開發(fā)一款超級手電筒是有意義的,可以作為對Android系統(tǒng)應用開發(fā)的初步認識入門,并以之為跳板深入學習Android有很大幫助,多功能手電筒也是一款對現(xiàn)實生活有意義的應用。本文在當前Android的發(fā)展現(xiàn)狀基礎(chǔ)上,展示了一款基礎(chǔ)應用-多功能手電筒的邏輯思路、系統(tǒng)結(jié)構(gòu)以及

17、各個功能實現(xiàn)的詳細過程。本文主要采用Android的View,AppCompatActivity等Android的基本組件來實現(xiàn)多功能手電筒的。當點擊進入軟件時,出現(xiàn)的是一個手電筒界面,在一個星空背景之中有一個手電筒,當點擊手電筒中部時,會打開手電筒,再一次點擊會關(guān)閉,在界面的右上側(cè)有一個按鈕,點擊該按鈕回進入主界面,主界面中顯示的是各種功能,第一個是手電筒,第二個是發(fā)送摩爾斯電碼,第三個是彩燈,第四個是警燈,最后一個是設(shè)置,點擊圖標進入相應的界面之中進行操作。本文主要是對這幾個功能的實現(xiàn)開發(fā)的介紹。1.4 論文的組織結(jié)構(gòu)第1章 緒論:主要描述的是基于安卓的多功能手電筒開發(fā)背景,Android

18、以及智能手機發(fā)展的現(xiàn)狀,本論文研究的主要目的和意義和本文需要完成的工作。第2章 Android相關(guān)技術(shù)介紹:Android基本技術(shù)簡介,Android工作機制,開發(fā)所運用到的基本框架組件View、AppCompatActivity等的簡介,以及現(xiàn)階段Android比較常用的開發(fā)工具Android Studio平臺的介紹。第3章 需求分析:對多功能手動電筒所需要的功能以及戶所需要的性能進行分析。第4章 多功能手電筒的架構(gòu)設(shè)計:描述應用的設(shè)計目標和原則,并介紹應用的總體設(shè)計和功能設(shè)計,為詳細設(shè)計提供參考,也使得設(shè)計的方向清晰明了。第5章 多功能手電筒的詳細設(shè)計與實現(xiàn):介紹應用中的具體的界面構(gòu)成以及

19、各個功能的詳細實現(xiàn)過程。第6章 多功能手電筒的實現(xiàn)與測試:描述多功能手電筒的總體實現(xiàn)以及各個功能的模塊實現(xiàn),并對實現(xiàn)過程中的問題進行說明。第2章 Android相關(guān)技術(shù)介紹2.1 Android系統(tǒng)開發(fā)介紹2.1.1 Android技術(shù)簡介Android作為一個系統(tǒng),是一個運行在Linux核心上的Java基礎(chǔ)的操作系統(tǒng)。Android的系統(tǒng)框架和其操作系統(tǒng)一樣,采用分層架構(gòu)的思想,從上層到下層分別是應用程序?qū)印贸绦蚩蚣軐?、系統(tǒng)運行庫層及Linux內(nèi)核層。應用程序?qū)釉搶犹峁┮恍┖诵膽贸绦虬?,例如電子郵件、短信、日歷、地圖、瀏覽器和聯(lián)系人管理等。同時,開發(fā)者可以利用Java語言設(shè)計和編寫屬于

20、自己的應用程序,而這些程序與那些核心應用程序彼此平等、友好共處。應用程序框架層該層是Android應用開發(fā)的基礎(chǔ),開發(fā)人員大部分情況是在和她打交道。應用程序框架層包括活動管理器、窗口管理器、內(nèi)容提供者、視圖系統(tǒng)、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務十個部分。在Android平臺上,開發(fā)人員可以完全訪問核心應用程序所使用的API框架。并且,任何一個應用程序都可以發(fā)布自身的功能模塊,而其他應用程序則可以使用這些已發(fā)布的功能模塊。基于這樣的重用機制,用戶就可以方便地替換平臺本身的各種應用程序組件。系統(tǒng)庫和Android運行時系統(tǒng)庫包括九個子系統(tǒng),分別是圖層管理、媒體

21、庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android運行時包括核心庫和Dalvik虛擬機,前者既兼容了大多數(shù)Java語言所需要調(diào)用的功能函數(shù),又包括了Android的核心庫,比如android.os、android.media等等。后者是一種基于寄存器的java虛擬機,Dalvik虛擬機主要是完成對生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能。Linux內(nèi)核Android核心系統(tǒng)服務依賴于Linux內(nèi)核,如安全性、內(nèi)存管理、進程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。Linux內(nèi)核也是作為硬件與軟件棧的抽象層

22、。驅(qū)動:顯示驅(qū)動、攝像頭驅(qū)動、鍵盤驅(qū)動、WiFi驅(qū)動、Audio驅(qū)動、flash內(nèi)存驅(qū)動、Binder(IPC)驅(qū)動、電源管理等。Linux提供的是最核心最基礎(chǔ)的一些功能。Android層次總結(jié)Android的系統(tǒng)架構(gòu)采用分層架構(gòu)的思想,架構(gòu)清晰,層次分明,協(xié)同工作。Android的系統(tǒng)架構(gòu)不僅從宏觀上認識了Android系統(tǒng),同時,也給我們的學習與實踐指明了方向。若是從事Android應用開發(fā),那應該研究Android的應用框架層和應用程序?qū)?;若是從事Android系統(tǒng)開發(fā),那應該研究Android的系統(tǒng)庫和Android運行時;若是從事Android驅(qū)動開發(fā),那應該研究Android的Li

23、nux內(nèi)核。總之,找準切入點,實踐出真知。Android項目結(jié)構(gòu)中包括java源代碼目錄、mainfests文件夾、res資源文件夾,Gradle Scripts文件夾。Java文件夾中存放Android應用程序的所有源代碼,mainfests文件夾中是AndroidMainfest.xml項目清單文件,該文件列出了應用程序提供的功能,開發(fā)好的各種組件需要在此文件中進行配置,尤其是Activity、Intent、Service以及ContentProvider,凡需要用到的組件都需要在此文件中注冊,當使用系統(tǒng)內(nèi)置的應用時,還需要在此文件中聲明使用權(quán)限,該文件也是所有Android應用程序都需要

24、的文件,描述了程序包的全局變量,包括公開的應用程序組件和每個組件的實現(xiàn)類,什么數(shù)據(jù)可以操作,在什么地方可以運行等。res資源目錄存放使用到的各種資源,如XML界面文件、圖片數(shù)據(jù)等。Gradle Scripts文件夾中是各種Gradle文件,Gradle是一種構(gòu)建工具,它拋棄了基于XML的構(gòu)建腳本,取而代之的是采用一種基于Groovy的內(nèi)部領(lǐng)域特定語言。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提供了一個可視化的區(qū)域。在這個區(qū)域可以放置各種Android控件,如按鈕、圖像、文本框等。在Activity類中有一個onCreate事件方法,一般在該

26、方法中對Activity進行初始化。通過setContentView方法可以將View放到Activity上。綁定后,Activity會顯示View上的控件。Service(服務)Service是提供連續(xù)信息的應用程序。它是運行于應用程序后臺的服務,在用戶進行其它活動的時候,這個服務將一直運行在基于Android平臺的即時通訊系統(tǒng)的研究與實現(xiàn)后臺,直到用戶停止該服務或服務運行結(jié)束。本系統(tǒng)客戶端擴展功能就是采用Service來進行設(shè)計和開發(fā)的。Broadcast Receiver(廣播接收器)廣播接收器的唯一功能是接收廣播動作,以及對廣播動作做出反應。很多時候,廣播動作是由系統(tǒng)發(fā)出的,例如時區(qū)的

27、變化、電池電量不足、收到短信等。此外,應用程序還可以發(fā)送廣播動作,例如,通知其他程序數(shù)據(jù)已經(jīng)下載完畢,并且這些數(shù)據(jù)已經(jīng)可以使用了。Content Provider(內(nèi)容提供者)內(nèi)容提供者可以為其他應用程序提供數(shù)據(jù),這些數(shù)據(jù)可以保存在系統(tǒng)文件中。在Content Provider類中定義了一系列的方法,通過這些方法可以是其他應用程序獲得內(nèi)容提供者所提供的數(shù)據(jù)。但在應用程序中不能直接調(diào)用,而需要通過android.Content.ContentResolver類的方法來調(diào)用內(nèi)容提供者類中提供的方法。2.2 Android Studio簡介2.2.1架構(gòu)組成基于IDEA,Android Studio

28、 提供以下功能:基于Gradle的構(gòu)建支持Android 專屬的重構(gòu)和快速修復提示工具以捕獲性能、可用性、版本兼容性等問題支持ProGuard 和應用簽名基于模板的向?qū)砩沙S玫?Android 應用設(shè)計和組件功能強大的布局編輯器,可以讓你拖拉 UI 控件并進行效果預覽2.2.2 主要功能2013年5月16日,在I/O大會上,谷歌推出新的Android開發(fā)環(huán)境Android Studio,并對開發(fā)者控制臺進行了改進,增加了五個新的功能,包括優(yōu)化小貼士、應用翻譯服務、推薦跟蹤、營收曲線圖、用版測試和階段性展示。優(yōu)化小貼士:在主體中打開你的應用,點擊小貼士,會得到這樣的建議:為你的應用開發(fā)平板電

29、腦版本。應用翻譯服務:允許開發(fā)者直接在開發(fā)主體中獲得專業(yè)的翻譯。上傳你的需求,選擇翻譯,其會顯示翻譯方和價格,并在一周內(nèi)發(fā)回譯本。推薦跟蹤:允許開發(fā)者找出最有效的廣告營收曲線圖:向開發(fā)者展示其應用營收,以國家進行劃分試用版測試和階段性展示:開發(fā)者可以對應用進行測試,然后向測試用戶推出,測試結(jié)果不會對外公布。當一個版本的測試結(jié)束,開發(fā)者可以向特定比例用戶推出。Android Studio這款開發(fā)工具被首次公布,這也是為了方便開發(fā)者基于Android開發(fā)。首先解決的一個問題是多分辨率。Android設(shè)備擁有大量不同尺寸的屏幕和分辨率,根據(jù)新的Studio,開發(fā)者可以很方便的調(diào)整在各個分辨率設(shè)備上的

30、應用。同時Studio還解決語言問題,多語言版本(但是沒有中文版本)、支持翻譯都讓開發(fā)者更適應全球開發(fā)環(huán)境。Studio還提供收入記錄功能。最大的改變在于Beta測試的功能。Studio提供了Beta Testing,可以讓開發(fā)者很方便試運行。2015年5月29日,在谷歌I/O開發(fā)者大會上,谷歌發(fā)布AndroidStudio 1.3版,支持C+編輯和查錯功能。Android Studio 1.3版開發(fā)碼代碼變得更加容易,速度提升,而且支持C+編輯和查錯功能。第3章 需求分析3.1 多功能手電筒的的功能需求對于應用的設(shè)計,首要原則是以用戶為主,以用戶滿意為宗旨,所以要分析用戶對超級手電筒功能需求

31、。多功能手電筒首先是一款手電筒類的軟件,所以其最原始的需求就是用戶在黑暗下對光亮的需求,以方便照明,雖然現(xiàn)在手機都會自帶手電筒軟件,但作為一款多功能軟件,還是要將手電筒照明的功能考慮進去,以方便用戶的使用,所以應用的首個功能是手電筒照明。由于手電筒原理是喚醒閃光燈,設(shè)置其開關(guān)狀態(tài),所以對于閃光燈還是有一定的損傷,所以對于手電筒需要有一定的改進,所以在分析智能手機和android應用程序的基礎(chǔ)上,需要開發(fā)出與之適應的功能。所以開發(fā)出手機屏幕來代替手電筒,將手機屏幕亮度調(diào)到最大,基本可以滿足照明的需求,但僅僅調(diào)整屏幕亮度并沒有新奇之處,因為手機設(shè)置之中就自帶屏幕亮度調(diào)整,所以我們就將彩色屏幕應用其

32、中,不只是將屏幕的亮度調(diào)至最大,而且還在屏幕中心設(shè)有色彩選擇菜單,你可以選擇自己喜歡的顏色將屏幕亮度調(diào)到最大,而且這種彩色燈還適應在其他顏色亮光下凸顯自己,并且還可以在黑暗中營造氛圍,比如在講恐怖故事時,適時的綠色光亮,給人一種詭異的感覺,在浪漫的情調(diào)下,粉紅色為人帶來溫暖溫馨。用戶可以自己選擇自己喜歡的顏色,定制自己的彩色燈。然而彩色的燈光并不一定能夠滿足用戶的需要,人們追求的實個性,獨特,凸顯自己,而不是生活在一個靜態(tài)的世界里。因此,在設(shè)計功能時,需要考慮一種個性需求,所以增加了警燈這一功能。警燈是很吸引人的眼球的,因為其獨特的顏色,所以在顏色的基礎(chǔ)上,加上了動態(tài)的效果,以一定的頻率閃動。

33、警燈并不一定是為了警示效果,當身處黑暗中,警燈容易吸引人,在演唱會上閃爍的警燈也為演唱會增加一種狂野不羈的效果。警燈是以冷暖色調(diào)的變化為依托的,所以選用的是紅色和藍色這兩種最極端相對的顏色來作為警燈閃動的基礎(chǔ),并且輔以黑色,交替變換,形成很好的效果。在考慮閃爍的基礎(chǔ)上,閃光燈也可以進行相應的處理,所以就以閃光燈的閃爍為基礎(chǔ)來應用摩爾斯電碼來傳遞消息,這樣既可以凸顯個性,又可以充分利用資源。摩爾斯電碼是用來傳遞加密信息的,而且起傳播是要有一定距離的,所以以閃光燈強烈的光束是很滿足條件的。所以利用摩爾斯電碼來發(fā)送屬于你自己的信息,發(fā)送屬于你自己的暗號,屬于兩個人或者更多人的密語,是多么令人興奮的事

34、情。以上就是對多功能手電筒功能需求的分析,確定了手電筒、彩色燈、警燈和摩爾斯電碼四種功能為基礎(chǔ)進行開發(fā)。3.2多功能手電筒的性能需求手機軟件要有良好的用戶體驗,而良好的用戶體驗是建立在好的性能方面的,而評價應用的性能的標準是以界面、用戶操作、響應速度、操作提示等方面來進行指定的。首先要有良好的用戶界面,好的用戶界面不僅包括良好的美工,還包括良好的進入界面,主菜單的整體布局等方面,多功能手電筒的見面布局是以基礎(chǔ)的進入界面為手電筒界面,點擊按鈕進入主界面,主界面線性布局各種功能,點擊相應的按鈕就會進入相應功能的操作界面,雖然基礎(chǔ),但很實用,所以用戶的操作也會非常方便。關(guān)于響應速度,應用程序的響應速

35、度還是比較快的,但由于考慮對閃光燈算還,所以對于上光燈的相應設(shè)置為0.2秒,響應稍顯慢,但基本不會影響使用。在操作提示方面,對于退出方面,設(shè)置為點擊兩次退出應用,點擊一次會有提示:“再按一次退出”。在進入彩燈界面中,會有“請點擊屏幕中央顯示調(diào)色板”并且會在三秒后自動消失,這樣可以提示用戶點擊中央顯示調(diào)色板來調(diào)屏幕的顏色。在發(fā)送摩爾斯電碼界面,當發(fā)送的內(nèi)容錯誤時,會提醒用戶只能發(fā)送數(shù)字、字母和空格,使用戶了解可以發(fā)送的內(nèi)容,良好的提示界面對于一個用戶的影響很大,這相當于游戲中的新手引導,引導玩家迅速上手。第4章 多功能手電筒的架構(gòu)設(shè)計4.1多功能手電筒架構(gòu)設(shè)計目標和原則實現(xiàn)手電筒的基本功能,可以

36、照明;照明的多方式實現(xiàn),使用閃光燈、屏幕作作為照明工具;多功能性,符合設(shè)計的基本要求,滿足用戶需求;易用性,界面良好,容易操作,容易上手;可靠性,功能響應快,有一定的容錯能力。4.2多功能手電筒的總體設(shè)計一個程序的開發(fā)流程對于高效率實現(xiàn)客戶需求,完成所要求的設(shè)計任務有著很大影響,并且還要按照標準進行測試,來檢驗是否符合應用的要求。對于多功能能手電筒的開發(fā)來說,要首先制定開發(fā)流程,即基于對需求的分析來制定開發(fā)流程。在需求中有兩個功能依靠的是閃光燈,所以先進行開發(fā),彩燈和警燈是依靠屏幕的,后進行開發(fā)。而且應用是以手電筒為最終應用的,所以初始界面設(shè)計為手電筒功能界面,可以直接打開手電筒用以照明。然后

37、在根據(jù)Button的單擊事件進入主界面,主界面則羅列的是各種功能,根據(jù)用戶自己的需要選擇相應的功能。下圖是功能開發(fā)的流程,從左到右,從上到下依次進行,如圖4-1所示圖4-1功能開發(fā)流程4.3多功能手電筒的功能設(shè)計每個功能都需要單獨進行設(shè)計,因為多功能手電筒各個功能之間是單獨運行的。當總體的開發(fā)流程確定,對整體開發(fā)胸有成足后,就是對于各個功能進行詳細的設(shè)計,畢竟每個功能才是用戶體驗的最終效果。手電筒對于手電筒,沒有什么太大的要求,只需要可以打開和關(guān)閉即可。當單擊app快捷方式進入應用后,應當進入手電筒的界面,這時手電筒的狀態(tài)為關(guān)閉,處于off視圖中,對于手電筒的單擊事件,需要在手電筒界面設(shè)置一個

38、熱點,當該熱點被點擊時,會開啟閃光燈,對于處在開啟狀態(tài)的閃光燈則會顯示on的視圖,此時點擊熱點會關(guān)閉閃光燈。摩爾斯電碼進入摩爾斯電碼選項后,界面有提示“請輸入摩爾斯電碼字符(只能輸入字母、數(shù)字和空格)”,下面是一個輸入文本框而且默認的信息是SOS,用戶可以將自己想要發(fā)送的內(nèi)容輸入在文本框中 ,文本框底下是一個發(fā)送按鈕,點擊按鈕就會將信息通過閃光燈發(fā)送。當輸入的文本不符合要求時,點擊發(fā)送按鈕,會有一個提示信息“摩爾斯電碼只能由字母、數(shù)字和空格組成”,然后用戶可以修改文本。當發(fā)送摩爾斯電碼時,是不能退出的,當發(fā)送完摩爾斯電碼以后,后有一個提示“摩爾斯電碼發(fā)送完畢”。彩燈進入界面以后,首先是默認的紅

39、色,并且把屏幕的亮度調(diào)到最大,這就是進入彩燈功能以后的效果。而且在中心部分會有一個提示“請點擊屏幕中央顯示調(diào)色板”,3秒后提示消失,當用戶想要切換到自己想要的顏色時,只需要點擊屏幕中央然后像是一個白色背景,有彩色光環(huán)的調(diào)色板,當點擊需要的顏色時,中間的按鈕會顯示選中的顏色,點擊一下,屏幕就會切換到相應的顏色,這樣就實現(xiàn)了彩色燈功能。警燈警燈直接進去就是以一定的頻率閃動屏幕,屏幕的顏色依次為紅、黑、藍黑,屏幕的亮度也是最大的,可以很好的吸引注目,并且還有警示的效果。第5章 多功能手電筒的詳細設(shè)計與實現(xiàn)對于手電筒首先要設(shè)置權(quán)限,對于應用的要求,需要閃光燈的權(quán)限,而使用閃光燈是需要和照相機聯(lián)系起來,

40、所以還需要獲取照相機的權(quán)限,下面是獲得照相機和閃光燈的權(quán)限,如表5-1所示表5-1 Camera和Flashlight權(quán)限<uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.FLASHLIGHT"/>在默認的情況下,默寫權(quán)限是自動加上的,例如觸摸屏,代碼如表5-2所示表5-2 觸摸屏默認狀態(tài)代碼<uses-featureandroid:name="an

41、droid.hardware.touchscreen"android:required="true"/>一般觸摸屏是處于開啟的狀態(tài),因為智能機以及Android應用都需要依托觸摸來完成各種操作,但對于一些特殊類型的應用,某些功能并不需要或者禁止使用觸摸屏時,則需要將觸摸屏設(shè)置為關(guān)閉狀態(tài),將required的值設(shè)置為false即可。5.1主界面設(shè)計主界面是多功能手電筒的功能選擇界面,在主界面上可以選擇用戶所需要的界面。當然所定義的初始進入界面并不是主界面,而是手電筒界面,將會在手電筒的詳細設(shè)計之中進行詳細的描述,這里只介紹主界面的詳細開發(fā),當然與各個界面都有聯(lián)

42、系。圖5-1所示是主界面的整體布局圖5-1主界面布局多功能手電筒的界面布局與其他應用有所區(qū)別,整個應用只有一個窗口,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界面都設(shè)置為不可見,當進入用戶所需要的功能時,就會調(diào)用此方法,將所有的界面隱藏 ,再將該功能的界面setVisibility(View.VISIB

45、LE)使當前界面可見。所以對于所有的應用圖標都有一個onClick點擊響應事件,當點擊相應的圖標時,就會進入應用的UI視圖中。以上是整體布局,當然還有主界面的詳細布局,主要是圖標的布局模式,右上角按鈕點擊事件的響應以及背景圖片的設(shè)置。對于圖標的布局,采用的是線性布局模式,將屏幕平均分為三份,所以要設(shè)置一個權(quán)重,使layout_weight=1.共有三個線性布局,每一個線性布局中有三個IamgeView,每個ImageView的權(quán)重也設(shè)置為1,整個布局只有五個圖標,剩下的ImageView都設(shè)置為不可見,這樣就完成了對于圖標界面的布局。對于屏幕的線性布局,要有一個ID,用來找到當前的UI視圖。對

46、于右上角按鈕的,主要是用來響應當前的點擊事件,按鈕的功能是回到主界面,但當前為主界面時,則需要回到前一個視圖界面,所以需要定義兩個變量mCurrentUIType和mLastUIType來表示當前視圖和前一個視圖,并且使用一個枚舉類型來表示所有會出現(xiàn)的視圖狀態(tài),如表5-5所示表5-5枚舉所有視圖狀態(tài)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,對于單擊事件,先判斷當前狀態(tài),如果當前狀態(tài)不是主界面,則把mCurrentUIType值給mLastUIType,再令mCurrentUIType = UI_TYPE_MAIN,再隱藏所有界面,將主界面設(shè)置為可見,如果當前狀態(tài)是主界面,則根據(jù)記錄的mLastUIType,令mCurrentUIType = mLastUIType,并且令mLastUIType = UI_TYPE_MAIN,隱藏所有界面,將當前界面設(shè)置為可見。背景圖片是drawable資源中的圖片,將其設(shè)置為所有界面的背景圖片,在

48、style.xml和activity_main.xml文件中進行設(shè)置,所有的圖片資源都需要提前引入到res目錄的drawable文件夾下,然后才可以調(diào)用相應資源。5.2多功能手電筒的模塊設(shè)計5.2.1 手電筒詳細設(shè)計手電筒的界面設(shè)計手電筒的界面相對比較簡單,而且手電筒的應用界面也是初始的進入界面。手電筒有開和關(guān)兩種狀態(tài),所以對應的兩種狀態(tài)都有與之相對的視圖效果,所以在drawable資源中引入兩個資源圖片分別表示開關(guān)狀態(tài),這也是手電筒的最終界面布局,如下圖5-2所示圖5-2手電筒關(guān)閉狀態(tài)上圖是打開應用的初始界面,手電筒的狀態(tài)處于關(guān)閉狀態(tài),如下圖5-3所示圖5-3 手電筒開啟狀態(tài)當點擊中間的熱鍵

49、之后,就會切換到如上圖所示的開狀態(tài)效果,兩個視圖的轉(zhuǎn)換是定義在一個xml文件中,該xml文件在drawable資源中定義,如表5-6所示表5-6 開關(guān)視圖切換的xml文件<transition xmlns:android="<item android:drawable="drawable/off"/><item android:drawable="drawable/on"/></transition>這個文件中用來定義一些特效,以上語句是說明只允許放置兩個界面,兩個界面轉(zhuǎn)換是通過漸變方式。對于熱點的設(shè)置

50、,需要對手電筒的主界面的布局進行設(shè)置,采用的是框架布局,因此可以用一個圖像覆蓋另一個圖像,在主界面flashlight的上面覆蓋一個imageview,用來響應單擊事件。首先要定義兩個變量,用來表示兩個imageview,并且對其進行初始化。因為手機的屏幕并不都是相同的,所以為了使熱點適應不同屏幕的尺寸,所以需要獲得屏幕的像素尺,然后依據(jù)熱點的位置,設(shè)置熱點的尺寸,如表5-7所示表5-7熱點的設(shè)置LayoutParams laParams = (LayoutParams)mImageViewFlashlightController.getLayoutParams();laParams.heig

51、ht = point.y*3/4;laParams.width = point.x/3;mImageViewFlashlightController.setLayoutParams(laParams);熱點的尺寸是高度的四分之三,寬度是屏幕寬度的三分之一,而且熱點的位置是在底部居中,這樣可以很好的適應用戶點擊的位置要求。熱點的點擊事件在flashlight類中進行定義,首先是檢測手機有沒有閃光燈,比如在模擬機上測試是沒有閃光燈的,會給用戶一個反饋,智能機上沒有上光燈可用,當然也就不能實現(xiàn)該功能。當檢測到硬件設(shè)備有閃光燈時,需要判斷此時閃光燈所處的狀態(tài),這里采用設(shè)置一個標簽的方法來標示閃光燈的狀

52、態(tài),如果閃光燈被點亮,則tag標簽為真,如果閃光燈關(guān)閉狀態(tài),則tag標簽為假。當標簽為真時,點擊熱點,則會關(guān)閉閃光燈,為假時,打開閃光燈。如表5-8所示表5-8閃光燈的控制public void onClick_Flashlight(View view) if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) Toast.makeText(this,"該設(shè)備沒有閃光燈",Toast.LENGTH_LONG).show();return;if(Boolean)mImageVie

53、wFlashlight.getTag() = false) openFlashlight();else closeFlashlight();5.2.2發(fā)送摩爾斯電碼詳細設(shè)計摩爾斯電碼是以簡單的方式來發(fā)送較為復雜的信息的,類似于我們所了解的二進制,摩爾斯電碼是由兩個基本單位組成,一個是點(.),發(fā)音是“嘀”;另一個是橫(-),發(fā)音是“嗒”。由于摩爾斯電碼 是由歐美人發(fā)明的,所以整個摩爾斯電碼表一般只有26個英文字母,10個阿拉伯數(shù)字,以及一些標點符號,這里我們采用的是數(shù)字和字母。各個字符之間是有停頓時間的,來區(qū)分各個字符的發(fā)送,比如點和橫之間的停頓,字符之間的停頓,單詞之間的停頓,以及點的閃爍時

54、間和橫的閃爍時間都是不同的,只有這樣才能實現(xiàn)摩爾斯電碼的成功發(fā)送。屏幕和閃光燈都可以進行摩爾斯電碼的發(fā)送,但是對于屏幕來說,亮度遠不及閃光燈,使用閃光燈可以發(fā)送的距離比較遠,因此采用閃光燈作為摩爾斯電碼的發(fā)送設(shè)備較好。對于摩爾斯電碼的發(fā)送,首先需要設(shè)置界面,在layout文件夾中建一個xml文件設(shè)置界面布局,界面比較簡單,主要是有一個輸入提示框,提示用戶只能輸入數(shù)字和字母,在下面是一個文本輸入框,用戶可以在文本輸入框中輸入需要發(fā)送的信息,當輸入的信息不符合要求時,會有提示信息。文本輸入框下面是一個發(fā)送按鈕,點擊發(fā)送按鈕就可以將輸入的信息以摩爾斯電碼的方式通過閃光燈發(fā)送出去。默認界面和提示界面如

55、下:默認文本框中是SOS,當在文本框中輸入“我”的時候,點擊發(fā)送按鈕會提示用戶摩爾斯電碼發(fā)送的要求,界面布局如圖5-4所示,出錯提示如圖5-5所示圖5-4 摩爾斯電碼界面布局圖5-5出錯提示在代碼中對界面的布局,TextView是純文本,主要是提示用戶,EditText是文本輸入框,可以在其中進行編輯,Button則是發(fā)送按鈕,Button有一個單擊響應事件,是用來調(diào)用閃光燈來發(fā)送摩爾斯電碼的。摩爾斯電碼發(fā)送的主要設(shè)計是在對發(fā)送按鈕的響應而進行發(fā)送,調(diào)用閃光燈按照規(guī)定的頻率進行發(fā)送。首先是要定義摩爾斯電碼表,通過mMorseCodeMap.put()方法進行,如表5-9所示表5-9摩爾斯電碼表

56、示例代碼mMorseCodeMap.put('a', ".-");mMorseCodeMap.put('b', "-.");mMorseCodeMap.put('c', "-.-.");mMorseCodeMap.put('d', "-.");26個字母和10個數(shù)字都有與之對應的摩爾斯電碼。其次是文本內(nèi)容的發(fā)送,首先定義點的發(fā)送長度是200ms,橫的時長是點的三倍,點和橫之間的時間間隔為點的長度,字符之間的間隔為三倍的點的閃爍時間,單詞之間的間隔為七倍

57、的點的閃爍時間,實現(xiàn)代碼如表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;對于發(fā)送文本句子,首先是將句子分成單詞,是依據(jù)正則表達式,以空格來分割句子,使每個單詞獨立出來,如表5-11所示表5-11 句子的發(fā)送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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論