基于Android手機(jī)的手電筒程序的實(shí)現(xiàn)_第1頁
基于Android手機(jī)的手電筒程序的實(shí)現(xiàn)_第2頁
基于Android手機(jī)的手電筒程序的實(shí)現(xiàn)_第3頁
基于Android手機(jī)的手電筒程序的實(shí)現(xiàn)_第4頁
基于Android手機(jī)的手電筒程序的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課課 程程 設(shè)設(shè) 計(jì)計(jì) 報報 告告 課程設(shè)計(jì)名稱:嵌入式系統(tǒng)綜合課程設(shè)計(jì)嵌入式系統(tǒng)綜合課程設(shè)計(jì) 課程設(shè)計(jì)題目:基于基于 Android 手機(jī)的手電筒程序手機(jī)的手電筒程序 的實(shí)現(xiàn)的實(shí)現(xiàn) 院(系):計(jì)算機(jī)學(xué)院 專 業(yè): 班 級: 學(xué) 號: 姓 名: 指導(dǎo)教師: 完成日期: 目目 錄錄 第第 1 章章 系統(tǒng)分析系統(tǒng)分析.1 1.1 需求分析 .1 1.2 硬件分析 .1 1.2.1 實(shí)驗(yàn)環(huán)境.2 1.2.2 相關(guān)硬件簡介.2 1.3 軟件分析 .2 1.3.1 嵌入式操作系統(tǒng)簡介.3 1.3.2 開發(fā)技術(shù)簡介.4 第第 2 章章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì).5 2.1 操作系統(tǒng)移植 .5 2.2 系統(tǒng)模塊設(shè)計(jì)

2、 .5 2.3 關(guān)鍵流程 .6 2.3.1 系統(tǒng)主流程圖.6 2.3.2 開燈流程圖.7 2.3.3 屏幕背光流程圖.8 2.3.4 SOS 流程圖.9 第第 3 章章 系統(tǒng)調(diào)試及運(yùn)行系統(tǒng)調(diào)試及運(yùn)行.10 3.1 調(diào)試分析 .10 3.2 結(jié)果分析 .11 參考文獻(xiàn)參考文獻(xiàn).13 附附 錄錄.14 第 1 章 系統(tǒng)分析 1.1 需求分析需求分析 在現(xiàn)代社會中,手機(jī)的功能越來越豐富,給生活帶來了極大的趣味性和便捷 性。手電筒是生活中最普通的生活必需品,它在我們身處黑暗時給予我們光亮。 傳統(tǒng)的手電筒體積較大,需要電池,不方便攜帶。手機(jī)與手電筒的結(jié)合恰恰可以 解決傳統(tǒng)手機(jī)帶來的不便,同時還可以節(jié)約資

3、源,保護(hù)環(huán)境。既可以讓用戶及時 獲得手電筒帶來的益處,也可以讓生活更加便捷,高效。 1.2 硬件分析硬件分析 Android 是一個以 Linux 為基礎(chǔ)的半開源操作系統(tǒng),主要用于移動設(shè)備,由 Google 和開放手持設(shè)備聯(lián)盟開發(fā)與領(lǐng)導(dǎo)。 Android 的 HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動模塊。 HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不 至過度依賴 Linux kernel,以達(dá)成 kernel independent 的概念,也讓 Android framework 的開發(fā)能在不考量驅(qū)動程序?qū)崿F(xiàn)

4、的前提下進(jìn)行發(fā)展。HAL stub 是一種 代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操 作函數(shù)(operations) ,并由 Android runtime 向 HAL 取得 stub 的 operations, 再 callback 這些操作函數(shù)。HAL 里包含了許多的 stub(代理人) 。Runtime 只 要說明“類型”,即 module ID,就可以取得操作函數(shù)。 Android 本身是一個權(quán)限分立的操作系統(tǒng)。在這類操作系統(tǒng)中,每個應(yīng)用都 以唯一的一個系統(tǒng)識別身份運(yùn)行(Linux 用戶 ID 與群組 ID) 。系統(tǒng)的各部分也分

