版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢 業(yè) 論 文</b></p><p> 題 目: 二維條形碼掃描儀 </p><p> 院系名稱: 信息工程系 </p><p> 專業(yè)班級: 移動通信(1)班 </p><p>
2、學生姓名: </p><p> 學 號: </p><p> 指導教師: </p><p> 年 月 日</p><p><b> 摘 要</b
3、></p><p> 條碼可分為一維條碼和二維條碼,一維條碼在生產(chǎn)和生活中得到了廣泛的應用,極大的提高了生產(chǎn)率,但是一維條碼本身的缺點:信息量小,依賴數(shù)據(jù)庫等日益突顯出來。而二維碼QRcode在信息社會中越來越受到人們的青睞,它高容量,高密度,糾錯能力強,而且安全性非常好。它具有條碼技術(shù)的一些共性:每種碼制有其特定的字符集;每個字符占有一定的寬度;具有一定的校驗功能等。同時還具有對不同的信息自動識別功能、
4、及處理圖形旋轉(zhuǎn)變化等特點。例如QRcode在護照、火車票、門票、食品驗證等方面有廣泛的應用。既然二維碼越來越廣泛,那么我們就需要一個可以掃描二維碼的掃描儀。</p><p> 該掃描儀軟件基于Android平臺下采用面向?qū)ο蠓椒ㄩ_發(fā),用二維碼掃描儀對二維碼掃描,然后根據(jù)所掃描二維碼的特性對其進行解碼分析,判斷其是屬于什么類型的二維碼,若是網(wǎng)站信息則調(diào)用瀏覽器,若是電話號碼則調(diào)用電話功能撥打電話等。</p&
5、gt;<p> 關(guān)鍵詞:二維碼 QRcode</p><p><b> 目錄</b></p><p> 引言............................................5</p><p> 1.1系統(tǒng)開發(fā)和意義..................................6</p
6、><p> 1.1.1系統(tǒng)開發(fā)的意義................................7</p><p> 1.1.2 二維碼介紹....................................8</p><p> 1.2 開發(fā)工具介紹....................................9</p><p
7、> 1.2.1 Eclipse 簡介.................................9</p><p> 1.2.2 JDK簡介......................................9</p><p> 1.2.3 Android SDK簡介.............................10</p><
8、;p> 1.2.4 ADT簡介.....................................10</p><p> 1.3 項目開發(fā)環(huán)境....................................11</p><p> 1.3.1 硬件環(huán)境.....................................11</p><p
9、> 1.3.2 開發(fā)環(huán)境......................................11</p><p> 2 需求分析.........................................12</p><p> 2.1 需求分析........................................12</p><p&
10、gt; 2.1.1 系統(tǒng)功能需求..................................12</p><p> 2.1.2 系統(tǒng)功能結(jié)構(gòu)圖...............................14</p><p> 2.1.3 系統(tǒng)用例圖...................................14</p><p> 2.
11、1.4技術(shù)需求......................................15</p><p> 2.2性能需求........................................16</p><p> 3系統(tǒng)總體設(shè)計..................................... 17</p><p> 3.1系統(tǒng)總體設(shè)
12、計目標............................... 17</p><p> 3.2系統(tǒng)概要設(shè)計....................................17</p><p> 3.3系統(tǒng)功能模塊....................................18</p><p> 3.3.1拍照解碼功能模塊.......
13、.......................18</p><p> 4 系統(tǒng)詳細設(shè)計......................................19</p><p> 4.1 系統(tǒng)流程圖......................................19</p><p> 4.2 圖片處理過程...................
14、.................20</p><p> 4.3 界面設(shè)計........................................21</p><p> 5 系統(tǒng)編碼實現(xiàn)......................................22</p><p> 5.1 基本編碼設(shè)置........................
15、............22</p><p> 5.2 相機預覽實現(xiàn)....................................24</p><p> 5.3 關(guān)閉相機實現(xiàn)....................................26</p><p> 5.4 拍照解碼實現(xiàn)...............................
16、.....27</p><p> 6 系統(tǒng)測試..........................................31</p><p> 6.1 測試目的........................................31</p><p> 6.2 功能測試....................................
17、....31</p><p> 6.2.1 軟件安裝測試..................................31</p><p> 6.2.2 相機預覽功能測試..............................31</p><p> 6.2.3 關(guān)閉相機測試..................................32<
18、;/p><p> 6.2.4 拍照解碼功能測試..............................32</p><p> 結(jié)論................................................38</p><p> 致謝................................................39<
19、/p><p> 參考文獻............................................40</p><p><b> 1 引言</b></p><p> 目前,手機也越來越廣泛多的普及了,自90年代以來,無線移動技術(shù)和市場應用得到飛速發(fā)展和成功,從尋呼機到3G手機的面市,中國人已經(jīng)習慣了手中的移動手機不同的變化。越
20、來越成熟的手機用戶不僅重視手機硬件的外觀,更重視手機所賦予的強大功能。所以根據(jù)市場需求,我們有必要把二維碼和手機結(jié)合起來,利用手機作為讀取設(shè)備,實現(xiàn)條碼的識別。由于一維條形碼只是在一個方向(一般是水平方向)表達信息,而在垂直方向則不表達任何信息,其一定的高度通常是為了便于閱讀器的對準。一維條形碼的應用可以提高信息錄入的速度,減少差錯率,但是其數(shù)據(jù)容量較小,只有30個字符左右,而且只能包含字母和數(shù)字,而且一維碼遭到損壞到便不能閱讀。所以二
21、維碼在人們生活中得到了越來越廣泛的應用。</p><p> 由此,我們可知,QRcode在手機中的應用有著良好的前景和潛力,它將有效地推動移動增值業(yè)務的快速發(fā)展,有利于為我國信息產(chǎn)業(yè)的發(fā)展和經(jīng)濟建設(shè)帶來社會及經(jīng)濟效益。</p><p> 1.1 系統(tǒng)開發(fā)和意義</p><p> 1.1.1系統(tǒng)開發(fā)的意義</p><p> 二維碼具有儲
22、存量大,保密性高,追蹤性高,抗損性強,備援性大,成本便宜等特性,這些特性特別適用于表單,安全保密,追蹤,證照,資料備援等方面。</p><p><b> 表單應用</b></p><p> 公文表單、商業(yè)表單、進出口報單、艙單等資料的傳送交換,減少人工重覆輸入表單資料,避免人為錯誤,降低人力成本。 </p><p><b> 保
23、密應用</b></p><p> 商業(yè)情報、經(jīng)濟情報、政治情報、軍事情報、私人情報等機密資料之加密及傳遞。 </p><p><b> 證照應用</b></p><p> 護照、身份證、掛號證、駕照、會員證、識別證、連鎖店會員證等證照之資料登記及自動輸入,發(fā)揮「隨到隨讀」、「立即取用」的資訊管理效果。 </p>
24、<p> 二維碼作為一種連接報紙、手機和網(wǎng)絡的新興數(shù)字媒體,報紙利用二維碼技術(shù)打造“立體報紙”以來,看報的用戶通過使用智能手機上的各類二維碼軟件掃描報紙上的二維碼,報紙立即成“立體”,同時還可以輕松閱讀觀賞報紙的延伸內(nèi)容。國內(nèi)目前應用二維碼的報紙有華西都市報、長江日報、成都商報等。二維碼應用使報紙的容量大大擴展,讀報的樂趣也大大增加,這意味著,報紙、期刊已經(jīng)不僅僅是平面的新聞紙,更可以為我們帶來一個全新3D視聽影像感受,并且
25、為產(chǎn)品提供了更為全面的資訊以及更為便捷的購買方式,締造了全方位的移動互聯(lián)網(wǎng)商務平臺。</p><p> 景點門票/火車票應用</p><p> 景點門票,火車票告別傳統(tǒng)文字紙張模式,采用二維碼進行售票、檢票,提高通行效率,防止偽票。</p><p><b> 車輛管理應用</b></p><p> 行駛證,駕駛證
26、,車輛的年審文件,車輛違章處罰單等采用印制有二維碼,將有關(guān)車輛上的基本信息,包括車駕號、發(fā)動機號、車型、顏色等車輛的基本信息轉(zhuǎn)化保存在二維碼中,其信息的隱含性起到防偽的作用,信息的數(shù)字化便于與管理部門的管理網(wǎng)絡的實施實時監(jiān)控。 </p><p><b> 創(chuàng)意應用</b></p><p> 隨著智能手機的普及,各種各樣的二維碼(2-dimensional bar
27、code)應用也接踵而至,有如下極具創(chuàng)意的二維碼應用:1、二維 碼請柬;2、二維碼展示海報;3、二維碼簽到; 4、二維碼名片;5、二維碼指示牌;6、二維碼宣傳廣告。7、二維碼食品驗證 </p><p> 1.1.2二維碼介紹</p><p> 二維碼 ,它是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號信息的,在代碼編制上巧妙地利用構(gòu)成計算機內(nèi)部邏輯
28、基礎(chǔ)的“0”、“1”比特流的概念。</p><p> 在許多種類的二維條碼中,常用的碼制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K 等,QR碼是1994年由日本Denso-Wave公司發(fā)明。QR來自英文「Quick Response」的縮寫,即快速反應的意思,源自發(fā)明者希望QR碼
29、可讓其內(nèi)容快速被解碼。 </p><p> QR code,它可以存儲多種類型?,F(xiàn)在使用的QR code二位條形碼的規(guī)范一直遵循OMIA(Open Mobile Internet Alliance)的規(guī)范.</p><p> 簡要的解碼過程:二維碼圖像—>圖像解析編碼—>按照規(guī)則解釋成相應的代碼。圖例中顯示的是“百度百科”網(wǎng)頁的二維碼。</p><p&
30、gt; 1.2 開發(fā)工具介紹</p><p> 1.2.1 Eclipse 簡介</p><p> Eclipse是一個綜合開發(fā)環(huán)境IDE,它是一個功能完整且成熟的軟件,由IBM公司于2001年首次推出。在官方網(wǎng)站http://www.eclipse.org免費下載該軟件的打包文件,釋放到文件夾即可使用。</p><p> Eclipse是一個開放源代碼、
31、基于Java的可擴展開發(fā)平臺。開放源代碼的意思是讓使用者能夠取得軟件的原始碼,部分的有權(quán)去修改和傳播這個軟件。程序員也能用Eclipse打造新工具來開發(fā)軟件——這些新工具可擴充Eclipse的功能。</p><p> 就Eclipse本身而言,它只是一個框架和一組被稱為平臺核心的服務程序,用于通過插件構(gòu)建開發(fā)環(huán)境。核心的任務是讓每樣東西動起來,并加載所需的外掛程序。當啟動Eclipse時,先執(zhí)行的就是這個組件,
32、再由這個組件加載所需的外掛程序。Eclipse附帶了一個包括Java開發(fā)工具的標準插件集,因此,如果要使用Eclipse來開發(fā)Java程序,必須安裝JDK作為它的插件才能使它正常運作。</p><p> 1.2.2 JDK簡介</p><p> JDK(Java Development Kit,JDK)是一個整個Java的核心,包括了Java運行環(huán)境(Java Runt ime En
33、vironment ),一堆Java工具和Java基礎(chǔ)的類庫(rt.jar),不論什么Java應用服務器都是內(nèi)置了某個版本的JDK。最主流的JDK是SUN公司發(fā)布的JDK,除了SUN之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM公司開發(fā)的JDK,BME公司的Jrocket,還有GNU組織開發(fā)的JDK等等。JDK最重要命令行工具:</p><p> Java:啟動JVM執(zhí)行class;</p>
34、;<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軟件開
35、發(fā)工具包。被軟件開發(fā)工程師用于特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應用軟件的開發(fā)工具集合,是Android專屬的軟件開發(fā)工具包。</p><p> 1.2.4 ADT簡介</p><p> 目前Android開發(fā)所用的開發(fā)工具是Eclipse,在Eclipse編譯IDE環(huán)境中,安裝ADT,為Eclipse開發(fā)提供開發(fā)工具的升級或者變更,簡單理解為在Eclipse下開發(fā)工具
36、的升級下載工具。</p><p> 1.3 項目開發(fā)環(huán)境</p><p> 1.3.1 硬件環(huán)境</p><p> 內(nèi)核版本2.6.35.7—perf:</p><p><b> 內(nèi)存:512 M </b></p><p> 型號:HUAWEIC8810</p><p
37、> 1.3.2 開發(fā)環(huán)境</p><p> 操作系統(tǒng):Windows XP</p><p> 開發(fā)工具:jdk、Eclipse 、android-sdk</p><p><b> 2 需求分析</b></p><p><b> 2.1 需求分析</b></p><
38、p> 條碼可分為一維條碼和二維條碼,一維條碼在生產(chǎn)和生活中得到了廣泛的應用,極大的提高了生產(chǎn)率,但是一維條碼本身的缺點:信息量小,依賴數(shù)據(jù)庫等日益突顯出來。而二維條碼是在二維空間上由具有特殊結(jié)構(gòu)的幾何圖形元素按一定規(guī)律和順序組合成的圖形,巧妙地利用構(gòu)成計算機內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數(shù)值信息。二維條碼的編碼范圍非常廣泛,它不僅可以保存英文、數(shù)字等符號信息,還可以保存中文
39、、圖片、聲音、指紋、簽字等多種數(shù)據(jù)類型。二維條碼可加密,具有很高的保密性,且糾錯能力很強,二維條碼可以用掃描儀掃描或用攝像頭直接讀取,它還具有條碼符號形狀、大小可變的特點。二維條碼作為一種全新的自動識別和信息載體技術(shù),其經(jīng)濟性和可靠性正被越來越多的人們所了解和認知。因此,我們要進一步研究二維條形碼掃描儀掃描二維碼。</p><p> 2.1.1 系統(tǒng)功能需求</p><p> 設(shè)計An
40、droid二維條形碼掃描儀我們應當確定這個系統(tǒng)要完成哪些動作,即對目標系統(tǒng)提出完整,準確,清晰,具體的要求。具體來說,在開發(fā)過程中,要熟悉QRcode二維碼解碼和圖像處理的方法。具體需求如下:</p><p><b> 1> 相機預覽需求</b></p><p> 此二維碼識別系統(tǒng)必須能夠運用手機上的照相機設(shè)計瞄準框,讓user對準條形碼才能獲得二維碼的圖像。&l
41、t;/p><p> 2> 圖像處理和拍照解碼需求</p><p> 我們用照相機拍照之后,圖片保存在手機緩存中,可以截取圖片對它進行處理,同時需要對二維碼進行解碼,在解碼的時候,從手機緩存中調(diào)去圖片解碼,緩存中的圖片刪除。</p><p> 3> 調(diào)用瀏覽器功能</p><p> 當二維碼隱藏的一個網(wǎng)站信息http://時,我們需要訪問該
42、網(wǎng)站,所以需要一個手機瀏覽器功能。</p><p> 4> 調(diào)用手機撥打電話功能</p><p> 當發(fā)現(xiàn)為wtai://或TEL:規(guī)范,則調(diào)用手機撥打電話。</p><p> 5> 解讀圖像的功能</p><p> 如果二維碼是一個靜態(tài)圖像,那么我們則需要對靜態(tài)圖片譯碼,取得譯碼之后的字符串,識別其條形碼類型,解讀圖像。 </
43、p><p> 2.1.2 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 系統(tǒng)結(jié)構(gòu)圖是對軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計的圖形顯示,如圖所示為總體的系統(tǒng)功能結(jié)構(gòu),它包括相機預覽,相機解碼和關(guān)閉相機三個部分,同時相機解碼包括調(diào)用瀏覽器,調(diào)用撥打電話和顯示文本。</p><p> 2.1.3 系統(tǒng)用例圖</p><p><b> 1 系統(tǒng)用戶用例圖<
44、;/b></p><p> 用例圖就是由主角,用例以及它們之間的關(guān)系構(gòu)成的圖。該圖說明了用例模型中的關(guān)系。</p><p> 通過上面對系統(tǒng)的分析即可的得到系統(tǒng)的用例圖,如圖所示:</p><p> 2.1.4 技術(shù)需求</p><p> Android二維碼掃描系統(tǒng)具體的幾個技術(shù)要求如下:</p><p&g
45、t;<b> 1 照相機實現(xiàn)技術(shù)</b></p><p> 在了解了Android開發(fā)的過程之后需要知道Android怎樣進行照相。Android應用提供了Camera來控制拍照,使用Camera進行拍照需要按照如下步驟進行:</p><p> 調(diào)用Camera的open()方法打開照相機。</p><p> 調(diào)用Camera和getP
46、arameters()方法獲取拍照參數(shù)。方法返回一個Camera.Parameters對象。</p><p> 調(diào)用Camera.Parameters對象方法設(shè)置相機參數(shù)。</p><p> 調(diào)用Camera的setParameters(),并將Camera.Parameters對象作為參數(shù)傳入,這樣即可對相機的拍照參數(shù)進行控制。</p><p> 調(diào)用Cam
47、era的starPreview()方法開始預覽取景,在預覽取景之前需要調(diào)用Camera的setPreviewDisplay(SurfaceHolder holder)方法設(shè)置使用哪一個SurfaceView顯示取景圖片。</p><p> 調(diào)用Camera的takePicture()方法進行拍照。</p><p> 2 二維碼圖片處理技術(shù)</p><p> 首
48、先二維碼圖片是圖片的一種,當拍攝下來時需要將該圖片送往解碼函數(shù)解碼,因此需要獲取預覽中圖片,在這里用的是bitmap這個類。</p><p><b> 3 二維碼解碼技術(shù)</b></p><p> 將預覽畫面中的二維碼圖片送到我們的解碼函數(shù)對二維碼進行解碼,因此需要應用android另外的一個JAR包,這個系統(tǒng)主要是對二維碼的一種QRcode進行解碼。</p
49、><p><b> 2.2 性能需求</b></p><p> Android二維碼的掃描識別系統(tǒng)性能方面的要求主要體現(xiàn)在一下幾個方面:</p><p><b> 1.時間需求</b></p><p> 本系統(tǒng)需要對二維碼進行準確迅速的識別,所以對系統(tǒng)的時間要求更為嚴格。</p>
50、<p><b> 2.系統(tǒng)界面需求</b></p><p> 軟件界面直觀、簡介,人機交互性強。</p><p><b> 3 系統(tǒng)總體設(shè)計</b></p><p> 3.1 系統(tǒng)總體設(shè)計目標</p><p> 經(jīng)過可行性研究和需求分析階段的工作,已經(jīng)清楚系統(tǒng)必須完成的工作,下面
51、的工作應該是決定“如何做”的問題。概要設(shè)計的基本目的就是“概括地說系統(tǒng)應該如何實現(xiàn)”。另一方面的主要工作是設(shè)計軟件的結(jié)構(gòu),即確定系統(tǒng)都由哪些模塊組成及模塊之間的相互關(guān)系。</p><p> 3.2 系統(tǒng)概要設(shè)計</p><p> 概要設(shè)計的主要任務是設(shè)計軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計軟件結(jié)構(gòu)的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機界
52、面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性。顯然,概要設(shè)計建立的是目標系統(tǒng)的邏輯模型,與計算機無關(guān)。總體設(shè)計就是系統(tǒng)模塊結(jié)構(gòu)設(shè)計。</p><p> Android二維碼掃描識別系統(tǒng)需要調(diào)用我們Android手機的照相機,通過onPictureTaken函數(shù)二維碼圖片處理成位圖,而且將位圖在imageview中顯示出來,然后再對位圖進行譯碼,按照QRcode二維碼生成的方式解碼成字符型。如果二維碼
53、隱藏信息是一個網(wǎng)址那么調(diào)用瀏覽器訪問該網(wǎng)站,如果二維碼隱藏的信息是一個電話號碼,那么調(diào)用手機撥打電話功能,如果該二維碼隱藏的信息是普通的文本信息,那么顯示出文本信息即可,若不是QRcode不做任何操作。</p><p> 3.3系統(tǒng)功能模塊設(shè)計</p><p> 系統(tǒng)總體功能有以下幾個方面:</p><p><b> 相機預覽功能;</b>
54、;</p><p><b> 關(guān)閉相機功能;</b></p><p><b> 拍照解碼;</b></p><p> 調(diào)用瀏覽器:如果二維碼信息隱藏的是以“http://”開頭的網(wǎng)址,那么手機便調(diào)用默認瀏覽器瀏覽該網(wǎng)址。</p><p> 調(diào)用撥打電話功能:如果二維碼信息隱藏的是以“TEL:
55、”或者是“wtai:”開頭的電話號碼,那么手機直接調(diào)用撥打電話功能。</p><p> 顯示文本信息:如果二維碼信息只是包含一些文本信息,那么直接顯示。</p><p> 3.3.1拍照解碼功能模塊</p><p> 在整個系統(tǒng)模塊中最重要的模塊是拍照解碼功能,因此把這個模塊單獨分析,將它的功能進行分析如圖所示。</p><p><
56、;b> 4 系統(tǒng)詳細設(shè)計</b></p><p><b> 4.1 系統(tǒng)流程圖</b></p><p> 系統(tǒng)流程圖是描繪系統(tǒng)物理模型的傳統(tǒng)工具。本次畢業(yè)設(shè)計的流程圖答題屬于順序流程,首先初始化相機,然后拍照截取圖片,對圖片處理的過程中要判斷字符串類型,然后根據(jù)不同類型調(diào)用不同功能。本系統(tǒng)流程圖如圖所示。</p><p>
57、; 4.2 圖片處理過程</p><p> QRcode二維碼是按照一定規(guī)則以矩陣的形式生成的,所以拍照截取到圖片之后需要譯碼字節(jié)數(shù)組,將字節(jié)數(shù)組譯碼成位圖,并將位圖顯示在imageview上,然后通過decodeQRImage函數(shù)將此位圖送往系統(tǒng)自帶的譯碼函數(shù)譯碼成字符串,最后判斷取出的字符串是否符合OMIA所規(guī)范的規(guī)則。圖片處理過程如下圖:</p><p><b>
58、4.3 界面設(shè)計</b></p><p> 界面設(shè)計是人與機器之間傳遞和交換信息的媒介,一個好的界面是很重要的。它主要是站在用戶的角度考慮,因此界面的設(shè)計要人性化、簡潔、清楚,還要有安全感和靈活性。</p><p> 此系統(tǒng)功能整體上可以分為三個部分。第一個部分是相機預覽顯示部分,這部分用一個surfaceview來實現(xiàn);第二部分是整個系統(tǒng)操作部分,分為三個按鈕,第一個按鈕
59、為相機預覽按鈕,第二個按鈕為關(guān)閉相機按鈕,第三個按鈕為拍照解碼按鈕并且為各自按鈕設(shè)置監(jiān)聽器并綁定;第三部分是顯示拍照截取的二維碼圖片。</p><p><b> 系統(tǒng)界面如下圖</b></p><p><b> 5 系統(tǒng)編碼實現(xiàn)</b></p><p> 5.1 基本編碼設(shè)置</p><p>
60、 從詳細設(shè)計我們已經(jīng)知道系統(tǒng)分為三部分,因此我們設(shè)置一個變量bIfPreview來控制相機是否為預覽模式,變量初始化為private boolean bIfPreview=false,及設(shè)置相機預覽模式為false。因為要調(diào)用手機相機和撥打電話功能,因此在我們的AndroidManifest.xml文件中應該加上相機權(quán)限和撥打電話權(quán)限語句:</p><p> <uses-permission andro
61、id:name="android.permission.CAMERA"/></p><p> <uses-permission andrion:name="andrion.permission.CALL_PHONE"/></p><p> 對于布局文件來說,我們分為三層,第一層是拍照預覽部分,用surfaceview實現(xiàn);第二部
62、分是三個按鈕,添加三個按鈕即可實現(xiàn);第三部分是顯示拍照截取的圖片,我們用imageview來實現(xiàn)。對布局來說,每一層都是一個線性布局LinearLayout。布局文件代碼如下:</p><p> <?xml version="1.0"encoding="utf-8"?></p><p> <LinearLayout</p&
63、gt;<p> xmlns:android="http://schemas.android.com/apk/res/android"</p><p> android:background=”@drawable/while”</p><p> android:orientation=”vertical”</p><p> a
64、ndroid:layout_width =” fill_parent”</p><p> android:layout_height =” fill_parent”</p><p> android:layout_gravity =” center_horizontal”</p><p><b> ></b></p>
65、<p> <SurfaceView</p><p> android:id=”@+id/mySurfaceView1”</p><p> android:visibility=”visible”</p><p> android:layout_width =” 160px”</p><p> android:layo
66、ut_height =” 120px”</p><p> android:layout_gravity =” center_horizontal”></p><p> </ SurfaceView></p><p> <LinearLayout</p><p> android:orientation=” ho
67、rizontal”</p><p> android:layout_width =” wrap_content”</p><p> android:layout_height =” wrap_content”</p><p> android:layout_gravity =” center_horizontal”</p><p>&l
68、t;b> ></b></p><p><b> <Button</b></p><p> android:id=”@+id/myButton1”</p><p> android:layout_width =” wrap_content”</p><p> android:layo
69、ut_height =” wrap_content”</p><p> android:text =”相機預覽”/></p><p><b> <Button</b></p><p> android:id=”@+id/myButton2”</p><p> android:layout_width
70、=” wrap_content”</p><p> android:layout_height =” wrap_content”</p><p> android:text =” 關(guān)閉相機”/></p><p><b> <Button</b></p><p> android:id=”@+id/my
71、Button3”</p><p> android:layout_width =” wrap_content”</p><p> android:layout_height =” wrap_content”</p><p> android:text =” 拍照解碼”/></p><p> <LinearLayout>
72、;</p><p> <ImageView</p><p> android:id=”@+id/my ImageView1”</p><p> android:layout_width =” wrap_content”</p><p> android:layout_height =” wrap_content”</p&g
73、t;<p> android:;Layout_gravity=”center”/></p><p> </LinearLayout></p><p> 5.2 相機預覽實現(xiàn)</p><p> 相機預覽,用于開啟手機照相機。我們用一個按鈕實現(xiàn)該功能,添加一個按鈕并且設(shè)置并綁定監(jiān)聽器。在監(jiān)聽器里面我們用一個initCamera()
74、函數(shù)實現(xiàn),函數(shù)調(diào)用相機的open()方法即可實現(xiàn)預覽功能同時將變量bIfPreview設(shè)置為 true.當然我們要取得二維碼,因此我們要捕獲圖片,我們需要設(shè)置圖片的格式和一些參數(shù)。</p><p><b> 調(diào)用相機代碼如下:</b></p><p> Private void initCamera(){</p><p> If(!bIf
75、Preview){</p><p> /*若相機非在預覽模式,則開啟相機*/</p><p><b> Try{</b></p><p> mCamera01=Camera.open();</p><p> }Catch(Exception c){</p><p> Log.e(TAG,
76、e.getMessage()){</p><p><b> }</b></p><p><b> }</b></p><p> 設(shè)置圖片參數(shù)相關(guān)代碼如下:</p><p> mCamera01.setPreviewDisplay(mSurfaceHolder01);</p>&
77、lt;p> /*建立Camera.Parameters物件*/</p><p> Camera.Parameters parameters=mCamera01.getParameters();</p><p> /*設(shè)定相片格式為JPEG格式*/</p><p> parameters.setPictureFormat(PixelFormat.JPEG
78、);</p><p> List<Camera.Size>s=parameters.getSupportedPreviewSizes();</p><p><b> 其實現(xiàn)如圖所示:</b></p><p> 5.3 關(guān)閉相機實現(xiàn) </p><p> 我們能調(diào)用手機相機,當然我們也可關(guān)閉手機。這
79、里同樣用一個按鈕并且設(shè)置綁定監(jiān)聽器實現(xiàn),在監(jiān)聽器里面只需要調(diào)用相機的stopPreview()方法即可關(guān)閉相機,同時我們要釋放相機資源將預覽變量bIfPreview設(shè)置為false。代碼如下:</p><p> Private void restCamera(){</p><p> if(mCamera01!=null&&bIfPreview){</p>
80、<p><b> try{</b></p><p> mCamera01.stopPreview();</p><p> /*釋放Camera對象*/</p><p> mCamera01.release();</p><p> bIfPreview=false;</p><p&g
81、t; }catch(Exception e){</p><p> e.printStackTrace(); }</p><p><b> } }</b></p><p><b> 其實現(xiàn)如下圖所示:</b></p><p> 5.4 拍照解碼實現(xiàn)</p><p>
82、 本系統(tǒng)的目的就是要將二維碼識別出來知道里面所隱藏的信息,因此我們需要一個拍照解碼的功能。同樣使用一個按鈕,設(shè)置并綁定監(jiān)聽器,監(jiān)聽器里面通過takePicture()函數(shù)調(diào)用相機的takePicture,takePicture方法調(diào)用一個jpegCallback回調(diào)函數(shù)專門處理JPEG格式的圖片,調(diào)用onPictureTaken方法將二維碼字節(jié)數(shù)組通過decodeByteArray方法譯碼成位圖,將位圖顯示在imageview上,再將位
83、圖通過decodeQRImage函數(shù)譯碼成字符串,對字符串進行對比實現(xiàn)其相關(guān)操作。代碼如下:</p><p> Private PictureCallback jpegCallback=new PictureCallback(){</p><p> Public void onPictureTaken(byte[]_data,Camera_camera){</p><
84、;p> //處理JPEG圖片數(shù)據(jù)</p><p><b> Try{</b></p><p> /* onPictureTaken傳入的第一個參數(shù)即為相片的byte */</p><p> Bitmap bm=null;</p><p> bm=BitmapFactory.decodeByteArray(
85、_data,0._data.length);</p><p> int resizeWidth=160;</p><p> int resuzeHeight=120;</p><p> float scaleWidth=((float)resizeWidth)/bm.getWidth();</p><p> float scaleHe
86、ight=((float)resizeHeight)/bm.getHeight();</p><p> matrix matrix=new Matrix();</p><p> /*使用matrix.postScale方法縮小Bitmap size */</p><p> matrix.postScale(scaleWidth,scaleHeight);<
87、;/p><p> /*建立新的bitmap對象 */</p><p> bitmapresizeBitmap=Bitmap.createBitmap(bm,0,0,bm.getWidth,bm.getHeight,matrix,true);</p><p> /*截取4:3的圖檔的位置中紅色框部分100*100像素*</p><p> B
88、itmap resizeBitmapSquare=Bitmap.createBitmap(resizedBitmap,30,10,100,100);</p><p> /*將拍照的圖文件以ImageView顯示出來 */</p><p> mImageView01.setImageBitmap(resizedBitmapSquare);</p><p> /*
89、將傳入的圖文件譯碼成字符串*/</p><p> String strQR2=decodeQRImage(resized BitmapSquare);</p><p> If(strQR2!=""){</p><p> If(URLUtil.isNetworkUrl(strQR2)){</p><p> /*如果二
90、維碼信息隱藏的是以“http: //”開頭的網(wǎng)址,那么手機便調(diào)用瀏覽器瀏覽該網(wǎng)站*/</p><p> mMakeTextToast(strQR2,true);</p><p> Uri mUri=Uri.parse(strQR2);</p><p> Intent intent=new Intent(Intent.ACTION_VIEW,mUri);<
91、/p><p> startActivity(intent);</p><p> }else if(eregi("wtai://",strQR2)){</p><p> /*如果二維碼信息隱藏的是以“TEL:”,開頭的電話號碼,那么手機直接調(diào)用撥打電話功能*/</p><p> String[]aryTemp01=str
92、QR2.split("TEL:"); Intent myIntentDial=new Intent("android.intent.action.DIAL",</p><p> Uri.parse("tel:"+aryTemp01[1]));</p><p> startActivity (myIntentDial);<
93、/p><p><b> }else{</b></p><p> /*若僅是普通文字,則將文本顯示出來即可*/mMakeTextToast(strQR2,true);</p><p><b> }</b></p><p><b> }</b></p><
94、p> /*顯示完圖文件,立即重置相機,并關(guān)閉預覽*/</p><p> resetCamera();</p><p> Thread,sleep(1000);</p><p> /*再重新啟動相機繼續(xù)預覽*/</p><p> initCamera();</p><p> }catch(Excepti
95、on e){</p><p> Log.e(TAG,e.getMessage());</p><p><b> }</b></p><p><b> }</b></p><p><b> };</b></p><p> 拍照解碼界面如下圖所示:
96、</p><p><b> 6 系統(tǒng)測試</b></p><p><b> 6.1 測試目的</b></p><p> 測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程,測試的目的就是在軟件投入生產(chǎn)運行之前,盡可能地發(fā)現(xiàn)軟件中的錯誤并能及時改正。</p><p><b> 6.2 功能測
97、試</b></p><p> 6.2.1 軟件安裝測試</p><p> 當我們把整個項目完成之后,將其Qr.apk文件拷貝到手機上,在android手機上進行安裝,能夠成功安裝軟件。</p><p> 6.2.2 相機預覽功能測試</p><p> 運行軟件,點擊“相機預覽”按鈕,預覽窗口出現(xiàn)攝像頭前面的畫面。相機預覽功
98、能測試結(jié)果如圖所示。</p><p> 6.2.3 關(guān)閉相機測試</p><p> 運行軟件,點擊“關(guān)閉”按鈕,預覽窗口出現(xiàn)的畫面消失。關(guān)閉相機功能測試結(jié)果如圖所示。</p><p> 6.2.4 拍照解碼功能測試</p><p> 運行軟件,點擊“相機預覽”按鈕,調(diào)用照相機,然后對準我們的QRcode二維碼,點擊“拍照解碼按鈕”,軟
99、件進行譯碼動作,譯碼出字符串,識別出條形碼類型,然后運行條形碼動作。當QRcode二維碼隱藏的是“快拍二維碼網(wǎng)頁”時調(diào)用瀏覽器瀏覽該網(wǎng)站,測試結(jié)果如圖所示</p><p> 當QRcode二維碼隱藏的是以“TEL:15103408894”開頭的電話號碼時調(diào)用撥打電話功能,測試結(jié)果分別如圖所示。</p><p> 如圖 以“TEL:”開頭的電話號碼類條形碼調(diào)用撥打電話測試結(jié)果</
100、p><p> 當QRCODE二維碼隱藏的是“123”的文本出現(xiàn)文本信息,測試結(jié)果分別如圖所示</p><p><b> 結(jié)論</b></p><p> Android二維碼的掃描識別系統(tǒng)設(shè)計的基本目的,在于通過理論與時間的進一步結(jié)合,將以前學習的關(guān)于Android知識串聯(lián)起來進一步鞏固,本次畢業(yè)設(shè)計實現(xiàn)了在Android手機上通過對二維碼的掃
101、描以顯示二維碼中所隱含的信息,包括網(wǎng)頁信息,電話信息,文本信息。它方便了人們的生活,而且也使信息更加安全,比一維碼進步很多。</p><p> 但是Android二維碼的掃描識別也存在著一定的缺陷,因為QRCode條形碼都是正方形,所以取出的范圍是紅色框的區(qū)域,對紅色區(qū)域的Bitmap對象進行識別,以加快條形碼的掃面速度。而且在截取圖片的過程中可以感覺到截取速度特別慢,可能會導致讀取失敗,而重新調(diào)用照相機重新讀
102、取。而且由于縮圖之后的清晰度會降低,還有手機攝像頭像素等因素,因此也有可能因為條形碼過于復雜而導致解碼失敗。</p><p><b> 致謝</b></p><p> 本設(shè)計師在導師**老師的悉心指導下完成的,導師淵博的專業(yè)知識和嚴謹?shù)闹螌W態(tài)度使我們受益匪淺,必將終生受用。不僅是我們樹立了遠大的學術(shù)目標、掌握了基本的研究方法,還使我們明白了許多待人接物與為人處世的
103、道理。本論文從選題到完成,每一步都是在導師的指導下完成的,傾注了導師大量心血。在此,謹向?qū)煷罅康男难?。在此,謹向?qū)煴硎境绺叩木匆夂椭孕牡母兄x!</p><p> 三年的大學生活就快走入尾聲,我們的校園生活就要劃上句號,心中是無盡的難舍與眷戀。從這里走出,對我的人生來說,將是踏上一個新的征程,要把所學的知識應用到實際工作中去?;厥兹?,取得了些許成績,生活中有快樂也有艱辛。首先我們要感謝母校對我三年培養(yǎng),在這
104、三年里,我學到了很多的專業(yè)知識,也感悟到了很多受益匪淺的人生哲理,那更是能讓我們終生享用的一筆財富。</p><p><b> 參考文獻</b></p><p> [1]林信良.java學習筆記.北京:清華大學出版社,2007年</p><p> [2]張海藩.軟件工程導論.北京:清華大學出版社,2008年</p><
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Android系統(tǒng)上實現(xiàn)二維條形碼識別.pdf
- 基于二維條形碼的數(shù)字水印技術(shù).pdf
- 二維條形碼識別系統(tǒng)研究與設(shè)計.pdf
- 二維條形碼手機識別系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 二維條形碼編譯碼原理與應用研究.pdf
- PDF417二維條形碼編解碼的設(shè)計與實現(xiàn).pdf
- 面向二維條形碼的數(shù)字水印技術(shù)研究.pdf
- 在智能手機上實現(xiàn)二維條形碼識別.pdf
- 條形碼生成軟件如何設(shè)計漸變色條形碼
- 條形碼
- PDF417二維條形碼的讀取和識別技術(shù).pdf
- 二維條形碼在機關(guān)公文管理中的應用.pdf
- 二維條形碼pdf417識別及其單片機實現(xiàn)
- 人臉檢測技術(shù)在二維條形碼(QR碼)中的應用.pdf
- 二維條形碼編碼與譯碼技術(shù)的計算機實現(xiàn).pdf
- 二維條形碼PDF417識別及其單片機實現(xiàn).pdf
- 圖像壓縮在二維條形碼PDF417存儲中的應用.pdf
- 基于Hough變換矩形檢測的二維條形碼識別系統(tǒng).pdf
- 申請資料條形碼
- Data Matrix二維條形碼圖像預處理及識別技術(shù)研究.pdf
評論
0/150
提交評論