版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢 業(yè) 論 文</b></p><p> 題 目: 二維條形碼掃描儀 </p><p> 院系名稱: 信息工程系 </p><p> 專業(yè)班級(jí): 移動(dòng)通信(1)班 </p><p>
2、學(xué)生姓名: </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)教師: </p><p> 年 月 日</p><p><b> 摘 要</b
3、></p><p> 條碼可分為一維條碼和二維條碼,一維條碼在生產(chǎn)和生活中得到了廣泛的應(yīng)用,極大的提高了生產(chǎn)率,但是一維條碼本身的缺點(diǎn):信息量小,依賴數(shù)據(jù)庫(kù)等日益突顯出來。而二維碼QRcode在信息社會(huì)中越來越受到人們的青睞,它高容量,高密度,糾錯(cuò)能力強(qiáng),而且安全性非常好。它具有條碼技術(shù)的一些共性:每種碼制有其特定的字符集;每個(gè)字符占有一定的寬度;具有一定的校驗(yàn)功能等。同時(shí)還具有對(duì)不同的信息自動(dòng)識(shí)別功能、
4、及處理圖形旋轉(zhuǎn)變化等特點(diǎn)。例如QRcode在護(hù)照、火車票、門票、食品驗(yàn)證等方面有廣泛的應(yīng)用。既然二維碼越來越廣泛,那么我們就需要一個(gè)可以掃描二維碼的掃描儀。</p><p> 該掃描儀軟件基于Android平臺(tái)下采用面向?qū)ο蠓椒ㄩ_發(fā),用二維碼掃描儀對(duì)二維碼掃描,然后根據(jù)所掃描二維碼的特性對(duì)其進(jìn)行解碼分析,判斷其是屬于什么類型的二維碼,若是網(wǎng)站信息則調(diào)用瀏覽器,若是電話號(hà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 簡(jiǎn)介.................................9</p><p> 1.2.2 JDK簡(jiǎn)介......................................9</p><p> 1.2.3 Android SDK簡(jiǎn)介.............................10</p><
8、;p> 1.2.4 ADT簡(jiǎn)介.....................................10</p><p> 1.3 項(xiàng)目開發(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è)計(jì)..................................... 17</p><p> 3.1系統(tǒng)總體設(shè)
12、計(jì)目標(biāo)............................... 17</p><p> 3.2系統(tǒng)概要設(shè)計(jì)....................................17</p><p> 3.3系統(tǒng)功能模塊....................................18</p><p> 3.3.1拍照解碼功能模塊.......
13、.......................18</p><p> 4 系統(tǒng)詳細(xì)設(shè)計(jì)......................................19</p><p> 4.1 系統(tǒng)流程圖......................................19</p><p> 4.2 圖片處理過程...................
14、.................20</p><p> 4.3 界面設(shè)計(jì)........................................21</p><p> 5 系統(tǒng)編碼實(shí)現(xiàn)......................................22</p><p> 5.1 基本編碼設(shè)置........................
15、............22</p><p> 5.2 相機(jī)預(yù)覽實(shí)現(xiàn)....................................24</p><p> 5.3 關(guān)閉相機(jī)實(shí)現(xiàn)....................................26</p><p> 5.4 拍照解碼實(shí)現(xiàn)...............................
16、.....27</p><p> 6 系統(tǒng)測(cè)試..........................................31</p><p> 6.1 測(cè)試目的........................................31</p><p> 6.2 功能測(cè)試....................................
17、....31</p><p> 6.2.1 軟件安裝測(cè)試..................................31</p><p> 6.2.2 相機(jī)預(yù)覽功能測(cè)試..............................31</p><p> 6.2.3 關(guān)閉相機(jī)測(cè)試..................................32<
18、;/p><p> 6.2.4 拍照解碼功能測(cè)試..............................32</p><p> 結(jié)論................................................38</p><p> 致謝................................................39<
19、/p><p> 參考文獻(xiàn)............................................40</p><p><b> 1 引言</b></p><p> 目前,手機(jī)也越來越廣泛多的普及了,自90年代以來,無線移動(dòng)技術(shù)和市場(chǎng)應(yīng)用得到飛速發(fā)展和成功,從尋呼機(jī)到3G手機(jī)的面市,中國(guó)人已經(jīng)習(xí)慣了手中的移動(dòng)手機(jī)不同的變化。越
20、來越成熟的手機(jī)用戶不僅重視手機(jī)硬件的外觀,更重視手機(jī)所賦予的強(qiáng)大功能。所以根據(jù)市場(chǎng)需求,我們有必要把二維碼和手機(jī)結(jié)合起來,利用手機(jī)作為讀取設(shè)備,實(shí)現(xiàn)條碼的識(shí)別。由于一維條形碼只是在一個(gè)方向(一般是水平方向)表達(dá)信息,而在垂直方向則不表達(dá)任何信息,其一定的高度通常是為了便于閱讀器的對(duì)準(zhǔn)。一維條形碼的應(yīng)用可以提高信息錄入的速度,減少差錯(cuò)率,但是其數(shù)據(jù)容量較小,只有30個(gè)字符左右,而且只能包含字母和數(shù)字,而且一維碼遭到損壞到便不能閱讀。所以二
21、維碼在人們生活中得到了越來越廣泛的應(yīng)用。</p><p> 由此,我們可知,QRcode在手機(jī)中的應(yīng)用有著良好的前景和潛力,它將有效地推動(dòng)移動(dòng)增值業(yè)務(wù)的快速發(fā)展,有利于為我國(guó)信息產(chǎn)業(yè)的發(fā)展和經(jīng)濟(jì)建設(shè)帶來社會(huì)及經(jīng)濟(jì)效益。</p><p> 1.1 系統(tǒng)開發(fā)和意義</p><p> 1.1.1系統(tǒng)開發(fā)的意義</p><p> 二維碼具有儲(chǔ)
22、存量大,保密性高,追蹤性高,抗損性強(qiáng),備援性大,成本便宜等特性,這些特性特別適用于表單,安全保密,追蹤,證照,資料備援等方面。</p><p><b> 表單應(yīng)用</b></p><p> 公文表單、商業(yè)表單、進(jìn)出口報(bào)單、艙單等資料的傳送交換,減少人工重覆輸入表單資料,避免人為錯(cuò)誤,降低人力成本。 </p><p><b> 保
23、密應(yīng)用</b></p><p> 商業(yè)情報(bào)、經(jīng)濟(jì)情報(bào)、政治情報(bào)、軍事情報(bào)、私人情報(bào)等機(jī)密資料之加密及傳遞。 </p><p><b> 證照應(yīng)用</b></p><p> 護(hù)照、身份證、掛號(hào)證、駕照、會(huì)員證、識(shí)別證、連鎖店會(huì)員證等證照之資料登記及自動(dòng)輸入,發(fā)揮「隨到隨讀」、「立即取用」的資訊管理效果。 </p>
24、<p> 二維碼作為一種連接報(bào)紙、手機(jī)和網(wǎng)絡(luò)的新興數(shù)字媒體,報(bào)紙利用二維碼技術(shù)打造“立體報(bào)紙”以來,看報(bào)的用戶通過使用智能手機(jī)上的各類二維碼軟件掃描報(bào)紙上的二維碼,報(bào)紙立即成“立體”,同時(shí)還可以輕松閱讀觀賞報(bào)紙的延伸內(nèi)容。國(guó)內(nèi)目前應(yīng)用二維碼的報(bào)紙有華西都市報(bào)、長(zhǎng)江日?qǐng)?bào)、成都商報(bào)等。二維碼應(yīng)用使報(bào)紙的容量大大擴(kuò)展,讀報(bào)的樂趣也大大增加,這意味著,報(bào)紙、期刊已經(jīng)不僅僅是平面的新聞紙,更可以為我們帶來一個(gè)全新3D視聽影像感受,并且
25、為產(chǎn)品提供了更為全面的資訊以及更為便捷的購(gòu)買方式,締造了全方位的移動(dòng)互聯(lián)網(wǎng)商務(wù)平臺(tái)。</p><p> 景點(diǎn)門票/火車票應(yīng)用</p><p> 景點(diǎn)門票,火車票告別傳統(tǒng)文字紙張模式,采用二維碼進(jìn)行售票、檢票,提高通行效率,防止偽票。</p><p><b> 車輛管理應(yīng)用</b></p><p> 行駛證,駕駛證
26、,車輛的年審文件,車輛違章處罰單等采用印制有二維碼,將有關(guān)車輛上的基本信息,包括車駕號(hào)、發(fā)動(dòng)機(jī)號(hào)、車型、顏色等車輛的基本信息轉(zhuǎn)化保存在二維碼中,其信息的隱含性起到防偽的作用,信息的數(shù)字化便于與管理部門的管理網(wǎng)絡(luò)的實(shí)施實(shí)時(shí)監(jiān)控。 </p><p><b> 創(chuàng)意應(yīng)用</b></p><p> 隨著智能手機(jī)的普及,各種各樣的二維碼(2-dimensional bar
27、code)應(yīng)用也接踵而至,有如下極具創(chuàng)意的二維碼應(yīng)用:1、二維 碼請(qǐng)柬;2、二維碼展示海報(bào);3、二維碼簽到; 4、二維碼名片;5、二維碼指示牌;6、二維碼宣傳廣告。7、二維碼食品驗(yàn)證 </p><p> 1.1.2二維碼介紹</p><p> 二維碼 ,它是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的,在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(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」的縮寫,即快速反應(yīng)的意思,源自發(fā)明者希望QR碼
29、可讓其內(nèi)容快速被解碼。 </p><p> QR code,它可以存儲(chǔ)多種類型。現(xiàn)在使用的QR code二位條形碼的規(guī)范一直遵循OMIA(Open Mobile Internet Alliance)的規(guī)范.</p><p> 簡(jiǎn)要的解碼過程:二維碼圖像—>圖像解析編碼—>按照規(guī)則解釋成相應(yīng)的代碼。圖例中顯示的是“百度百科”網(wǎng)頁(yè)的二維碼。</p><p&
30、gt; 1.2 開發(fā)工具介紹</p><p> 1.2.1 Eclipse 簡(jiǎn)介</p><p> Eclipse是一個(gè)綜合開發(fā)環(huán)境IDE,它是一個(gè)功能完整且成熟的軟件,由IBM公司于2001年首次推出。在官方網(wǎng)站http://www.eclipse.org免費(fèi)下載該軟件的打包文件,釋放到文件夾即可使用。</p><p> Eclipse是一個(gè)開放源代碼、
31、基于Java的可擴(kuò)展開發(fā)平臺(tái)。開放源代碼的意思是讓使用者能夠取得軟件的原始碼,部分的有權(quán)去修改和傳播這個(gè)軟件。程序員也能用Eclipse打造新工具來開發(fā)軟件——這些新工具可擴(kuò)充Eclipse的功能。</p><p> 就Eclipse本身而言,它只是一個(gè)框架和一組被稱為平臺(tái)核心的服務(wù)程序,用于通過插件構(gòu)建開發(fā)環(huán)境。核心的任務(wù)是讓每樣?xùn)|西動(dòng)起來,并加載所需的外掛程序。當(dāng)啟動(dòng)Eclipse時(shí),先執(zhí)行的就是這個(gè)組件,
32、再由這個(gè)組件加載所需的外掛程序。Eclipse附帶了一個(gè)包括Java開發(fā)工具的標(biāo)準(zhǔn)插件集,因此,如果要使用Eclipse來開發(fā)Java程序,必須安裝JDK作為它的插件才能使它正常運(yùn)作。</p><p> 1.2.2 JDK簡(jiǎn)介</p><p> JDK(Java Development Kit,JDK)是一個(gè)整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(Java Runt ime En
33、vironment ),一堆Java工具和Java基礎(chǔ)的類庫(kù)(rt.jar),不論什么Java應(yīng)用服務(wù)器都是內(nèi)置了某個(gè)版本的JDK。最主流的JDK是SUN公司發(fā)布的JDK,除了SUN之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM公司開發(fā)的JDK,BME公司的Jrocket,還有GNU組織開發(fā)的JDK等等。JDK最重要命令行工具:</p><p> Java:?jiǎn)?dòng)JVM執(zhí)行class;</p>
34、;<p> Javac:Java編譯器;</p><p> Jar:Java打包工具;</p><p> Javadoc: Java文檔生成器。</p><p> 1.2.3 Android SDK簡(jiǎn)介</p><p> Android SDK(software development kit ,SDK)Tool軟件開
35、發(fā)工具包。被軟件開發(fā)工程師用于特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具集合,是Android專屬的軟件開發(fā)工具包。</p><p> 1.2.4 ADT簡(jiǎn)介</p><p> 目前Android開發(fā)所用的開發(fā)工具是Eclipse,在Eclipse編譯IDE環(huán)境中,安裝ADT,為Eclipse開發(fā)提供開發(fā)工具的升級(jí)或者變更,簡(jiǎn)單理解為在Eclipse下開發(fā)工具
36、的升級(jí)下載工具。</p><p> 1.3 項(xiàng)目開發(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> 型號(hào):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)和生活中得到了廣泛的應(yīng)用,極大的提高了生產(chǎn)率,但是一維條碼本身的缺點(diǎn):信息量小,依賴數(shù)據(jù)庫(kù)等日益突顯出來。而二維條碼是在二維空間上由具有特殊結(jié)構(gòu)的幾何圖形元素按一定規(guī)律和順序組合成的圖形,巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來表示文字?jǐn)?shù)值信息。二維條碼的編碼范圍非常廣泛,它不僅可以保存英文、數(shù)字等符號(hào)信息,還可以保存中文
39、、圖片、聲音、指紋、簽字等多種數(shù)據(jù)類型。二維條碼可加密,具有很高的保密性,且糾錯(cuò)能力很強(qiáng),二維條碼可以用掃描儀掃描或用攝像頭直接讀取,它還具有條碼符號(hào)形狀、大小可變的特點(diǎn)。二維條碼作為一種全新的自動(dòng)識(shí)別和信息載體技術(shù),其經(jīng)濟(jì)性和可靠性正被越來越多的人們所了解和認(rèn)知。因此,我們要進(jìn)一步研究二維條形碼掃描儀掃描二維碼。</p><p> 2.1.1 系統(tǒng)功能需求</p><p> 設(shè)計(jì)An
40、droid二維條形碼掃描儀我們應(yīng)當(dāng)確定這個(gè)系統(tǒng)要完成哪些動(dòng)作,即對(duì)目標(biāo)系統(tǒng)提出完整,準(zhǔn)確,清晰,具體的要求。具體來說,在開發(fā)過程中,要熟悉QRcode二維碼解碼和圖像處理的方法。具體需求如下:</p><p><b> 1> 相機(jī)預(yù)覽需求</b></p><p> 此二維碼識(shí)別系統(tǒng)必須能夠運(yùn)用手機(jī)上的照相機(jī)設(shè)計(jì)瞄準(zhǔn)框,讓user對(duì)準(zhǔn)條形碼才能獲得二維碼的圖像。&l
41、t;/p><p> 2> 圖像處理和拍照解碼需求</p><p> 我們用照相機(jī)拍照之后,圖片保存在手機(jī)緩存中,可以截取圖片對(duì)它進(jìn)行處理,同時(shí)需要對(duì)二維碼進(jìn)行解碼,在解碼的時(shí)候,從手機(jī)緩存中調(diào)去圖片解碼,緩存中的圖片刪除。</p><p> 3> 調(diào)用瀏覽器功能</p><p> 當(dāng)二維碼隱藏的一個(gè)網(wǎng)站信息http://時(shí),我們需要訪問該
42、網(wǎng)站,所以需要一個(gè)手機(jī)瀏覽器功能。</p><p> 4> 調(diào)用手機(jī)撥打電話功能</p><p> 當(dāng)發(fā)現(xiàn)為wtai://或TEL:規(guī)范,則調(diào)用手機(jī)撥打電話。</p><p> 5> 解讀圖像的功能</p><p> 如果二維碼是一個(gè)靜態(tài)圖像,那么我們則需要對(duì)靜態(tài)圖片譯碼,取得譯碼之后的字符串,識(shí)別其條形碼類型,解讀圖像。 </
43、p><p> 2.1.2 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 系統(tǒng)結(jié)構(gòu)圖是對(duì)軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì)的圖形顯示,如圖所示為總體的系統(tǒng)功能結(jié)構(gòu),它包括相機(jī)預(yù)覽,相機(jī)解碼和關(guān)閉相機(jī)三個(gè)部分,同時(shí)相機(jī)解碼包括調(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> 通過上面對(duì)系統(tǒng)的分析即可的得到系統(tǒng)的用例圖,如圖所示:</p><p> 2.1.4 技術(shù)需求</p><p> Android二維碼掃描系統(tǒng)具體的幾個(gè)技術(shù)要求如下:</p><p&g
45、t;<b> 1 照相機(jī)實(shí)現(xiàn)技術(shù)</b></p><p> 在了解了Android開發(fā)的過程之后需要知道Android怎樣進(jìn)行照相。Android應(yīng)用提供了Camera來控制拍照,使用Camera進(jìn)行拍照需要按照如下步驟進(jìn)行:</p><p> 調(diào)用Camera的open()方法打開照相機(jī)。</p><p> 調(diào)用Camera和getP
46、arameters()方法獲取拍照參數(shù)。方法返回一個(gè)Camera.Parameters對(duì)象。</p><p> 調(diào)用Camera.Parameters對(duì)象方法設(shè)置相機(jī)參數(shù)。</p><p> 調(diào)用Camera的setParameters(),并將Camera.Parameters對(duì)象作為參數(shù)傳入,這樣即可對(duì)相機(jī)的拍照參數(shù)進(jìn)行控制。</p><p> 調(diào)用Cam
47、era的starPreview()方法開始預(yù)覽取景,在預(yù)覽取景之前需要調(diào)用Camera的setPreviewDisplay(SurfaceHolder holder)方法設(shè)置使用哪一個(gè)SurfaceView顯示取景圖片。</p><p> 調(diào)用Camera的takePicture()方法進(jìn)行拍照。</p><p> 2 二維碼圖片處理技術(shù)</p><p> 首
48、先二維碼圖片是圖片的一種,當(dāng)拍攝下來時(shí)需要將該圖片送往解碼函數(shù)解碼,因此需要獲取預(yù)覽中圖片,在這里用的是bitmap這個(gè)類。</p><p><b> 3 二維碼解碼技術(shù)</b></p><p> 將預(yù)覽畫面中的二維碼圖片送到我們的解碼函數(shù)對(duì)二維碼進(jìn)行解碼,因此需要應(yīng)用android另外的一個(gè)JAR包,這個(gè)系統(tǒng)主要是對(duì)二維碼的一種QRcode進(jìn)行解碼。</p
49、><p><b> 2.2 性能需求</b></p><p> Android二維碼的掃描識(shí)別系統(tǒng)性能方面的要求主要體現(xiàn)在一下幾個(gè)方面:</p><p><b> 1.時(shí)間需求</b></p><p> 本系統(tǒng)需要對(duì)二維碼進(jìn)行準(zhǔn)確迅速的識(shí)別,所以對(duì)系統(tǒng)的時(shí)間要求更為嚴(yán)格。</p>
50、<p><b> 2.系統(tǒng)界面需求</b></p><p> 軟件界面直觀、簡(jiǎn)介,人機(jī)交互性強(qiáng)。</p><p><b> 3 系統(tǒng)總體設(shè)計(jì)</b></p><p> 3.1 系統(tǒng)總體設(shè)計(jì)目標(biāo)</p><p> 經(jīng)過可行性研究和需求分析階段的工作,已經(jīng)清楚系統(tǒng)必須完成的工作,下面
51、的工作應(yīng)該是決定“如何做”的問題。概要設(shè)計(jì)的基本目的就是“概括地說系統(tǒng)應(yīng)該如何實(shí)現(xiàn)”。另一方面的主要工作是設(shè)計(jì)軟件的結(jié)構(gòu),即確定系統(tǒng)都由哪些模塊組成及模塊之間的相互關(guān)系。</p><p> 3.2 系統(tǒng)概要設(shè)計(jì)</p><p> 概要設(shè)計(jì)的主要任務(wù)是設(shè)計(jì)軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計(jì)軟件結(jié)構(gòu)的具體任務(wù)是:將一個(gè)復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界
52、面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性。顯然,概要設(shè)計(jì)建立的是目標(biāo)系統(tǒng)的邏輯模型,與計(jì)算機(jī)無關(guān)。總體設(shè)計(jì)就是系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)。</p><p> Android二維碼掃描識(shí)別系統(tǒng)需要調(diào)用我們Android手機(jī)的照相機(jī),通過onPictureTaken函數(shù)二維碼圖片處理成位圖,而且將位圖在imageview中顯示出來,然后再對(duì)位圖進(jìn)行譯碼,按照QRcode二維碼生成的方式解碼成字符型。如果二維碼
53、隱藏信息是一個(gè)網(wǎng)址那么調(diào)用瀏覽器訪問該網(wǎng)站,如果二維碼隱藏的信息是一個(gè)電話號(hào)碼,那么調(diào)用手機(jī)撥打電話功能,如果該二維碼隱藏的信息是普通的文本信息,那么顯示出文本信息即可,若不是QRcode不做任何操作。</p><p> 3.3系統(tǒng)功能模塊設(shè)計(jì)</p><p> 系統(tǒng)總體功能有以下幾個(gè)方面:</p><p><b> 相機(jī)預(yù)覽功能;</b>
54、;</p><p><b> 關(guān)閉相機(jī)功能;</b></p><p><b> 拍照解碼;</b></p><p> 調(diào)用瀏覽器:如果二維碼信息隱藏的是以“http://”開頭的網(wǎng)址,那么手機(jī)便調(diào)用默認(rèn)瀏覽器瀏覽該網(wǎng)址。</p><p> 調(diào)用撥打電話功能:如果二維碼信息隱藏的是以“TEL:
55、”或者是“wtai:”開頭的電話號(hào)碼,那么手機(jī)直接調(diào)用撥打電話功能。</p><p> 顯示文本信息:如果二維碼信息只是包含一些文本信息,那么直接顯示。</p><p> 3.3.1拍照解碼功能模塊</p><p> 在整個(gè)系統(tǒng)模塊中最重要的模塊是拍照解碼功能,因此把這個(gè)模塊單獨(dú)分析,將它的功能進(jìn)行分析如圖所示。</p><p><
56、;b> 4 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p><b> 4.1 系統(tǒng)流程圖</b></p><p> 系統(tǒng)流程圖是描繪系統(tǒng)物理模型的傳統(tǒng)工具。本次畢業(yè)設(shè)計(jì)的流程圖答題屬于順序流程,首先初始化相機(jī),然后拍照截取圖片,對(duì)圖片處理的過程中要判斷字符串類型,然后根據(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è)計(jì)</b></p><p> 界面設(shè)計(jì)是人與機(jī)器之間傳遞和交換信息的媒介,一個(gè)好的界面是很重要的。它主要是站在用戶的角度考慮,因此界面的設(shè)計(jì)要人性化、簡(jiǎn)潔、清楚,還要有安全感和靈活性。</p><p> 此系統(tǒng)功能整體上可以分為三個(gè)部分。第一個(gè)部分是相機(jī)預(yù)覽顯示部分,這部分用一個(gè)surfaceview來實(shí)現(xiàn);第二部分是整個(gè)系統(tǒng)操作部分,分為三個(gè)按鈕,第一個(gè)按鈕
59、為相機(jī)預(yù)覽按鈕,第二個(gè)按鈕為關(guān)閉相機(jī)按鈕,第三個(gè)按鈕為拍照解碼按鈕并且為各自按鈕設(shè)置監(jiān)聽器并綁定;第三部分是顯示拍照截取的二維碼圖片。</p><p><b> 系統(tǒng)界面如下圖</b></p><p><b> 5 系統(tǒng)編碼實(shí)現(xiàn)</b></p><p> 5.1 基本編碼設(shè)置</p><p>
60、 從詳細(xì)設(shè)計(jì)我們已經(jīng)知道系統(tǒng)分為三部分,因此我們?cè)O(shè)置一個(gè)變量bIfPreview來控制相機(jī)是否為預(yù)覽模式,變量初始化為private boolean bIfPreview=false,及設(shè)置相機(jī)預(yù)覽模式為false。因?yàn)橐{(diào)用手機(jī)相機(jī)和撥打電話功能,因此在我們的AndroidManifest.xml文件中應(yīng)該加上相機(jī)權(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> 對(duì)于布局文件來說,我們分為三層,第一層是拍照預(yù)覽部分,用surfaceview實(shí)現(xiàn);第二部
62、分是三個(gè)按鈕,添加三個(gè)按鈕即可實(shí)現(xiàn);第三部分是顯示拍照截取的圖片,我們用imageview來實(shí)現(xiàn)。對(duì)布局來說,每一層都是一個(gè)線性布局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 =”相機(jī)預(yù)覽”/></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)閉相機(jī)”/></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 相機(jī)預(yù)覽實(shí)現(xiàn)</p><p> 相機(jī)預(yù)覽,用于開啟手機(jī)照相機(jī)。我們用一個(gè)按鈕實(shí)現(xiàn)該功能,添加一個(gè)按鈕并且設(shè)置并綁定監(jiān)聽器。在監(jiān)聽器里面我們用一個(gè)initCamera()
74、函數(shù)實(shí)現(xiàn),函數(shù)調(diào)用相機(jī)的open()方法即可實(shí)現(xiàn)預(yù)覽功能同時(shí)將變量bIfPreview設(shè)置為 true.當(dāng)然我們要取得二維碼,因此我們要捕獲圖片,我們需要設(shè)置圖片的格式和一些參數(shù)。</p><p><b> 調(diào)用相機(jī)代碼如下:</b></p><p> Private void initCamera(){</p><p> If(!bIf
75、Preview){</p><p> /*若相機(jī)非在預(yù)覽模式,則開啟相機(jī)*/</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> 其實(shí)現(xiàn)如圖所示:</b></p><p> 5.3 關(guān)閉相機(jī)實(shí)現(xiàn) </p><p> 我們能調(diào)用手機(jī)相機(jī),當(dāng)然我們也可關(guān)閉手機(jī)。這
79、里同樣用一個(gè)按鈕并且設(shè)置綁定監(jiān)聽器實(shí)現(xiàn),在監(jiān)聽器里面只需要調(diào)用相機(jī)的stopPreview()方法即可關(guān)閉相機(jī),同時(shí)我們要釋放相機(jī)資源將預(yù)覽變量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對(duì)象*/</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> 其實(shí)現(xiàn)如下圖所示:</b></p><p> 5.4 拍照解碼實(shí)現(xiàn)</p><p>
82、 本系統(tǒng)的目的就是要將二維碼識(shí)別出來知道里面所隱藏的信息,因此我們需要一個(gè)拍照解碼的功能。同樣使用一個(gè)按鈕,設(shè)置并綁定監(jiān)聽器,監(jiān)聽器里面通過takePicture()函數(shù)調(diào)用相機(jī)的takePicture,takePicture方法調(diào)用一個(gè)jpegCallback回調(diào)函數(shù)專門處理JPEG格式的圖片,調(diào)用onPictureTaken方法將二維碼字節(jié)數(shù)組通過decodeByteArray方法譯碼成位圖,將位圖顯示在imageview上,再將位
83、圖通過decodeQRImage函數(shù)譯碼成字符串,對(duì)字符串進(jìn)行對(duì)比實(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傳入的第一個(gè)參數(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對(duì)象 */</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)址,那么手機(jī)便調(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:”,開頭的電話號(hào)碼,那么手機(jī)直接調(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> /*顯示完圖文件,立即重置相機(jī),并關(guān)閉預(yù)覽*/</p><p> resetCamera();</p><p> Thread,sleep(1000);</p><p> /*再重新啟動(dòng)相機(jī)繼續(xù)預(yù)覽*/</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)測(cè)試</b></p><p><b> 6.1 測(cè)試目的</b></p><p> 測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程,測(cè)試的目的就是在軟件投入生產(chǎn)運(yùn)行之前,盡可能地發(fā)現(xiàn)軟件中的錯(cuò)誤并能及時(shí)改正。</p><p><b> 6.2 功能測(cè)
97、試</b></p><p> 6.2.1 軟件安裝測(cè)試</p><p> 當(dāng)我們把整個(gè)項(xiàng)目完成之后,將其Qr.apk文件拷貝到手機(jī)上,在android手機(jī)上進(jìn)行安裝,能夠成功安裝軟件。</p><p> 6.2.2 相機(jī)預(yù)覽功能測(cè)試</p><p> 運(yùn)行軟件,點(diǎn)擊“相機(jī)預(yù)覽”按鈕,預(yù)覽窗口出現(xiàn)攝像頭前面的畫面。相機(jī)預(yù)覽功
98、能測(cè)試結(jié)果如圖所示。</p><p> 6.2.3 關(guān)閉相機(jī)測(cè)試</p><p> 運(yùn)行軟件,點(diǎn)擊“關(guān)閉”按鈕,預(yù)覽窗口出現(xiàn)的畫面消失。關(guān)閉相機(jī)功能測(cè)試結(jié)果如圖所示。</p><p> 6.2.4 拍照解碼功能測(cè)試</p><p> 運(yùn)行軟件,點(diǎn)擊“相機(jī)預(yù)覽”按鈕,調(diào)用照相機(jī),然后對(duì)準(zhǔn)我們的QRcode二維碼,點(diǎn)擊“拍照解碼按鈕”,軟
99、件進(jìn)行譯碼動(dòng)作,譯碼出字符串,識(shí)別出條形碼類型,然后運(yùn)行條形碼動(dòng)作。當(dāng)QRcode二維碼隱藏的是“快拍二維碼網(wǎng)頁(yè)”時(shí)調(diào)用瀏覽器瀏覽該網(wǎng)站,測(cè)試結(jié)果如圖所示</p><p> 當(dāng)QRcode二維碼隱藏的是以“TEL:15103408894”開頭的電話號(hào)碼時(shí)調(diào)用撥打電話功能,測(cè)試結(jié)果分別如圖所示。</p><p> 如圖 以“TEL:”開頭的電話號(hào)碼類條形碼調(diào)用撥打電話測(cè)試結(jié)果</
100、p><p> 當(dāng)QRCODE二維碼隱藏的是“123”的文本出現(xiàn)文本信息,測(cè)試結(jié)果分別如圖所示</p><p><b> 結(jié)論</b></p><p> Android二維碼的掃描識(shí)別系統(tǒng)設(shè)計(jì)的基本目的,在于通過理論與時(shí)間的進(jìn)一步結(jié)合,將以前學(xué)習(xí)的關(guān)于Android知識(shí)串聯(lián)起來進(jìn)一步鞏固,本次畢業(yè)設(shè)計(jì)實(shí)現(xiàn)了在Android手機(jī)上通過對(duì)二維碼的掃
101、描以顯示二維碼中所隱含的信息,包括網(wǎng)頁(yè)信息,電話信息,文本信息。它方便了人們的生活,而且也使信息更加安全,比一維碼進(jìn)步很多。</p><p> 但是Android二維碼的掃描識(shí)別也存在著一定的缺陷,因?yàn)镼RCode條形碼都是正方形,所以取出的范圍是紅色框的區(qū)域,對(duì)紅色區(qū)域的Bitmap對(duì)象進(jìn)行識(shí)別,以加快條形碼的掃面速度。而且在截取圖片的過程中可以感覺到截取速度特別慢,可能會(huì)導(dǎo)致讀取失敗,而重新調(diào)用照相機(jī)重新讀
102、取。而且由于縮圖之后的清晰度會(huì)降低,還有手機(jī)攝像頭像素等因素,因此也有可能因?yàn)闂l形碼過于復(fù)雜而導(dǎo)致解碼失敗。</p><p><b> 致謝</b></p><p> 本設(shè)計(jì)師在導(dǎo)師**老師的悉心指導(dǎo)下完成的,導(dǎo)師淵博的專業(yè)知識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度使我們受益匪淺,必將終生受用。不僅是我們樹立了遠(yuǎn)大的學(xué)術(shù)目標(biāo)、掌握了基本的研究方法,還使我們明白了許多待人接物與為人處世的
103、道理。本論文從選題到完成,每一步都是在導(dǎo)師的指導(dǎo)下完成的,傾注了導(dǎo)師大量心血。在此,謹(jǐn)向?qū)煷罅康男难?。在此,?jǐn)向?qū)煴硎境绺叩木匆夂椭孕牡母兄x!</p><p> 三年的大學(xué)生活就快走入尾聲,我們的校園生活就要?jiǎng)澤暇涮?hào),心中是無盡的難舍與眷戀。從這里走出,對(duì)我的人生來說,將是踏上一個(gè)新的征程,要把所學(xué)的知識(shí)應(yīng)用到實(shí)際工作中去?;厥兹辏〉昧诵┰S成績(jī),生活中有快樂也有艱辛。首先我們要感謝母校對(duì)我三年培養(yǎng),在這
104、三年里,我學(xué)到了很多的專業(yè)知識(shí),也感悟到了很多受益匪淺的人生哲理,那更是能讓我們終生享用的一筆財(cái)富。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]林信良.java學(xué)習(xí)筆記.北京:清華大學(xué)出版社,2007年</p><p> [2]張海藩.軟件工程導(dǎo)論.北京:清華大學(xué)出版社,2008年</p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Android系統(tǒng)上實(shí)現(xiàn)二維條形碼識(shí)別.pdf
- 基于二維條形碼的數(shù)字水印技術(shù).pdf
- 二維條形碼識(shí)別系統(tǒng)研究與設(shè)計(jì).pdf
- 二維條形碼手機(jī)識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 二維條形碼編譯碼原理與應(yīng)用研究.pdf
- PDF417二維條形碼編解碼的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 面向二維條形碼的數(shù)字水印技術(shù)研究.pdf
- 在智能手機(jī)上實(shí)現(xiàn)二維條形碼識(shí)別.pdf
- 條形碼生成軟件如何設(shè)計(jì)漸變色條形碼
- 條形碼
- PDF417二維條形碼的讀取和識(shí)別技術(shù).pdf
- 二維條形碼在機(jī)關(guān)公文管理中的應(yīng)用.pdf
- 二維條形碼pdf417識(shí)別及其單片機(jī)實(shí)現(xiàn)
- 人臉檢測(cè)技術(shù)在二維條形碼(QR碼)中的應(yīng)用.pdf
- 二維條形碼編碼與譯碼技術(shù)的計(jì)算機(jī)實(shí)現(xiàn).pdf
- 二維條形碼PDF417識(shí)別及其單片機(jī)實(shí)現(xiàn).pdf
- 圖像壓縮在二維條形碼PDF417存儲(chǔ)中的應(yīng)用.pdf
- 基于Hough變換矩形檢測(cè)的二維條形碼識(shí)別系統(tǒng).pdf
- 申請(qǐng)資料條形碼
- Data Matrix二維條形碼圖像預(yù)處理及識(shí)別技術(shù)研究.pdf
評(píng)論
0/150
提交評(píng)論