5、 別使用各自獨(dú)立的識別方式。Linux 就是這樣將應(yīng)用與應(yīng)用,應(yīng)用與系統(tǒng)隔離開。 在 Android 開發(fā)中,我們就是通過 ID 來調(diào)用或更改組件的。 Android 平臺提供給第三方開發(fā)者一個十分寬泛、自由的環(huán)境,不會受到各 種條條框框的阻擾。在本次課程設(shè)計(jì)中用到的是 Android4.4.2,型號為 SM-N9002 的三星手機(jī)。 1.2.1 實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境 1)JDK(Java Development Kit) JDK 是 Java 語言的軟件開發(fā)工具包,主要用于移動設(shè)備、嵌入式設(shè)備上 的 java 應(yīng)用程序。 2)Eclipse Eclipse 是一個開放源代碼的、基于 Java 的

6、可擴(kuò)展開發(fā)平臺。就其本身 而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn) 的是,Eclipse 附帶了一個標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Kit,JDK) 。 3)SDK(software development kit) SDK 是軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件 框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。 4)ADT(Abstract Data Type) 抽象數(shù)據(jù)類型(ADT)是一個實(shí)現(xiàn)包括儲存數(shù)據(jù)元素的存儲結(jié)構(gòu)以及實(shí) 現(xiàn)基本操作的算法。其中包括數(shù)據(jù)對象,數(shù)據(jù)關(guān)系和基本操作。 1.2.2

7、相關(guān)硬件簡介相關(guān)硬件簡介 在安卓手機(jī)上絕大多數(shù)的處理器都是 ARM 處理器,ARM 處理器的三大特點(diǎn) 是:耗電少功能強(qiáng)、16 位/32 位雙指令集和合作伙伴眾多。其具體體現(xiàn)是: 1)體積小、低功耗、低成本、高性能; 2)支持 Thumb(16 位)/ARM(32 位)雙指令集,能很好的兼容 8 位/16 位 器件; 3)大量使用寄存器,指令執(zhí)行速度更快; 4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成; 5)尋址方式靈活簡單,執(zhí)行效率高; 6)指令長度固定。 1.3 軟件分析軟件分析 本次課程設(shè)計(jì)用到的軟件是 Eclipse,此軟件是一個開放源代碼的軟件開發(fā)項(xiàng) 目,專注于為高度集成的工具開發(fā)提供一個全功能

8、的、具有商業(yè)品質(zhì)的工業(yè)平臺。 它主要由 Eclipse 項(xiàng)目、Eclipse 工具項(xiàng)目和 Eclipse 技術(shù)項(xiàng)目三個項(xiàng)目組成。具體 包括四個部分組成Eclipse Platform、JDT、CDT 和 PDE。JDT 支持 Java 開發(fā)、 CDT 支持 C 開發(fā)、PDE 用來支持插件開發(fā),Eclipse Platform 則是一個開放的可 擴(kuò)展 IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開 發(fā)工具的基礎(chǔ)。Eclipse Platform 允許工具建造者獨(dú)立開發(fā)與他人工具無縫集成的 工具從而無須分辨一個工具功能在哪里結(jié)束,而另一個工具功能在哪里開始。 1.3.1 嵌入

9、式操作系統(tǒng)簡介嵌入式操作系統(tǒng)簡介 從嵌入式系統(tǒng)的應(yīng)用來分類,可以分為面向低端設(shè)備的嵌入式操作系統(tǒng)和面 向高端設(shè)備的嵌入式操作系統(tǒng)。 (低端:微波爐,洗衣機(jī),冰箱;高端:信息化 家電,掌上電腦,機(jī)頂盒,路由器) 嵌入式操作系統(tǒng)(Embedded Operation System,EOS)是一種用途廣泛的系 統(tǒng)軟件,過去它主要應(yīng)用于工業(yè)控制和國防系統(tǒng)領(lǐng)域。EOS 負(fù)責(zé)嵌入系統(tǒng)的全部 軟、硬件資源的分配、任務(wù)調(diào)度,控制、協(xié)調(diào)并發(fā)活動。它必須體現(xiàn)其所在系統(tǒng) 的特征,能夠通過裝卸某些模塊來達(dá)到系統(tǒng)所要求的功能。EOS 從單一的弱功能 向高專業(yè)化的強(qiáng)功能方向發(fā)展。嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時高效性、硬件的相關(guān)

