2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  學士學位論文</b></p><p>  題目:Android二維碼的掃描識別</p><p><b>  設計人: 蘭紅林</b></p><p><b>  指導教師:李富萍</b></p><p>  所屬系部:計算機科學與技術學院<

2、/p><p>  專業(yè)班級:計算機科學與技術082002</p><p>  2012年 6月 1日</p><p>  太原科技大學畢業(yè)設計(論文)任務書</p><p>  學院: 計算機科學與技術學院 </p><p>  說明:一式兩份,一份裝訂入學生畢業(yè)設計(論文)內,一份交學院(直屬系)。</p>

3、;<p><b>  中文摘要</b></p><p>  一維條碼在生產和生活的各個方面得到了廣泛的應用,極大的提高了生產率,但是一維條碼本身的缺點:信息量小、依賴數(shù)據(jù)庫等也日益的現(xiàn)露出來。二維條碼本身具有高容量、高密度、糾錯能力強、安全強度高等特點,使得二維條碼作為信息的載體在信息自動化領域發(fā)揮著越來越重要的作用。QRCode作為快速響應二維碼,以其獨特的優(yōu)勢,在漢語國家發(fā)

4、展迅速。目前,國內QR碼的識別大多是基于PC的,Android平臺上當前流行的二維碼識別軟件普遍存在著掃描速度慢,需要精確對焦等缺點。</p><p>  該軟件基于Android開發(fā)平臺在windows環(huán)境下采用面向對象方法進行開發(fā)。首先,進行需求分析,繪制了用例圖和活動圖。然后,在概要設計中建立了系統(tǒng)功能模型,并在詳細設計階段對圖片處理過程進行設計。最后,對軟件進行編碼和測試。該軟件實現(xiàn)了二維碼的掃描與識別,

5、具有很強的實用性。</p><p>  關鍵字:二維碼;QRCode;解碼;Android</p><p>  The scanning and recongnition of two-dimensional barcode</p><p>  Author: Lan Honglin Tutor: Li Fuping</p><p>

6、;<b>  Abstract</b></p><p>  One-dimension barcode is widely used recent years in all aspect of life, which greatly improved the productivity. However, the faults of 1-D barcode have become increa

7、singly apparent, the information storage of it is so little, and also it must be rely on database. Two-dimension barcode has the characteristics of high capacity, high density, high security and good error correction ab

