版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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> 條碼可分為一維條碼和二維條碼,一維條碼在生產和生活中得到了廣泛的應用,極大的提高了生產率,但是一維條碼本身的缺點:信息量小,依賴數據庫等日益突顯出來。而二維碼QRcode在信息社會中越來越受到人們的青睞,它高容量,高密度,糾錯能力強,而且安全性非常好。它具有條碼技術的一些共性:每種碼制有其特定的字符集;每個字符占有一定的寬度;具有一定的校驗功能等。同時還具有對不同的信息自動識別功能、
4、及處理圖形旋轉變化等特點。例如QRcode在護照、火車票、門票、食品驗證等方面有廣泛的應用。既然二維碼越來越廣泛,那么我們就需要一個可以掃描二維碼的掃描儀。</p><p> 該掃描儀軟件基于Android平臺下采用面向對象方法開發(fā),用二維碼掃描儀對二維碼掃描,然后根據所掃描二維碼的特性對其進行解碼分析,判斷其是屬于什么類型的二維碼,若是網站信息則調用瀏覽器,若是電話號碼則調用電話功能撥打電話等。</p&
5、gt;<p> 關鍵詞:二維碼 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)功能結構圖...............................14</p><p> 2.1.3 系統(tǒng)用例圖...................................14</p><p> 2.
11、1.4技術需求......................................15</p><p> 2.2性能需求........................................16</p><p> 3系統(tǒng)總體設計..................................... 17</p><p> 3.1系統(tǒng)總體設
12、計目標............................... 17</p><p> 3.2系統(tǒng)概要設計....................................17</p><p> 3.3系統(tǒng)功能模塊....................................18</p><p> 3.3.1拍照解碼功能模塊.......
13、.......................18</p><p> 4 系統(tǒng)詳細設計......................................19</p><p> 4.1 系統(tǒng)流程圖......................................19</p><p> 4.2 圖片處理過程...................
14、.................20</p><p> 4.3 界面設計........................................21</p><p> 5 系統(tǒng)編碼實現(xiàn)......................................22</p><p> 5.1 基本編碼設置........................
15、............22</p><p> 5.2 相機預覽實現(xiàn)....................................24</p><p> 5.3 關閉相機實現(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 關閉相機測試..................................32<
18、;/p><p> 6.2.4 拍照解碼功能測試..............................32</p><p> 結論................................................38</p><p> 致謝................................................39<
19、/p><p> 參考文獻............................................40</p><p><b> 1 引言</b></p><p> 目前,手機也越來越廣泛多的普及了,自90年代以來,無線移動技術和市場應用得到飛速發(fā)展和成功,從尋呼機到3G手機的面市,中國人已經習慣了手中的移動手機不同的變化。越
20、來越成熟的手機用戶不僅重視手機硬件的外觀,更重視手機所賦予的強大功能。所以根據市場需求,我們有必要把二維碼和手機結合起來,利用手機作為讀取設備,實現(xiàn)條碼的識別。由于一維條形碼只是在一個方向(一般是水平方向)表達信息,而在垂直方向則不表達任何信息,其一定的高度通常是為了便于閱讀器的對準。一維條形碼的應用可以提高信息錄入的速度,減少差錯率,但是其數據容量較小,只有30個字符左右,而且只能包含字母和數字,而且一維碼遭到損壞到便不能閱讀。所以二
21、維碼在人們生活中得到了越來越廣泛的應用。</p><p> 由此,我們可知,QRcode在手機中的應用有著良好的前景和潛力,它將有效地推動移動增值業(yè)務的快速發(fā)展,有利于為我國信息產業(yè)的發(fā)展和經濟建設帶來社會及經濟效益。</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è)情報、經濟情報、政治情報、軍事情報、私人情報等機密資料之加密及傳遞。 </p><p><b> 證照應用</b></p><p> 護照、身份證、掛號證、駕照、會員證、識別證、連鎖店會員證等證照之資料登記及自動輸入,發(fā)揮「隨到隨讀」、「立即取用」的資訊管理效果。 </p>
24、<p> 二維碼作為一種連接報紙、手機和網絡的新興數字媒體,報紙利用二維碼技術打造“立體報紙”以來,看報的用戶通過使用智能手機上的各類二維碼軟件掃描報紙上的二維碼,報紙立即成“立體”,同時還可以輕松閱讀觀賞報紙的延伸內容。國內目前應用二維碼的報紙有華西都市報、長江日報、成都商報等。二維碼應用使報紙的容量大大擴展,讀報的樂趣也大大增加,這意味著,報紙、期刊已經不僅僅是平面的新聞紙,更可以為我們帶來一個全新3D視聽影像感受,并且
25、為產品提供了更為全面的資訊以及更為便捷的購買方式,締造了全方位的移動互聯(lián)網商務平臺。</p><p> 景點門票/火車票應用</p><p> 景點門票,火車票告別傳統(tǒng)文字紙張模式,采用二維碼進行售票、檢票,提高通行效率,防止偽票。</p><p><b> 車輛管理應用</b></p><p> 行駛證,駕駛證
26、,車輛的年審文件,車輛違章處罰單等采用印制有二維碼,將有關車輛上的基本信息,包括車駕號、發(fā)動機號、車型、顏色等車輛的基本信息轉化保存在二維碼中,其信息的隱含性起到防偽的作用,信息的數字化便于與管理部門的管理網絡的實施實時監(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ī)律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的,在代碼編制上巧妙地利用構成計算機內部邏輯
28、基礎的“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、可讓其內容快速被解碼。 </p><p> QR code,它可以存儲多種類型?,F(xiàn)在使用的QR code二位條形碼的規(guī)范一直遵循OMIA(Open Mobile Internet Alliance)的規(guī)范.</p><p> 簡要的解碼過程:二維碼圖像—>圖像解析編碼—>按照規(guī)則解釋成相應的代碼。圖例中顯示的是“百度百科”網頁的二維碼。</p><p&
30、gt; 1.2 開發(fā)工具介紹</p><p> 1.2.1 Eclipse 簡介</p><p> Eclipse是一個綜合開發(fā)環(huán)境IDE,它是一個功能完整且成熟的軟件,由IBM公司于2001年首次推出。在官方網站http://www.eclipse.org免費下載該軟件的打包文件,釋放到文件夾即可使用。</p><p> Eclipse是一個開放源代碼、
31、基于Java的可擴展開發(fā)平臺。開放源代碼的意思是讓使用者能夠取得軟件的原始碼,部分的有權去修改和傳播這個軟件。程序員也能用Eclipse打造新工具來開發(fā)軟件——這些新工具可擴充Eclipse的功能。</p><p> 就Eclipse本身而言,它只是一個框架和一組被稱為平臺核心的服務程序,用于通過插件構建開發(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基礎的類庫(rt.jar),不論什么Java應用服務器都是內置了某個版本的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> 內核版本2.6.35.7—perf:</p><p><b> 內存: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> 條碼可分為一維條碼和二維條碼,一維條碼在生產和生活中得到了廣泛的應用,極大的提高了生產率,但是一維條碼本身的缺點:信息量小,依賴數據庫等日益突顯出來。而二維條碼是在二維空間上由具有特殊結構的幾何圖形元素按一定規(guī)律和順序組合成的圖形,巧妙地利用構成計算機內部邏輯基礎的“0”、“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息。二維條碼的編碼范圍非常廣泛,它不僅可以保存英文、數字等符號信息,還可以保存中文
39、、圖片、聲音、指紋、簽字等多種數據類型。二維條碼可加密,具有很高的保密性,且糾錯能力很強,二維條碼可以用掃描儀掃描或用攝像頭直接讀取,它還具有條碼符號形狀、大小可變的特點。二維條碼作為一種全新的自動識別和信息載體技術,其經濟性和可靠性正被越來越多的人們所了解和認知。因此,我們要進一步研究二維條形碼掃描儀掃描二維碼。</p><p> 2.1.1 系統(tǒng)功能需求</p><p> 設計An
40、droid二維條形碼掃描儀我們應當確定這個系統(tǒng)要完成哪些動作,即對目標系統(tǒng)提出完整,準確,清晰,具體的要求。具體來說,在開發(fā)過程中,要熟悉QRcode二維碼解碼和圖像處理的方法。具體需求如下:</p><p><b> 1> 相機預覽需求</b></p><p> 此二維碼識別系統(tǒng)必須能夠運用手機上的照相機設計瞄準框,讓user對準條形碼才能獲得二維碼的圖像。&l
41、t;/p><p> 2> 圖像處理和拍照解碼需求</p><p> 我們用照相機拍照之后,圖片保存在手機緩存中,可以截取圖片對它進行處理,同時需要對二維碼進行解碼,在解碼的時候,從手機緩存中調去圖片解碼,緩存中的圖片刪除。</p><p> 3> 調用瀏覽器功能</p><p> 當二維碼隱藏的一個網站信息http://時,我們需要訪問該
42、網站,所以需要一個手機瀏覽器功能。</p><p> 4> 調用手機撥打電話功能</p><p> 當發(fā)現(xiàn)為wtai://或TEL:規(guī)范,則調用手機撥打電話。</p><p> 5> 解讀圖像的功能</p><p> 如果二維碼是一個靜態(tài)圖像,那么我們則需要對靜態(tài)圖片譯碼,取得譯碼之后的字符串,識別其條形碼類型,解讀圖像。 </
43、p><p> 2.1.2 系統(tǒng)功能結構圖</p><p> 系統(tǒng)結構圖是對軟件系統(tǒng)結構的總體設計的圖形顯示,如圖所示為總體的系統(tǒng)功能結構,它包括相機預覽,相機解碼和關閉相機三個部分,同時相機解碼包括調用瀏覽器,調用撥打電話和顯示文本。</p><p> 2.1.3 系統(tǒng)用例圖</p><p><b> 1 系統(tǒng)用戶用例圖<
44、;/b></p><p> 用例圖就是由主角,用例以及它們之間的關系構成的圖。該圖說明了用例模型中的關系。</p><p> 通過上面對系統(tǒng)的分析即可的得到系統(tǒng)的用例圖,如圖所示:</p><p> 2.1.4 技術需求</p><p> Android二維碼掃描系統(tǒng)具體的幾個技術要求如下:</p><p&g
45、t;<b> 1 照相機實現(xiàn)技術</b></p><p> 在了解了Android開發(fā)的過程之后需要知道Android怎樣進行照相。Android應用提供了Camera來控制拍照,使用Camera進行拍照需要按照如下步驟進行:</p><p> 調用Camera的open()方法打開照相機。</p><p> 調用Camera和getP
46、arameters()方法獲取拍照參數。方法返回一個Camera.Parameters對象。</p><p> 調用Camera.Parameters對象方法設置相機參數。</p><p> 調用Camera的setParameters(),并將Camera.Parameters對象作為參數傳入,這樣即可對相機的拍照參數進行控制。</p><p> 調用Cam
47、era的starPreview()方法開始預覽取景,在預覽取景之前需要調用Camera的setPreviewDisplay(SurfaceHolder holder)方法設置使用哪一個SurfaceView顯示取景圖片。</p><p> 調用Camera的takePicture()方法進行拍照。</p><p> 2 二維碼圖片處理技術</p><p> 首
48、先二維碼圖片是圖片的一種,當拍攝下來時需要將該圖片送往解碼函數解碼,因此需要獲取預覽中圖片,在這里用的是bitmap這個類。</p><p><b> 3 二維碼解碼技術</b></p><p> 將預覽畫面中的二維碼圖片送到我們的解碼函數對二維碼進行解碼,因此需要應用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)總體設計</b></p><p> 3.1 系統(tǒng)總體設計目標</p><p> 經過可行性研究和需求分析階段的工作,已經清楚系統(tǒng)必須完成的工作,下面
51、的工作應該是決定“如何做”的問題。概要設計的基本目的就是“概括地說系統(tǒng)應該如何實現(xiàn)”。另一方面的主要工作是設計軟件的結構,即確定系統(tǒng)都由哪些模塊組成及模塊之間的相互關系。</p><p> 3.2 系統(tǒng)概要設計</p><p> 概要設計的主要任務是設計軟件結構和數據結構。設計軟件結構的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結構及調用關系、確定模塊間的接口及人機界
52、面等。數據結構設計包括數據特征的描述、確定數據的結構特性。顯然,概要設計建立的是目標系統(tǒng)的邏輯模型,與計算機無關??傮w設計就是系統(tǒng)模塊結構設計。</p><p> Android二維碼掃描識別系統(tǒng)需要調用我們Android手機的照相機,通過onPictureTaken函數二維碼圖片處理成位圖,而且將位圖在imageview中顯示出來,然后再對位圖進行譯碼,按照QRcode二維碼生成的方式解碼成字符型。如果二維碼
53、隱藏信息是一個網址那么調用瀏覽器訪問該網站,如果二維碼隱藏的信息是一個電話號碼,那么調用手機撥打電話功能,如果該二維碼隱藏的信息是普通的文本信息,那么顯示出文本信息即可,若不是QRcode不做任何操作。</p><p> 3.3系統(tǒng)功能模塊設計</p><p> 系統(tǒng)總體功能有以下幾個方面:</p><p><b> 相機預覽功能;</b>
54、;</p><p><b> 關閉相機功能;</b></p><p><b> 拍照解碼;</b></p><p> 調用瀏覽器:如果二維碼信息隱藏的是以“http://”開頭的網址,那么手機便調用默認瀏覽器瀏覽該網址。</p><p> 調用撥打電話功能:如果二維碼信息隱藏的是以“TEL:
55、”或者是“wtai:”開頭的電話號碼,那么手機直接調用撥打電話功能。</p><p> 顯示文本信息:如果二維碼信息只是包含一些文本信息,那么直接顯示。</p><p> 3.3.1拍照解碼功能模塊</p><p> 在整個系統(tǒng)模塊中最重要的模塊是拍照解碼功能,因此把這個模塊單獨分析,將它的功能進行分析如圖所示。</p><p><
56、;b> 4 系統(tǒng)詳細設計</b></p><p><b> 4.1 系統(tǒng)流程圖</b></p><p> 系統(tǒng)流程圖是描繪系統(tǒng)物理模型的傳統(tǒng)工具。本次畢業(yè)設計的流程圖答題屬于順序流程,首先初始化相機,然后拍照截取圖片,對圖片處理的過程中要判斷字符串類型,然后根據不同類型調用不同功能。本系統(tǒng)流程圖如圖所示。</p><p>
57、; 4.2 圖片處理過程</p><p> QRcode二維碼是按照一定規(guī)則以矩陣的形式生成的,所以拍照截取到圖片之后需要譯碼字節(jié)數組,將字節(jié)數組譯碼成位圖,并將位圖顯示在imageview上,然后通過decodeQRImage函數將此位圖送往系統(tǒng)自帶的譯碼函數譯碼成字符串,最后判斷取出的字符串是否符合OMIA所規(guī)范的規(guī)則。圖片處理過程如下圖:</p><p><b>
58、4.3 界面設計</b></p><p> 界面設計是人與機器之間傳遞和交換信息的媒介,一個好的界面是很重要的。它主要是站在用戶的角度考慮,因此界面的設計要人性化、簡潔、清楚,還要有安全感和靈活性。</p><p> 此系統(tǒng)功能整體上可以分為三個部分。第一個部分是相機預覽顯示部分,這部分用一個surfaceview來實現(xiàn);第二部分是整個系統(tǒng)操作部分,分為三個按鈕,第一個按鈕
59、為相機預覽按鈕,第二個按鈕為關閉相機按鈕,第三個按鈕為拍照解碼按鈕并且為各自按鈕設置監(jiān)聽器并綁定;第三部分是顯示拍照截取的二維碼圖片。</p><p><b> 系統(tǒng)界面如下圖</b></p><p><b> 5 系統(tǒng)編碼實現(xiàn)</b></p><p> 5.1 基本編碼設置</p><p>
60、 從詳細設計我們已經知道系統(tǒng)分為三部分,因此我們設置一個變量bIfPreview來控制相機是否為預覽模式,變量初始化為private boolean bIfPreview=false,及設置相機預覽模式為false。因為要調用手機相機和撥打電話功能,因此在我們的AndroidManifest.xml文件中應該加上相機權限和撥打電話權限語句:</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 =” 關閉相機”/></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)該功能,添加一個按鈕并且設置并綁定監(jiān)聽器。在監(jiān)聽器里面我們用一個initCamera()
74、函數實現(xiàn),函數調用相機的open()方法即可實現(xiàn)預覽功能同時將變量bIfPreview設置為 true.當然我們要取得二維碼,因此我們要捕獲圖片,我們需要設置圖片的格式和一些參數。</p><p><b> 調用相機代碼如下:</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> 設置圖片參數相關代碼如下:</p><p> mCamera01.setPreviewDisplay(mSurfaceHolder01);</p>&
77、lt;p> /*建立Camera.Parameters物件*/</p><p> Camera.Parameters parameters=mCamera01.getParameters();</p><p> /*設定相片格式為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 關閉相機實現(xiàn) </p><p> 我們能調用手機相機,當然我們也可關閉手機。這
79、里同樣用一個按鈕并且設置綁定監(jiān)聽器實現(xiàn),在監(jiān)聽器里面只需要調用相機的stopPreview()方法即可關閉相機,同時我們要釋放相機資源將預覽變量bIfPreview設置為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)的目的就是要將二維碼識別出來知道里面所隱藏的信息,因此我們需要一個拍照解碼的功能。同樣使用一個按鈕,設置并綁定監(jiān)聽器,監(jiān)聽器里面通過takePicture()函數調用相機的takePicture,takePicture方法調用一個jpegCallback回調函數專門處理JPEG格式的圖片,調用onPictureTaken方法將二維碼字節(jié)數組通過decodeByteArray方法譯碼成位圖,將位圖顯示在imageview上,再將位
83、圖通過decodeQRImage函數譯碼成字符串,對字符串進行對比實現(xiàn)其相關操作。代碼如下:</p><p> Private PictureCallback jpegCallback=new PictureCallback(){</p><p> Public void onPictureTaken(byte[]_data,Camera_camera){</p><
84、;p> //處理JPEG圖片數據</p><p><b> Try{</b></p><p> /* onPictureTaken傳入的第一個參數即為相片的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: //”開頭的網址,那么手機便調用瀏覽器瀏覽該網站*/</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:”,開頭的電話號碼,那么手機直接調用撥打電話功能*/</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> /*顯示完圖文件,立即重置相機,并關閉預覽*/</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í)行程序的過程,測試的目的就是在軟件投入生產運行之前,盡可能地發(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、能測試結果如圖所示。</p><p> 6.2.3 關閉相機測試</p><p> 運行軟件,點擊“關閉”按鈕,預覽窗口出現(xiàn)的畫面消失。關閉相機功能測試結果如圖所示。</p><p> 6.2.4 拍照解碼功能測試</p><p> 運行軟件,點擊“相機預覽”按鈕,調用照相機,然后對準我們的QRcode二維碼,點擊“拍照解碼按鈕”,軟
99、件進行譯碼動作,譯碼出字符串,識別出條形碼類型,然后運行條形碼動作。當QRcode二維碼隱藏的是“快拍二維碼網頁”時調用瀏覽器瀏覽該網站,測試結果如圖所示</p><p> 當QRcode二維碼隱藏的是以“TEL:15103408894”開頭的電話號碼時調用撥打電話功能,測試結果分別如圖所示。</p><p> 如圖 以“TEL:”開頭的電話號碼類條形碼調用撥打電話測試結果</
100、p><p> 當QRCODE二維碼隱藏的是“123”的文本出現(xiàn)文本信息,測試結果分別如圖所示</p><p><b> 結論</b></p><p> Android二維碼的掃描識別系統(tǒng)設計的基本目的,在于通過理論與時間的進一步結合,將以前學習的關于Android知識串聯(lián)起來進一步鞏固,本次畢業(yè)設計實現(xiàn)了在Android手機上通過對二維碼的掃
101、描以顯示二維碼中所隱含的信息,包括網頁信息,電話信息,文本信息。它方便了人們的生活,而且也使信息更加安全,比一維碼進步很多。</p><p> 但是Android二維碼的掃描識別也存在著一定的缺陷,因為QRCode條形碼都是正方形,所以取出的范圍是紅色框的區(qū)域,對紅色區(qū)域的Bitmap對象進行識別,以加快條形碼的掃面速度。而且在截取圖片的過程中可以感覺到截取速度特別慢,可能會導致讀取失敗,而重新調用照相機重新讀
102、取。而且由于縮圖之后的清晰度會降低,還有手機攝像頭像素等因素,因此也有可能因為條形碼過于復雜而導致解碼失敗。</p><p><b> 致謝</b></p><p> 本設計師在導師**老師的悉心指導下完成的,導師淵博的專業(yè)知識和嚴謹的治學態(tài)度使我們受益匪淺,必將終生受用。不僅是我們樹立了遠大的學術目標、掌握了基本的研究方法,還使我們明白了許多待人接物與為人處世的
103、道理。本論文從選題到完成,每一步都是在導師的指導下完成的,傾注了導師大量心血。在此,謹向導師大量的心血。在此,謹向導師表示崇高的敬意和衷心的感謝!</p><p> 三年的大學生活就快走入尾聲,我們的校園生活就要劃上句號,心中是無盡的難舍與眷戀。從這里走出,對我的人生來說,將是踏上一個新的征程,要把所學的知識應用到實際工作中去?;厥兹辏〉昧诵┰S成績,生活中有快樂也有艱辛。首先我們要感謝母校對我三年培養(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Android系統(tǒng)上實現(xiàn)二維條形碼識別.pdf
- 基于二維條形碼的數字水印技術.pdf
- 二維條形碼識別系統(tǒng)研究與設計.pdf
- 二維條形碼手機識別系統(tǒng)的設計與實現(xiàn).pdf
- 二維條形碼編譯碼原理與應用研究.pdf
- PDF417二維條形碼編解碼的設計與實現(xiàn).pdf
- 面向二維條形碼的數字水印技術研究.pdf
- 在智能手機上實現(xiàn)二維條形碼識別.pdf
- 條形碼生成軟件如何設計漸變色條形碼
- 條形碼
- PDF417二維條形碼的讀取和識別技術.pdf
- 二維條形碼在機關公文管理中的應用.pdf
- 二維條形碼pdf417識別及其單片機實現(xiàn)
- 人臉檢測技術在二維條形碼(QR碼)中的應用.pdf
- 二維條形碼編碼與譯碼技術的計算機實現(xiàn).pdf
- 二維條形碼PDF417識別及其單片機實現(xiàn).pdf
- 圖像壓縮在二維條形碼PDF417存儲中的應用.pdf
- 基于Hough變換矩形檢測的二維條形碼識別系統(tǒng).pdf
- 申請資料條形碼
- Data Matrix二維條形碼圖像預處理及識別技術研究.pdf
評論
0/150
提交評論