10、 依賴性、軟件固化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。EOS 是相對于 一般操作系統(tǒng)而言的,它除具有了一般操作系統(tǒng)最基本的功能,還有以下功能: 如任務(wù)調(diào)度、同步機(jī)制、中斷處理、文件處理等。 嵌入式操作系統(tǒng)特點(diǎn): 1)良好的移植性、開放性、可伸縮性的體系結(jié)構(gòu),提供各種設(shè)備驅(qū)動接口。 EOS 實(shí)時性一般較強(qiáng),可用于各種設(shè)備控制當(dāng)中。操作方便、簡單、提供友好的 圖形 GUI,圖形界面,追求易學(xué)易用。提供強(qiáng)大的網(wǎng)絡(luò)功能,支持 TCP/IP 等協(xié) 議,提供 TCP/UDP/IP/PPP 協(xié)議支持及統(tǒng)一的 MAC 訪問層接口,為各種移動計(jì) 算設(shè)備預(yù)留接口。 2)強(qiáng)穩(wěn)定性,弱交互性。嵌入式系統(tǒng)一旦開始

11、運(yùn)行就不需要用戶過多的干 預(yù),這就要負(fù)責(zé)系統(tǒng)管理的 EOS 具有較強(qiáng)的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口 一般不提供操作命令,它通過系統(tǒng)調(diào)用命令向用戶程序提供服務(wù)。 3)固化代碼。在嵌入系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式 系統(tǒng)計(jì)算機(jī)的 ROM 中。輔助存儲器在嵌入式系統(tǒng)中很少使用,因此,嵌入式操 作系統(tǒng)的文件管理功能應(yīng)該能夠很容易地拆卸,而用各種內(nèi)存文件系統(tǒng)。 1.3.2 開發(fā)技術(shù)簡介開發(fā)技術(shù)簡介 Android 以 Java 為編程語言,使接口到功能,都有層出不窮的變化,其中 Activity 等同于 J2ME 的 MIDlet。一個 Activity 類負(fù)責(zé)創(chuàng)建視窗,一個活動中的

12、 Activity 就是在 foreground 模式,背景運(yùn)行的程序叫做 Service。兩者之間通過由 ServiceConnection 和 AIDL 連結(jié),達(dá)到程序同時運(yùn)行的效果。如果運(yùn)行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止,甚至被系統(tǒng)清 除。 View 等同于 J2ME 的 Displayable,程序人員可以通過 View 類與“XML layout”檔將 UI 放置在視窗上,Android 4.4.2 的版本可以利用 View 打造出所謂 的 Widgets,其實(shí) Widget 只是 View 的一種,所以可以使用 xm

13、l 來設(shè)計(jì) layout,HTC 的 Android Hero 手機(jī)即含有大量的 widget。至于 ViewGroup 是各種 layout 的基礎(chǔ)抽象類,ViewGroup 之內(nèi)還可以有 ViewGroup。View 的構(gòu)造函數(shù)不 需要再 Activity 中調(diào)用,但是 Displayable 的是必須的,在 Activity 中,要通過 findViewById()來從 XML 中取得 View,Android 的 View 類的顯示很大程度上是 從 XML 中讀取的。View 與事件息息相關(guān),兩者之間通過 Listener 結(jié)合在一起, 每一個 View 都可以注冊一個 event l

14、istener,例如:當(dāng) View 要處理用戶觸碰的事 件時,就要向 Android 框架注冊 View.OnClickListener。 Android 應(yīng)用開發(fā)基礎(chǔ):Android 開發(fā)平臺、Eclipse+ADT 開發(fā)環(huán)境、AVD 及 傳感模擬器調(diào)試、Android 核心組件、Android 常用組件、Android 高級組件、文 件及網(wǎng)絡(luò)訪問、SQLite 數(shù)據(jù)庫編程、后臺服務(wù)編程。 Android 高級應(yīng)用開發(fā):音頻視頻攝像頭、互聯(lián)網(wǎng)應(yīng)用、GPS 和位置服務(wù)、 Google Map、2D3D 繪制、傳感器開發(fā)、游戲開發(fā)、電話及 SMS 服務(wù)、網(wǎng)絡(luò) BluetoothWi-Fi 等 A