8、ility, which make it play more and more important role in information and automation field. QRCode(Quick Response</p><p>  The development of the software is based on Android platform by object-oriented prog

9、ramming method under the Windows OS. Firstly, this paper describes the detailed demand analysis to draw use case diagram and activity diagram. Then constructing the system function model in general design, meanwhile, des

10、igning the details of diagram process. Finally, the software implements the scanning and recognition of two-dimensional barcode by decoding and testing, after that, this software has robust appli</p><p>  K

11、ey words: Two-dimensional barcode;QRCode;decoding;Android目錄</p><p>  第一章 系統(tǒng)概述1</p><p>  1.1 系統(tǒng)開發(fā)背景和意義1</p><p>  1.1.1 系統(tǒng)開發(fā)背景1</p><p>  1.1.2 系統(tǒng)開發(fā)的意義1</p><

12、;p>  1.1.3 二維碼介紹2</p><p>  1.2 開發(fā)工具介紹3</p><p>  1.2.1 Eclipse簡介3</p><p>  1.2.2 JDK簡介3</p><p>  1.2.3 Android SDK簡介4</p><p>  1.2.4 ADT簡介4</p&g

13、t;<p>  1.3 項目開發(fā)環(huán)境4</p><p>  1.3.1 硬件環(huán)境4</p><p>  1.3.2 軟件環(huán)境5</p><p>  1.4 環(huán)境搭建5</p><p>  1.4.1 下載和安裝Android SDK5</p><p>  1.4.2 安裝Eclipse和ADT插

14、件5</p><p>  第二章 可行性研究和需求分析7</p><p>  2.1 可行性研究7</p><p>  2.1.1 技術可行性7</p><p>  2.1.2 經濟可行性7</p><p>  2.1.3 操作可行性7</p><p>  2.1.4 社會可行性8

15、</p><p>  2.2 需求分析8</p><p>  2.2.1 系統(tǒng)功能需求8</p><p>  2.2.2 系統(tǒng)功能結構圖9</p><p>  2.2.3 系統(tǒng)用例圖10</p><p>  2.2.4 系統(tǒng)活動圖11</p><p>  2.3 技術需求11<

16、/p><p>  2.4 性能需求12</p><p>  第三章 系統(tǒng)總體設計14</p><p>  3.1 系統(tǒng)總體設計目標14</p><p>  3.2 系統(tǒng)概要設計14</p><p>  3.2.1 系統(tǒng)模塊結構設計14</p><p>  3.2.2 計算機物理系統(tǒng)配置方案

17、設計15</p><p>  3.4 系統(tǒng)功能模塊15</p><p>  3.3.1 系統(tǒng)總體功能模塊16</p><p>  3.3.2 拍照解碼功能模塊16</p><p>  第四章 系統(tǒng)詳細設計17</p><p>  4.1 系統(tǒng)流程圖17</p><p>  4.2 圖

18、片處理過程圖17</p><p>  4.3 界面設計18</p><p>  第五章 系統(tǒng)編碼實現(xiàn)20</p><p>  5.1 基本編碼設置20</p><p>  5.2 相機預覽實現(xiàn)21</p><p>  5.3 關閉相機實現(xiàn)22</p><p>  5.4 拍照解碼實現(xiàn)

19、23</p><p>  第六章 系統(tǒng)測試26</p><p>  6.1 測試目的26</p><p>  6.2 測試方法26</p><p>  6.3 功能測試26</p><p>  6.3.1 軟件安裝測試26</p><p>  6.3.2 相機預覽功能測試27<

20、;/p><p>  6.3.3 關閉相機測試27</p><p>  6.3.4 拍照解碼功能測試27</p><p><b>  結束語31</b></p><p><b>  致謝32</b></p><p><b>  參考文獻33</b>&

21、lt;/p><p>  附錄I 英文原文34</p><p><b>  第一章 系統(tǒng)概述</b></p><p>  1.1 系統(tǒng)開發(fā)背景和意義</p><p>  1.1.1 系統(tǒng)開發(fā)背景</p><p>  條形碼技術是集條碼理論、光電技術、計算機技術、通信技術等技術于一體的綜合性技術,起源于

22、20世紀40年代。它具有輸入速度快、可靠性高、采集信息量大、成本低等特點,近年來發(fā)展十分迅速,在國際上廣泛應用于商品流通、物流倉儲、信息服務等各個領域,極大地提高了生產效率。</p><p>  近幾年,另一個廣泛得到普及的領域就是手機,自90年代初以來,無線移動技術和市場應用得到飛速發(fā)展和成功。從尋呼機到目前3G手機的面市,中國人已經習慣了手中的移動手機不停地變化。移動通信發(fā)展的焦點已經由用戶數(shù)量的增長,轉為業(yè)

23、務量和新業(yè)務的增長;由技術驅動轉為業(yè)務驅動。在激烈的市場競爭中,越來越成熟的手機用戶不僅注重手機硬件的外觀,更注重手機所賦予的強大功能。</p><p>  以上兩個普及領域催生了一個新的需求:即將二維碼和手機結合起來,利用手機作為讀取設備,實現(xiàn)條碼識別。</p><p>  目前國際ISO標準已經有多種條形碼,其中應用最廣泛的有PDF417、DateMatrix、QR碼等。QR碼是矩陣式

24、二維條形碼的代表,它除了具有一維條碼和其它二維條碼所具有的信息容量大、可靠性高等特點外,還具有全方位識讀、能有效表示中、英、簡、繁、日、韓等文字、超高速識讀以及超強的糾錯能力和抗干擾能力等特性。適合于我國的國情以及漢字編碼的特點。</p><p>  綜上,QR碼在手機中的應用有著良好的前景和潛力,它將有效地推動移動增值業(yè)務的快速增長,有利于為我國信息產業(yè)的發(fā)展和經濟建設帶來社會及經濟效益。</p>

25、<p>  1.1.2 系統(tǒng)開發(fā)的意義</p><p>  二維碼作為一種全新的條碼技術,已被廣泛應用于國防、醫(yī)療保健、商業(yè)、金融、后勤管理等領域。由于QRCode二維碼信息容量大,保密性能好,并且成本低,適合我國人口眾多,計算機建設還不是很完善的國情,因此在我國有著十分廣闊的應用前景。可以預見,二維條碼技術在我國的推廣上應用必將為我國信息產業(yè)的發(fā)展和現(xiàn)代化的經濟建設帶來可觀的社會效益和經濟效益。 &

26、lt;/p><p>  1.1.3 二維碼介紹</p><p>  二維碼(2-dimensional barcode),是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號信息的。</p><p>  在許多種類的二維條碼中,常用的碼制有:DataMatrix, MaxiCode, Aztec, QRCode, Vericode,PDF

27、417,Ultracode,Code49,Code16K等。</p><p>  1.堆疊式/行排式二維條碼,如,Code16K、Code49、PDF417(如下圖)等。</p><p>  2.矩陣式二維碼,最流行莫過于QRCODE。</p><p>  QR(Quick-Response) code是被廣泛使用的一種二維碼,解碼速度快。它可以存儲多用類型?,F(xiàn)在使

28、用的QRCODE二位條形碼的規(guī)范一直遵循OMIA(Open Mobile Internet Alliance)的規(guī)范,QRCode基本結構如圖1.1所示。</p><p>  圖1.1 QRCode基本結構</p><p>  其中:位置探測圖形、位置探測圖形分隔符和定位圖形用于對二維碼的定位;對每個QR碼來說,位置都是固定存在的,只是大小規(guī)格會有所差異;規(guī)格確定,校正圖形的數(shù)量和位置也就

29、確定了;格式信息表示改二維碼的糾錯級別,分為L、M、Q、H;版本信息即二維碼的規(guī)格,QR碼符號共有40種規(guī)格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號比前一版本 每邊增加4個模塊。數(shù)據(jù)和糾錯碼字實際保存的二維碼信息和糾錯碼字(用于修正二維碼損壞帶來的錯誤)。</p><p>  簡要的解碼過程:二維碼圖像->圖像解析出01編碼->按照規(guī)則解釋為相應的內容

30、。</p><p>  1.2 開發(fā)工具介紹</p><p>  1.2.1 Eclipse簡介</p><p>  Eclipse是一個綜合開發(fā)環(huán)境(Integrated Development Environment)IDE,它是一個功能完整且成熟的軟件,由IBM公司于2001年首次推出。大家可以在其官方網站http://www.eclipse.org免費下載該

31、軟件的打包文件,釋放到文件夾即可使用。</p><p>  Eclipse是一個開放源代碼、基于Java的可擴展開發(fā)平臺。開放源代碼的意思是讓使用者能夠取得軟件的原始碼,部分地有權去修改和傳播這個軟件。有人非常形象地將Eclipse比喻成軟件開發(fā)者的“打鐵鋪”,它一開始備有火爐、鐵砧與鐵錘。就像鐵匠會用現(xiàn)有的工具打造新的工具一樣,程序員也能用Eclipse打造新工具來開發(fā)軟件———這些新工具可擴充Eclipse的

32、功能。</p><p>  就Eclipse本身而言,它只是一個框架和一組被稱為平臺核心的服務程序,用于通過插件組件構建開發(fā)環(huán)境。核心的任務是讓每樣東西動起來,并加載所需的外掛程序。當啟動Eclipse時,先執(zhí)行的就是這個組件,再由這個組件加載其他外掛程序。Eclipse附帶了一個包括Java開發(fā)工具(Java Development Tools,JDT)的標準插件集,因此如果要使用Eclipse來開發(fā)Java程

33、序,必須安裝JDK作為它的插件才能使它正常運作。</p><p>  1.2.2 JDK簡介</p><p>  JDK(Java Development Kit,JDK)是整個Java的核心,包括了Java運行環(huán)境(Java Runt ime Envirnment),一堆Java工具和Java基礎的類庫(rt.jar)。不論什么Java應用服務器實質都是內置了某個版本的JDK。最主流的J

34、DK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM公司開發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開發(fā)的JDK等等。其中IBM的JDK包含的JVM(Java VirtualMachine,JVM)運行效率要比Sun JDK包含的JVM高出許多。JDK的最重要命令行工具:</p><p>  java: 啟動JVM執(zhí)行class;</p>&l

35、t;p>  javac: Java編譯器;</p><p>  jar: Java打包工具;</p><p>  javadoc: Java文檔生成器。</p><p>  1.2.3 Android SDK簡介</p><p>  Android SDK(software development kit,SDK) Tool軟件開發(fā)工具

36、包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應用軟件的開發(fā)工具的集合,是Android專屬的軟件開發(fā)工具包。</p><p>  1.2.4 ADT簡介</p><p>  目前Android開發(fā)所用的開發(fā)工具是Eclipse,在Eclipse編譯IDE環(huán)境中,安裝ADT,為Android開發(fā)提供開發(fā)工具的升級或者變更,簡單理解為在Eclipse下開發(fā)工具的升

37、級下載工具。</p><p>  1.3 項目開發(fā)環(huán)境</p><p>  1.3.1 硬件環(huán)境</p><p>  處理器:Intel Celeron 2.4GHz以上處理器及以上</p><p><b>  內存:1GB及以上</b></p><p>  硬盤空間:80GB及以上</p&

38、gt;<p>  華為C8650手機一部</p><p>  1.3.2 軟件環(huán)境</p><p>  操作系統(tǒng):Windows XP (32-bit)或windows vista(32位或64位)或Mac OS X10.4.8或更新的版本(硬件必須是X86的版本)或Linux(在Linux Ubantu Hardy Heron上)。</p><p>

39、  開發(fā)工具:jdk-6u26-windows-i586、Eclipse Indigo Service Release 2、android-sdk_r18-windows、ADT18。</p><p><b>  1.4 環(huán)境搭建</b></p><p>  在開始搭建Android開發(fā)環(huán)境之前,讀者必須具有一定的Java編程基礎,像JDK環(huán)境安裝,環(huán)境設置之類的入門

40、知識,這里不做詳細的介紹,下面將從Android SDK的安裝開始講起,詳細說明Android開發(fā)、測試環(huán)境的安裝和使用。</p><p>  1.4.1 下載和安裝Android SDK</p><p>  登陸Android開發(fā)者網站http://developer.android.com/sdk/index.html即可下載Android SDK。下載和安裝步驟如下:</p&g

41、t;<p>  在Android1.5之前,Google提供了Android SDK的完整開發(fā)包;從Android 1.6之后,Google不再提供完整開發(fā)包,開發(fā)者必須采用在線的方式安裝Android SDK。此處以Windows開發(fā)平臺為例,登陸界面之后點擊“android-sdk_r18-windows.zip”連接,通過連接即可下載Android SDK的在線安裝包。</p><p>  下

42、載完成后得到android-sdk_r18-windows.zip文件。將該文件解壓到任意路徑,解壓后文件夾,啟動文件夾中SDK Manager.exe,單擊出現(xiàn)窗口左邊“Installed packages”項,可以查看已有安裝工具,單擊“Available packages”然后選安裝工具,其中Android平臺工具、Android文檔、Android2.3 SDK必須選,然后單擊“Install Selected”,窗口出現(xiàn)“Ac

43、cept All”單選按鈕,單擊“Install”系統(tǒng)便開始安裝Android SDK,安裝時間可能要花費一兩個小時。</p><p>  1.4.2 安裝Eclipse和ADT插件</p><p>  Eclipse是一個市場占有率很高的Java IDE工具,Java EE應用的開發(fā)者對Eclipse應該十分熟悉,Android推薦使用Eclipse來開發(fā)Android應用,并為它提供專

44、門的插件ADT(Android Development Tools,ADT)。</p><p>  安裝Eclipse工具按如下步驟進行:</p><p>  登陸http://www.eclipse.org站點,下載Eclipse IDE for Java EE Developer 的版本。下載完成后解壓縮后雙擊eclipse.exe文件,即可看到Eclipse啟動界面,表明Eclips

45、e 已經安裝成功,為了在Eclipse中進行Android 開發(fā),還需要安裝ADT插件。安裝ADT請按如下步驟進行登陸下載:</p><p>  登陸網站:http://developer.android.com/sdk/eclipse-adt.html#installing下載ADT插件最新版本,下載后得到ADT-18.0.0.zip文件。</p><p>  啟動Eclipse,單擊E

46、clipse的主菜單上Help/Install New Software菜單項,單擊窗口“Add..”按鈕,選擇ADT插件ADT-18.0.0.zip文件。選中“OK”按鈕,在點擊“next”,最后點擊“Finish”,Eclipse開始安裝ADT插件。稍稍等幾分鐘,ADT插件安裝完成再配置相應環(huán)境變量即可進行Android軟件開發(fā)了。</p><p>  第二章 可行性研究和需求分析</p>&l

47、t;p><b>  2.1 可行性研究</b></p><p>  一個項目的開發(fā)需要仔細分析,看它在目前的情況下是否可行,如果一個項目開發(fā)具有很好的背景和意義,但是在經濟上或者是技術上是不可行的,那么它也只能稱之為不能實現(xiàn)的項目。通過參照現(xiàn)有相似的其他網站的使用效果和分析實例進行可行性2]研究,主要從以下四個方面進行討論。</p><p>  2.1.1 技術

