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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論