15、ndroid 系統(tǒng)級開發(fā):移植、驅(qū)動、NDK(C 方向) 。 第 2 章 系統(tǒng)設(shè)計(jì) 2.1 操作系統(tǒng)移植操作系統(tǒng)移植 嵌入式操作系統(tǒng)與通用操作系統(tǒng)的最顯著的區(qū)別之一就是它的可移植性。一 款嵌入式操作系統(tǒng)通??梢赃\(yùn)行在不同體系結(jié)構(gòu)的處理器和開發(fā)板上。為了使嵌 入式操作系統(tǒng)可以在某款具體的目標(biāo)設(shè)備上運(yùn)行,嵌入式操作系統(tǒng)的編寫者須把 一部分與具體硬件設(shè)備相關(guān)的代碼作為抽象的接口保留出來,讓提供硬件的 OEM 廠商來完成。這樣才可以保證整個操作系統(tǒng)的可移植性。這些代碼通常是 板級支持包 (Board Support Package, BSP)的一部分。 在此次課程設(shè)計(jì)中是將在 Eclipse 中編寫好

16、的程序移植到了安卓 (Android4.4.2)手機(jī)上,安卓手機(jī)的處理器是 ARM。 2.2 系統(tǒng)模塊設(shè)計(jì)系統(tǒng)模塊設(shè)計(jì) 設(shè)計(jì)分為三個模塊:開燈模塊、屏幕背光模塊和 SOS 模塊。系統(tǒng)模塊設(shè)計(jì)圖 如圖 2.1 所示。 進(jìn)入App Button1Button2Button3 開 燈 模 塊 屏 幕 背 光 模 塊 SOS 模 塊 圖圖 2.1 系統(tǒng)模塊圖系統(tǒng)模塊圖 手電筒模塊是調(diào)用手機(jī)相機(jī)的閃光燈,通過它的長亮和關(guān)閉來實(shí)現(xiàn)手電筒的 亮滅。 屏幕背光模塊是調(diào)用屏幕亮度的函數(shù),通過改變它的參數(shù)值將屏幕亮度調(diào)到 最亮或調(diào)到最暗。 SOS 模塊是通過重復(fù)對 background 賦顏色的十六進(jìn)制碼,來實(shí)現(xiàn)

17、屏幕的一直 紅白閃爍。 2.3 關(guān)鍵流程關(guān)鍵流程 2.3.1 系統(tǒng)主流程圖系統(tǒng)主流程圖 進(jìn)入主界面后,有三個功能可以選擇:開燈、調(diào)節(jié)屏幕背光到最亮和打開 SOS。系統(tǒng)主流程圖如圖 2.2 所示。 開 始 是否進(jìn)入開燈模塊 是否進(jìn)入屏幕背光模塊 是否進(jìn)入SOS模塊 進(jìn)入閃光燈模塊 進(jìn)入屏幕背光模塊 進(jìn)入屏幕SOS模塊 結(jié)束 是 是 是 否 否 否 圖圖 2.2 系統(tǒng)主流程圖系統(tǒng)主流程圖 2.3.2 開燈流程圖開燈流程圖 進(jìn)入 APP 后,系統(tǒng)監(jiān)聽“開燈”按鈕,當(dāng)按鈕被按下,進(jìn)入開燈模塊。通過 手機(jī)相機(jī)閃光燈的長亮、關(guān)閉,實(shí)現(xiàn)手電筒的開啟、關(guān)閉。開燈流程圖如圖 2.3 所示。 進(jìn)入開燈模塊 判斷i