48、可行性</p><p>  本次開發(fā)的android二維碼掃描識別軟件,用戶通過手機對QRcode二維碼進行拍照解碼識別并且顯示二維碼隱藏的信息,如果二維碼為“http://”,則打開手機瀏覽器直接上網;當發(fā)現(xiàn)為“wtai://”或“TEL:”規(guī)范,則調用手機撥打電話;而若未發(fā)現(xiàn)任何標準規(guī)范,則顯示條形碼的文字。如果拍照的圖片不是QRcode二維碼條形碼或者程序無法識別,則不作任何處理。</p>&

49、lt;p>  首先我們需要借助一個第三方的庫函數(shù)QRCODE.jar.然后我們可以通過手機照相機獲取二維碼圖片,然后將其送往QRCode的函數(shù)進行解碼,對比我們的OMIA規(guī)范,即可實現(xiàn),因此在技術上可行。</p><p>  2.1.2 經濟可行性</p><p>  二維碼在國內應用引起眾多用戶群體的興趣,國內許多廠商已經開始致力于二維碼的研究,設備開發(fā)與應用系統(tǒng)的應用推廣及新市場

50、的培育,投資方很看好這個項目,在資金方面沒有問題,所以在經濟上可行。</p><p>  2.1.3 操作可行性</p><p>  通過對android二維碼掃描識別的研究,本系統(tǒng)能滿足投資方的基本要求,同時由于本系統(tǒng)只需要有一臺android手機即可對QRcode二維碼進行掃描識別、在操作方面可行。</p><p>  2.1.4 社會可行性</p>