18、sopen是否為 true 調(diào)用相機(jī)camera.open() 調(diào)用閃光燈camera.startPreviwe() 設(shè)置isopent=false 關(guān)閉閃光燈camera.stopPreview() 關(guān)閉相機(jī)camera.open() 設(shè)置isopent=true 否 是 監(jiān)聽“開燈”按鈕 設(shè)置isopent=true 進(jìn)入APP主界面 是否按鈕按下 是 否 圖圖 2.3 開燈流程圖開燈流程圖 2.3.3 屏幕背光流程圖屏幕背光流程圖 進(jìn)入 APP 后,系統(tǒng)監(jiān)聽“屏幕背光”按鈕,當(dāng)按鈕被按下,進(jìn)入銀幕背光模 塊。通過調(diào)用調(diào)節(jié)屏幕亮度的函數(shù),將其參數(shù)值改為“1” (參數(shù)值從 0 到 1 的變

19、化,代表了屏幕的由暗到亮的過程) 。屏幕背光流程圖如圖 2.4 所示。 進(jìn)入開燈模塊 判斷isopen是否為 true 調(diào)用相機(jī)camera.open() 調(diào)用閃光燈camera.startPreviwe() 設(shè)置isopen=false 關(guān)閉閃光燈camera.stopPreview() 關(guān)閉相機(jī)camera.open() 設(shè)置isopen=true 否 是 監(jiān)聽“開燈”按鈕 設(shè)置isopen=true 進(jìn)入APP主界面 是否按鈕按下 是 否 圖圖 2.4 屏幕背光流程圖屏幕背光流程圖 2.3.4 SOS 流程圖流程圖 進(jìn)入 APP 后,系統(tǒng)監(jiān)聽“SOS”按鈕,當(dāng)按鈕被按下,進(jìn)入 SOS 模

20、塊。調(diào) 用定時器內(nèi)的函數(shù) run(),更改背景顏色實(shí)現(xiàn)屏幕的紅白閃爍。當(dāng)按鈕再次被按下 時,即退出 SOS 模塊。SOS 流程圖如圖 2.5 所示。 進(jìn)入SOS模塊 判斷isopent1是否為true 調(diào)用Timer,設(shè)置 為200毫秒的定時 調(diào)用run(); 關(guān)閉Timer,Timer 內(nèi)的run(); isopent1=true; 退出SOS模塊 否 是 監(jiān)聽“SOS”按鈕 設(shè)置isopent1=true m_sos_flag=true 進(jìn)入APP主界面 是否按鈕按下 是 否 設(shè)置背景為紅色, m_sos_flag=false; 經(jīng)過200毫秒 設(shè)置背景為白色 m_sos_flag=tru

21、e 經(jīng)過200毫秒 否 是 判斷m_sos_flag是否為true 否 圖圖 2.5 SOS 流程圖流程圖 第 3 章 系統(tǒng)調(diào)試及運(yùn)行 3.1 調(diào)試分析調(diào)試分析 1)在調(diào)試開燈模塊時,一點(diǎn)擊開燈按鈕,APP 就自動退出。 解決方法:是在 AndroidManifest.xml 文件中申明對手機(jī)相機(jī)和閃光燈的調(diào)用 寫下以下兩句話: 2)在調(diào)試屏幕背光模塊時,屏幕背光亮度亮度達(dá)不到最亮。 解決方法:是在 MainActivity 中的屏幕亮度函數(shù)調(diào)用中加入以下三句話 (wl.screenBrightness 的值從 0 到 1,代表了由暗到亮): WindowManager.LayoutParam

22、s wl = getWindow().getAttributes(); wl.screenBrightness =1; getWindow().setAttributes(wl); 3)在調(diào)試 SOS 模塊時,在啟動 SOS 按鈕后,會直接退出 APP。 解決方法:當(dāng)點(diǎn)擊 SOS 按鈕后有超過 5s 的延遲,我們的界面將處于一直假 死狀態(tài),系統(tǒng)將處于異常,自動退出。因此在 SOS 模塊中加入 Handler()函數(shù)。 Handler()函數(shù)是在用戶界面開發(fā)時,控制主用戶界面程序的界面變化。它的作用 是與其它線程協(xié)同工作,接收其他線程的消息并通過接收到的消息更新主用戶界 面線程的內(nèi)容。用戶界面的

23、更新只能在本線程中完成,其他線程無法直接對主線 程進(jìn)行操作。在主線程中綁定 Handler,并在事件觸發(fā)上面創(chuàng)建新的線程用于完 成某些耗時的操作,當(dāng)子線程中的工作完成之后,會對 Handler 發(fā)送一個完成的 信號,而 Handler 接收到信號后,就進(jìn)行主 UI 界面的更新操作。 4)在調(diào)試 SOS 模塊時,在準(zhǔn)備退出 SOS,點(diǎn)擊 SOS 按鈕后,系統(tǒng)會時而會在紅 色背景時停止,時而在白色背景時停止。 解決方法:在判斷第二次按下 SOS 按鈕中,設(shè)置背景顏色為白色。 3.2 結(jié)果分析結(jié)果分析 1)軟件主界面如圖 3.1 所示。. 圖圖 3.1 軟件主界面圖軟件主界面圖 2)屏幕背光界面如圖