51、<p>  本軟件可以讓用戶通過手機對一些產品上的二維碼進行掃描識別,從而查看該產品的真?zhèn)?。對社會幫助很大?lt;/p><p>  根據(jù)以上幾個方面的研究分析,Android二維碼的掃描識別在技術上可行、經濟方面可行、操作方面可行、法律方面也是可行的,可得出結論:應該立即進行本項目的開發(fā)。</p><p><b>  2.2 需求分析</b></p&

52、gt;<p>  需求分析是軟件定義的最后一個階段,它的基本任務是回答“系統(tǒng)必須做什么”這個問題。需求分析的任務不是確定系統(tǒng)怎樣完成他的工作,而僅僅是確定系統(tǒng)完成哪些工作,也就是對目標系統(tǒng)提出完整、準確、清晰、具體的要求。</p><p>  可行性研究階段產生的文檔,是需求分析的出發(fā)點。從需求分析中已經劃分出系統(tǒng)必須完成的許多基本功能,系統(tǒng)分析員將仔細研究這些功能并進一步將它們具體化。需求分析的結

53、果是系統(tǒng)開發(fā)的基礎,關系到工程的成敗和軟件產品的質量。因此,必須用行之有效的方法對軟件需求進行嚴格的審查驗證。</p><p>  本系統(tǒng)的實現(xiàn)要考慮到很多方面的因素,因此要求的方法和技術要相應的有些多。具體來說,在開發(fā)過程中,要熟悉QRcode二維碼解碼和圖像處理的方法,能熟練運用JAVA語言,還要懂得軟件工程技術和系統(tǒng)測試技術。由于此系統(tǒng)的開發(fā)是在XP環(huán)境下借助JDK、Eclipse、ADT和SDK完成的,所

54、以還應熟練使用XP和這些開發(fā)工具。</p><p>  2.2.1 系統(tǒng)功能需求</p><p><b>  1、相機預覽需求</b></p><p>  此二維碼識別系統(tǒng)必須能夠調用手機上的照相機才能獲取二維碼的圖像,因此需要一個相機預覽功能,之后才能獲取我們的二維碼圖片。</p><p>  2、關閉相機預覽需求&l

55、t;/p><p>  此系統(tǒng)既然要打開手機照相機,當然也能夠關閉相機預覽功能。</p><p>  3、圖像處理和拍照解碼需求</p><p>  既然此系統(tǒng)是要對二維碼識別,我們通過相機預覽后即可進行拍照截取圖片,然后對圖片進行處理,同時需要對二維碼解碼,因此需要有圖像處理和解碼的功能。</p><p><b>  4、調用瀏覽器功能

56、</b></p><p>  當我們二維碼隱藏的是一個網站信息時,我們需要訪問該網站,那么我們這時候需要調用我們手機瀏覽器功能。</p><p>  5、調用手機撥打電話功能</p><p>  當我們二維碼隱藏的是一個電話號碼時,這個時候我們需要調用我們手機撥打電話功能。</p><p><b>  6、其他功能<

57、;/b></p><p>  顯示文本功能:當二維碼隱藏的只是一些文本信息的時候能夠文本信息顯示出來。</p><p>  2.2.2 系統(tǒng)功能結構圖</p><p>  系統(tǒng)結構圖是對軟件系統(tǒng)結構的總體設計的圖形顯示,在需求分析階段,已經從系統(tǒng)開發(fā)的角度出發(fā),把系統(tǒng)按功能逐次分割成層次結構,使每一部分完成簡單的功能且各個部分之間又保持一定的聯(lián)系,這就是功能設

58、計。在設計階段,基于這個功能的層次結構把各個部分組合起來成為系統(tǒng)。如圖2.1所示。</p><p>  圖2.1 系統(tǒng)功能結構圖</p><p>  2.2.3 系統(tǒng)用例圖</p><p><b>  1、系統(tǒng)用戶用例圖</b></p><p>  用例圖就是由主角、用例以及它們之間的關系構成的圖。該圖說明了用例模型中的

59、關系。通過上面對系統(tǒng)的分析即可得到系統(tǒng)的用例圖,如圖2.2所示。</p><p>  圖2.2 系統(tǒng)用例圖</p><p>  2、相機預覽用例:調用手機照相機初始化相機模式。</p><p>  3、關閉相機用例:關閉手機照相機。</p><p>  4、拍照解碼用例:通過手機照相機把二維碼圖片拍下來然后再送入系統(tǒng)解碼。</p>

60、<p> ?。?)調用瀏覽器用例:如果二維碼信息隱藏的是以“http://”開頭的網址,那么手機便調用默認瀏覽器瀏覽該網站。</p><p> ?。?)調用撥打電話功能用例:如果二維碼信息隱藏的是以“TEL:”或者是“wtai://”開頭的電話號碼,那么手機直接調用撥打電話功能。</p><p> ?。?)顯示文本信息用例:如果二維碼信息只是包含一些文本信息,那么直接顯示。&

61、lt;/p><p>  2.2.4 系統(tǒng)活動圖</p><p>  活動圖(activity diagram,動態(tài)圖)是闡明了業(yè)務用例實現(xiàn)的工作流程。業(yè)務用例工作流程說明了業(yè)務為向所服務的業(yè)務主角提供其所需的價值而必須完成的工作。業(yè)務用例由一系列活動組成,它們共同為業(yè)務主角生成某些工件。工作流程通常包括一個基本工作流程和一個或多個備選工作流程。工作流程的結構使用活動圖來進行說明。系統(tǒng)的活動圖如

62、圖2.3所示。</p><p>  圖2.3 系統(tǒng)活動圖</p><p><b>  2.3 技術需求</b></p><p>  Android二維碼掃描系統(tǒng)是一個綜合性比較強的題目,它需要在學校學習多方面知識,具體的幾個主要技術要求如下:</p><p>  1、android技術</p><p&

63、gt;  Android開發(fā)之前呢,需要配置Android開發(fā)環(huán)境。首先,Android開發(fā)所需要的開發(fā)包和工具,以及獲得它們的方式;其次,如何正確安裝和配置這些開發(fā)包;最后,為了測試安裝的開發(fā)環(huán)境,創(chuàng)建了第一個Android項目--Hello Android,并在模擬器上運行和調試該程序,并且將該應用程序安裝到Android手機上。</p><p><b>  2、照相機實現(xiàn)技術</b>&

64、lt;/p><p>  在了解了android開發(fā)的過程之后需要學習android怎樣進行照相。Android應用提供了Camera來控制拍照,使用Camera進行拍照需要按照如下步驟進行即可.</p><p>  調用Camera的open()方法打開照相機。</p><p>  調用Camera和getParameters()方法獲取拍照參數(shù)。該方法返回一個Came

65、ra. Parameters對象。</p><p>  調用Camera. Parameters對象方法設置相機參數(shù)。</p><p>  調用Camera的setParameters(),并將Camera. Parameters對象作為參數(shù)傳入,這樣即可對相機的拍照參數(shù)進行控制。</p><p>  調用Camera的startPreview()方法開始預覽取景,

66、在預覽取景之前需要調用Camera的setPreviewDisplay(SurfaceHolder holder)方法設置使用哪一個SurfaceView來顯示取景圖片。</p><p>  調用Camera的takePicture()方法進行拍照。</p><p>  3、二維碼圖片處理技術</p><p>  首先二維碼圖片是圖片的一種,當拍攝下來時需要將該圖片

67、送往解碼函數(shù)解碼,因此需要獲取預覽中圖片,在這里用的是bitmap這個類。</p><p><b>  4、二維碼解碼技術</b></p><p>  將預覽畫面中的二維碼圖片送到我們的解碼函數(shù)對二維碼進行解碼,因此需要應用android另外的一個JAR包。這個系統(tǒng)主要是對二維碼的一種QRcode進行解碼,因此這里需要引用sourceforge.jp里的qrcode項