24、 3.2 所示。 圖圖 3.2 屏幕背光屏幕背光 3)SOS 紅色界面如圖 3.3 所示。 圖圖 3.3 SOS 紅色界面紅色界面 4)開燈界面如圖 3.4 所示。 圖圖 3.4 開燈界面開燈界面 參考文獻(xiàn) 1 高凱等編著. Android 程序設(shè)計(jì)基礎(chǔ)教程M. 北京:國防工業(yè)出版社,2015 2 韓超. Android 系統(tǒng)原理及開發(fā)要點(diǎn)詳解M. 北京:電子工業(yè)出版社,2010 3 李魯群等編著. Android 應(yīng)用程序設(shè)計(jì)M. 北京:清華大學(xué)出版社,2015 4 陳璟,陳平華,李文亮. Android 內(nèi)核分析J . 廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院實(shí)踐 與經(jīng)驗(yàn),2009:112-115. 5 王

25、翠萍編著. Android 經(jīng)典項(xiàng)目開發(fā)實(shí)戰(zhàn)M. 北京:清華大學(xué)出版社,2015 6 吳亞峰等編著. Android 應(yīng)用案例開發(fā)大全M. 北京:人民郵電出版社,2015 7 李魯群等編著. Android 應(yīng)用程序設(shè)計(jì)M. 北京:清華大學(xué)出版社,2015 8 鄧文淵等. Android 開發(fā)基礎(chǔ)教程M. 北京:人民郵電出版社,2014 9 郭志安. Android 應(yīng)用開發(fā)詳解M. 北京:電子工業(yè)出版社,2010 10 楊豐盛. Android 應(yīng)用開發(fā)揭秘M. 北京:科學(xué)出版社,2010 11 SatyaKomatineni,DaveMaclean.Pro Android 4M.USA:A

26、press,2012 附 錄 MainActivity.java: package com.example; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.hardware.Camera; import android.hardware.Camera.Parameters; import a

27、ndroid.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.Button; public class M

28、ainActivity extends Activity Timer timer; private Button loginButton; private Button loginButton1; private Button loginButton2; private boolean isopent = false; private boolean isopen = false; private Camera camera; Handler handler=null; private boolean isopent1 = false; private boolean m_sos_flag=f

29、alse; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loginButton=(Button) findViewById(R.id.button1); loginButton1=(Button) findViewById(R.id.button2); loginButton2=(Button) findViewById(R.id.button3); / lp.scre

30、enBrightness = 0.1f; loginButton.setOnClickListener(new OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub if (!isopent) camera = Camera.open(); Parameters params = camera.getParameters(); params.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(pa

31、rams); camera.startPreview(); / 開始亮燈 isopent = true; else camera.stopPreview(); / 關(guān)掉亮燈 camera.release(); / 關(guān)掉照相機(jī) isopent = false; );/開燈的監(jiān)聽 loginButton1.setOnClickListener(new OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub if (!isopen) WindowManager.LayoutPar

32、ams wl =getWindow().getAttributes(); wl.screenBrightness =1; getWindow().setAttributes(wl); isopen = true; else WindowManager.LayoutParams wl = getWindow().getAttributes(); wl.screenBrightness =3/4; getWindow().setAttributes(wl); isopen = false; );/屏幕背光的監(jiān)聽 loginButton2.setOnClickListener(new OnClick

33、Listener() Override public void onClick(View v) / TODO Auto-generated method stub if(!isopent1) timer = new Timer(); timer.schedule(new TimerTask() Override public void run() if(m_sos_flag) Message message=new Message(); message.what=1; handler.sendMessage(message); m_sos_flag=false; isopent1 = true

34、; else Message message=new Message(); message.what=0; handler.sendMessage(message); m_sos_flag=true; isopent1 = true; /isopent1 = true; , 50, 200); else Message message=new Message(); message.what=3; handler.sendMessage(message); );/SOS handler=new Handler() Override public void handleMessage(Message msg) / TODO Auto-generated method stub switch(msg.what) case 1: Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.bkcolor); Ma

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論