68、目。</p><p><b>  2.4 性能需求</b></p><p>  Android二維碼的掃描識別系統(tǒng)性能方面的要求主要體現(xiàn)在以下幾個方面: </p><p><b>  1、時間需求</b></p><p>  本系統(tǒng)需要對二維碼進行準確迅速的識別,所以對系統(tǒng)的時間要求更為嚴格。<

69、;/p><p><b>  2、系統(tǒng)界面需求</b></p><p>  軟件界面直觀、簡潔,人機交互性強。</p><p>  第三章 系統(tǒng)總體設計</p><p>  3.1 系統(tǒng)總體設計目標</p><p>  經過可行性研究和需求分析階段的工作,已經清楚系統(tǒng)必須完成的工作,下面的工作就應該是決

70、定“如何做”的問題。概要設計的基本目的就是“概括地說系統(tǒng)應該如何實現(xiàn)?”通過該階段的工作將劃分出系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、文檔等,另一方面的主要工作是設計軟件的結構,即確定系統(tǒng)都由哪些模塊組成及模塊之間的相互關系。</p><p>  3.2 系統(tǒng)概要設計</p><p>  概要設計的主要任務是設計軟件結構和數(shù)據(jù)結構。設計軟件結構的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分

71、、建立模塊的層次結構及調用關系、確定模塊間的接口及人機界面等。數(shù)據(jù)結構設計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結構特性、以及數(shù)據(jù)庫的設計。顯然,概要設計建立的是目標系統(tǒng)的邏輯模型,與計算機無關??傮w設計包括系統(tǒng)模塊結構設計和計算機物理系統(tǒng)的配置方案設計。</p><p>  Android二維碼掃描識別系統(tǒng)需要調用我們android手機的照相機,通過onPictureTaken函數(shù)二維碼圖片處理成位圖,而且將位圖在im

72、ageview中顯示出來,然后再對位圖進行譯碼,按照QRCODE二維碼生成的方式解碼成字符型,QRCODE遵循OMIA規(guī)范,如果二維碼隱藏信息是一個網址那么調用瀏覽器訪問該網站,如果二維碼隱藏的信息是一個電話號碼,那么調用手機撥打電話功能,如果該二維碼隱藏的信息是普通的文本信息,那么顯示出文本信息即可,若不是QRCODE二維碼不做任何操作。</p><p>  3.2.1 系統(tǒng)模塊結構設計</p>

73、<p>  系統(tǒng)模塊結構設計的任務是劃分子系統(tǒng),然后確定子系統(tǒng)的模塊結構,并畫出模塊結構圖。在這個過程中必須考慮以下幾個問題:</p><p>  如何將一個系統(tǒng)劃分成多個子系統(tǒng);</p><p>  每個子系統(tǒng)如何劃分成多個模塊;</p><p>  如何確定子系統(tǒng)之間、模塊之間傳送的數(shù)據(jù)及其調用關系;</p><p>  如何評

74、價并改進模塊結構的質量。</p><p>  3.2.2 計算機物理系統(tǒng)配置方案設計</p><p>  在進行總體設計時,還要進行計算機物理系統(tǒng)具體配置方案的設計,要解決計算機軟硬件系統(tǒng)的配置、通信網絡系統(tǒng)的配置等問題。計算機物理系統(tǒng)具體配置方案要經過用戶單位和領導部門的同意才可進行實施。</p><p>  開發(fā)管理信息系統(tǒng)的大量經驗教訓說明,選擇計算機軟硬件設

75、備不能光看廣告或資料介紹,必須進行充分的調查研究,最好應向使用過該軟硬件設備的單位了解運行情況及優(yōu)缺點,并征求有關專家的意見,然后進行論證,最后寫出計算機物理系統(tǒng)配置方案報告。</p><p>  從我國的實際情況看,不少單位是先買計算機然后決定開發(fā)。這種不科學的、盲目的做法是不可取的,它會造成極大浪費。因為,計算機更新?lián)Q代是非常快的,就是在開發(fā)初期和在開發(fā)的中后期系統(tǒng)實施階段購買計算機設備,價格差別就會很大。因

76、此,在開發(fā)管理信息系統(tǒng)過程中應在系統(tǒng)設計的總體設計階段才具體設計計算機物理系統(tǒng)的配置方案。</p><p>  3.4 系統(tǒng)功能模塊</p><p>  系統(tǒng)總體功能有以下幾個方面:</p><p><b>  1、相機預覽功能;</b></p><p><b>  2、關閉相機功能;</b><

77、;/p><p><b>  3、拍照解碼:</b></p><p> ?。?)調用瀏覽器:如果二維碼信息隱藏的是以“http://”開頭的網址,那么手機便調用默認瀏覽器瀏覽該網址。</p><p> ?。?)調用撥打電話功能:如果二維碼信息隱藏的事以“TEL:”或者是“wtai:”開頭的電話號碼,那么手機直接調用撥打電話功能。</p>

78、<p> ?。?)顯示文本信息:如果二維碼信息只是包含一些文本信息,那么直接顯示。</p><p>  3.3.1 系統(tǒng)總體功能模塊</p><p>  通過上面的對系統(tǒng)的總體功能模塊的分析,便可以得出系統(tǒng)總體功能模塊圖。系統(tǒng)總體功能模塊圖如圖3.1所示。</p><p>  圖3.1 系統(tǒng)總體功能模塊圖</p><p>  3.

79、3.2 拍照解碼功能模塊</p><p>  在整個系統(tǒng)模塊中最重要的模塊是拍照解碼功能,因此把這個模塊單獨分析,將它的功能進行分析如圖3.2所示。</p><p>  圖3.2 拍照解碼功能模塊圖</p><p>  第四章 系統(tǒng)詳細設計</p><p><b>  4.1 系統(tǒng)流程圖</b></p>&

80、lt;p>  系統(tǒng)流程圖(System Flowchart)是描繪系統(tǒng)物理模型的傳統(tǒng)工具。它的基本思想是用圖形符號以黑盒子形式描繪系統(tǒng)里面的每個部件(程序、文件、數(shù)據(jù)庫、表格、人工過程等),表達信息在各個部件之間流動的情況。本系統(tǒng)流程圖如圖4.1所示。</p><p>  圖4.1 系統(tǒng)流程圖</p><p>  4.2 圖片處理過程圖</p><p>  首

81、先圖片的格式必須是JPEG格式的圖片,通過照相機預覽到二維碼圖片之后,需要對該圖片拍下來,由于QRCODE二維碼是按照一定規(guī)則以矩陣的形式生成的,所以拍照截取到圖片之后需要譯碼字節(jié)數(shù)組,將字節(jié)數(shù)組譯碼成位圖,并將位圖顯示在imageview上,然后通過decodeQRImage函數(shù)將此位圖送往系統(tǒng)自帶的譯碼函數(shù)譯碼成字符串,最后判斷取出的字符串是否符合OMIA所規(guī)范的規(guī)則。圖片處理過程圖如圖4.2所示。</p><p

82、>  圖4.2 圖片處理過程圖</p><p><b>  4.3 界面設計</b></p><p>  界面設計是人與機器之間傳遞和交換信息的媒介,一個好的界面是很重要的。它主要是站在用戶角度考慮,因此界面的設計要人性化、簡潔、清楚,還要有安全性和靈活性。</p><p>  此系統(tǒng)功能整體上可以分為三個部分。第一部分是相機預覽顯示部分

83、,這部分用一個surfaceview來實現(xiàn);第二部分是整個系統(tǒng)操作部分,分為三個按鈕,第一個按鈕為相機預覽按鈕,第二個按鈕為關閉相機按鈕,第三個為拍照解碼按鈕并且為各自按鈕設置監(jiān)聽器并綁定;第三部分是顯示拍照截取的二維碼圖片,在這兒我們用imageview視圖來顯示。具體系統(tǒng)界面如圖4.3所示。</p><p><b>  圖4.3 系統(tǒng)界面</b></p><p>

84、  第五章 系統(tǒng)編碼實現(xiàn)</p><p>  5.1 基本編碼設置</p><p>  從詳細設計我們已經知道系統(tǒng)分為三部分,因此我們設置一個變量bIfPreview來控制相機是否為預覽模式,變量初始化為private boolean bIfPreview = false,及設置相機預覽模式為false。因為要調用手機相機和撥打電話功能,因此在我們的AndroidManifest.xml文

85、件中應該加上相機權限和撥打電話權限語句:</p><p>  <uses-permission android:name="android.permission.CAMERA"/></p><p>  <uses-permission android:name="android.permission.CALL_PHONE"/>

86、</p><p>  對于布局文件來說,我們分為三層,第一層是拍照預覽部分,用surfaceview實現(xiàn);第二部分是三個按鈕,添加三個按鈕組件即可實現(xiàn);第三部分是顯示拍照截取的圖片,我們用imageview來實現(xiàn)。對布局來說,每一層都是一個線性布局LinearLayout。布局文件代碼如下所示:</p><p>  <?xml version="1.0" enco

87、ding="utf-8"?></p><p>  <LinearLayout</p><p>  xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:background="@drawable/white

88、"</p><p>  android:orientation="vertical"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="fill_parent"</p><

89、p>  android:layout_gravity="center_horizontal"</p><p><b>  ></b></p><p>  <SurfaceView</p><p>  android:id="@+id/mSurfaceView1"</p>&

90、lt;p>  android:visibility="visible" </p><p>  android:layout_width="160px" </p><p>  android:layout_height="120px"</p><p>  android:layout_gravity=&

91、quot;center_horizontal" ></p><p>  </SurfaceView> </p><p>  <LinearLayout</p><p>  android:orientation="horizontal"</p><p>  android:layout_w

92、idth="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p>  android:layout_gravity="center_horizontal"</p><p><b>  ></b>&

93、lt;/p><p><b>  <Button</b></p><p>  android:id="@+id/myButton1"</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_hei

94、ght="wrap_content"</p><p>  android:text="@string/str_button1"/></p><p><b>  <Button</b></p><p>  android:id="@+id/myButton2"</p&g

95、t;<p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p>  android:text="@string/str_button2"/></p><p&g

96、t;<b>  <Button</b></p><p>  android:id="@+id/myButton3"</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_con

97、tent"</p><p>  android:text="@string/str_take_picture"/></p><p>  </LinearLayout></p><p>  <ImageView</p><p>  android:id="@+id/myImageV

98、iew1" </p><p>  android:layout_width="wrap_content" </p><p>  android:layout_height="wrap_content" </p><p>  android:layout_gravity="center" />

99、</p><p>  </LinearLayout></p><p>  5.2 相機預覽實現(xiàn)</p><p>  相機預覽,用于開啟手機照相機。我們用一個按鈕實現(xiàn)該功能,添加一個按鈕并且設置并綁定監(jiān)聽器。在監(jiān)聽器里面我用一個initCamera()函數(shù)實現(xiàn),函數(shù)調用相機的OPEN方法即可實現(xiàn)預覽功能同時將變量bIfPreview設置為true。當然我們

100、要取得二維碼,因此我們要不活圖片,我們需要設置圖片的格式和一些參數(shù)。</p><p><b>  調用相機代碼如下:</b></p><p>  private void initCamera() {</p><p>  if (!bIfPreview) {</p><p>  /* 若相機非在預覽模式,則開啟相機 */

101、</p><p><b>  try {</b></p><p>  mCamera01 = Camera.open();</p><p><b>  } </b></p><p>  catch (Exception e) {</p><p>  Log.e(TAG, e.

102、getMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p>  設置圖片參數(shù)及相關代碼如下:</p><p>  mCamera01.setPreviewDisplay(mSurfaceHolder01);</p>&l

103、t;p>  /* 建立Camera.Parameters物件 */</p><p>  Camera.Parameters parameters = mCamera01.getParameters();</p><p>  /* 設定相片格式為JPEG格式*/</p><p>  parameters.setPictureFormat(PixelFormat.

104、JPEG);</p><p>  List<Camera.Size> s = parameters.getSupportedPreviewSizes();</p><p>  其實現(xiàn)如圖5.1所示:</p><p><b>  圖5.1 相機預覽</b></p><p>  5.3 關閉相機實現(xiàn)</p&

105、gt;<p>  我們能調用手機相機,當然我們也可以關機手機相機。這里同樣用一個按鈕并且設置并綁定監(jiān)聽器實現(xiàn),在監(jiān)聽器里面只需要調用相機的stopPreview()方法即可關閉相機,同時我們要釋放相機資源將預覽變量bIfPreview設置為false。代碼如下:</p><p>  private void resetCamera() {</p><p>  if (mCam

106、era01 != null && bIfPreview) {</p><p><b>  try {</b></p><p>  mCamera01.stopPreview();</p><p>  /* 釋放Camera對象 */</p><p>  mCamera01.release();</p

107、><p>  bIfPreview = false;</p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p>

108、;<p><b>  }</b></p><p>  其實現(xiàn)如下圖5.2所示:</p><p><b>  圖5.2 關閉相機</b></p><p>  5.4 拍照解碼實現(xiàn)</p><p>  本系統(tǒng)的目的就是要將二維碼識別出來知道里面所隱藏的信息,因此我們需要一個拍照解碼的功能。

109、同樣使用一個按鈕,設置并綁定監(jiān)聽器,監(jiān)聽器里面通過takePicture()函數(shù)調用相機的takePicture,takePicture方法調用一個jpegCallback回調函數(shù)專門處理JPEG格式的圖片,調用onPictureTaken方法將二維碼字節(jié)數(shù)組通過decodeByteArray方法譯碼成位圖,將位圖顯示在imageview上,再將位圖通過decodeQRImage函數(shù)譯碼成字符串,對字符串進行比對實現(xiàn)其相關操作。代碼如下

110、:</p><p>  private PictureCallback jpegCallback = new PictureCallback() {</p><p>  public void onPictureTaken(byte[] _data, Camera _camera) {</p><p>  // TODO Handle JPEG image data

111、</p><p><b>  try {</b></p><p>  /* onPictureTaken傳入的第一個參數(shù)即為相片的byte */</p><p>  Bitmap bm = null;</p><p>  bm = BitmapFactory.decodeByteArray(_data, 0, _data

112、.length);</p><p>  int resizeWidth = 160;</p><p>  int resizeHeight = 120;</p><p>  float scaleWidth = ((float) resizeWidth) / bm.getWidth();</p><p>  float scaleHeight

113、 = ((float) resizeHeight) / bm.getHeight();</p><p>  Matrix matrix = new Matrix();</p><p>  /* 使用Matrix.postScale方法縮小 Bitmap Size */</p><p>  matrix.postScale(scaleWidth, scaleHeigh

114、t);</p><p>  /* 建立新的Bitmap對象 */</p><p>  Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0,</p><p>  bm.getWidth(), bm.getHeight(), matrix, true);</p><p>  /* 擷取4:3的圖

115、檔的置中紅色框部分100x100像素 */</p><p>  Bitmap resizedBitmapSquare = Bitmap.createBitmap(resizedBitmap,</p><p>  30, 10, 100, 100);</p><p>  /* 將拍照的圖文件以ImageView顯示出來 */</p><p> 

116、 mImageView01.setImageBitmap(resizedBitmapSquare);</p><p>  /* 將傳入的圖文件譯碼成字符串 */</p><p>  String strQR2 = decodeQRImage(resizedBitmapSquare);</p><p>  if (strQR2 != "") {&l

117、t;/p><p>  if (URLUtil.isNetworkUrl(strQR2)) {</p><p>  /* 如果二維碼信息隱藏的是以“http://”開頭的網址,那么手機便調用瀏覽器瀏覽該網站 */</p><p>  mMakeTextToast(strQR2, true);</p><p>  Uri mUri = Uri.par

溫馨提示

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

評論

0/150

提交評論