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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  畢 業(yè) 設(shè) 計(jì)</b></p><p>  ( 2013 屆 )</p><p>  題 目 基于手持設(shè)備的二維碼圖像的生成與識(shí)別 </p><p>  學(xué) 院 物理電氣信息學(xué)院 </p><p>  專 業(yè) 通信工程 </p>

2、;<p>  年 級(jí) </p><p>  學(xué)生學(xué)號(hào) </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)老師 </p><p><b>  摘 要&

3、lt;/b></p><p>  近幾年,在智能手機(jī)系統(tǒng)群雄紛爭(zhēng)的時(shí)候,2008年Google推出了一款名為Android的開源智能手機(jī)操作系統(tǒng),受到廣大手機(jī)生產(chǎn)商的重視。對(duì)于二維碼技術(shù)而言,我國對(duì)二維碼這一技術(shù)的需求與日俱增。目前,二維碼技術(shù)在食品質(zhì)量追溯上的使用已越來越廣泛,借助二維碼溯源系統(tǒng),可以實(shí)現(xiàn)食品生產(chǎn)、流通及消費(fèi)的全過程監(jiān)控。因此,基于手機(jī)平臺(tái)的二維碼識(shí)別系統(tǒng)及應(yīng)用的研究,無論是在理論上還是在

4、實(shí)踐中都具有十分重要的意義。</p><p>  本文是基于Android環(huán)境下完成二維碼生成和識(shí)別功能。首先對(duì)Android開發(fā)環(huán)境、組成與架構(gòu)以及Android SDK 和Eclipse開發(fā)工具進(jìn)行了介紹;其次介紹了二維碼技術(shù)的認(rèn)識(shí),主要是從二維碼技術(shù)特點(diǎn)、二維碼溯源系統(tǒng)和二維碼的應(yīng)用前景這幾個(gè)方面進(jìn)行了介紹,突出了二維碼技術(shù)的優(yōu)勢(shì)以及在溯源系統(tǒng)中的重要性;接著分析了QR Code二維碼的結(jié)構(gòu)、標(biāo)準(zhǔn)及編解碼過

5、程,在對(duì)這個(gè)所設(shè)計(jì)的二維碼全面了解之后,重點(diǎn)的對(duì)基于Android系統(tǒng)的二維碼生成以及識(shí)別的過程展開設(shè)計(jì)。</p><p>  關(guān)鍵詞:Android; 二維碼技術(shù); QR Code; 二維碼生成; 二維碼識(shí)別</p><p><b>  ABSTRACT</b></p><p>  In recent years, under the int

6、elligent mobile phone system warlords disputing, Google developed an open source operating system of intelligent mobile phone which we call it the Android system, attracted manufacturers’ attention, in 2008 years. For th

7、e two-dimensional code technology, we need of the 2D code technique has been more and more widely, used in food quality traceability, we can realize the food production, circulation and consumption of the whole process m

8、onitoring. So the study of des</p><p>  This article is mainly talk about that to complete the production and recognition of two dimension bar-code based on the Android environment. First, it is the introduc

9、tion of the Android development environment, composition, construction ,Android SDK and Eclipse development tool. Next, the introduction of two dimension bar-code technology, mainly focused on the special characteristics

10、, tracing system ,application prospect of two dimension bar-code, highlighted the superiority and the importance </p><p>  Key Words:Android; 2D Code; QR Code; 2D Code generation; 2D Code recognition</p

11、><p><b>  目 錄</b></p><p><b>  第一章 緒論1</b></p><p>  1.1研究背景與意義1</p><p>  1.2國內(nèi)外發(fā)展現(xiàn)狀2</p><p>  1.2.1國內(nèi)發(fā)展歷史2</p><p>  

12、1.2.2國外發(fā)展歷史4</p><p>  1.3 研究內(nèi)容6</p><p>  第二章 開發(fā)環(huán)境8</p><p>  2.1 Android開發(fā)平臺(tái)9</p><p>  2.1.1 Android平臺(tái)的組成9</p><p>  2.1.2 Android系統(tǒng)的架構(gòu)9</p><

13、;p>  2.1.3 Android系統(tǒng)的應(yīng)用程序組件11</p><p>  2.1.4 Android系統(tǒng)的應(yīng)用程序舉例12</p><p>  2.2 開發(fā)工具(Eclipse、Android SDK、)13</p><p>  第三章 二維碼的生成21</p><p>  3.1 QR code 的簡介21</p

14、><p>  3.1.1 QR Code 的結(jié)構(gòu)與特性21</p><p>  3.1.2 QR Code 的標(biāo)準(zhǔn)23</p><p>  3.1.3 QR Code 的編碼及譯碼過程23</p><p>  3.2 基于Android系統(tǒng)的QR碼生成25</p><p>  第四章 二維碼識(shí)別系統(tǒng)的實(shí)現(xiàn)27&

15、lt;/p><p>  4.1 開源利器-----zxing27</p><p>  4.2 基于zxing的二維碼識(shí)別28</p><p>  4.3 源碼系統(tǒng)分析29</p><p>  第五章 總結(jié)與展望34</p><p><b>  感謝語35</b></p>&l

16、t;p><b>  參考文獻(xiàn):36</b></p><p><b>  附錄138</b></p><p><b>  附錄239</b></p><p><b>  第一章 緒論</b></p><p>  二維碼(2-dimensional

17、 code)作為一種信息存儲(chǔ)和傳遞技術(shù),是按照特定的編碼規(guī)則形成的平面幾何圖形[1-4]。二維碼能夠在橫向和縱向兩個(gè)方位同時(shí)表達(dá)信息。它具有存儲(chǔ)容量大、可靠性高、保密防偽性強(qiáng)、成本低等優(yōu)點(diǎn),可以用來存儲(chǔ)多國文字、數(shù)據(jù)文件、圖像等信息。</p><p>  隨著3G時(shí)代的來臨,手機(jī)二維碼的應(yīng)用越來越豐富[5-8]。Android系統(tǒng)作為目前最為流行的智能手機(jī)平臺(tái),其與二維碼技術(shù)的結(jié)合時(shí)二維碼信息已各類業(yè)務(wù)的形式在手

18、機(jī)中存貯、閱讀和傳播。手機(jī)既可以作為二維碼信息的載體結(jié)合二維碼識(shí)讀設(shè)備加以應(yīng)用,也可以在手機(jī)中內(nèi)置或下載二維碼識(shí)讀引擎來識(shí)讀商品上的二維碼標(biāo)識(shí),從而獲取二維碼內(nèi)隱含的有效信息來進(jìn)行相關(guān)應(yīng)用的開發(fā)。</p><p>  在許多種類的二維碼中,常用的又:Data Matrix, Maxi Code, Aztec.QR Code,Vericode,PDF417,Utracode.Code 49,Code 16K等[9]

19、。其中快速響應(yīng)碼(Quick Response code,QR碼)[10-11]是應(yīng)用最為成功的一種二維碼,QR碼是一種矩陣式二維碼,信息容量大,一張條碼可以放入1817個(gè)漢字,或7089個(gè)數(shù)字,或4200個(gè)英文字母;支持字母、數(shù)字、漢字、照片、指紋、音/視頻等信息嵌入。跟其他二維碼相比,QR碼具有識(shí)讀速度快、數(shù)據(jù)密度大、占地空間小的優(yōu)勢(shì).把QR碼運(yùn)用在手機(jī)平臺(tái)上,開發(fā)基于Android手機(jī)系統(tǒng)的二維碼生成和識(shí)別系統(tǒng)具有重要的理論意義和

20、實(shí)際價(jià)值。</p><p>  1.1研究背景與意義</p><p>  近幾年,在智能手機(jī)系統(tǒng)群雄紛爭(zhēng)的時(shí)候,2008年Google推出了一款名為Android的開源智能手機(jī)操作系統(tǒng)。Android憑借其開放性和良好的人機(jī)界面,受到廣大手機(jī)生產(chǎn)商的重視。目前手機(jī)數(shù)量已大大超過傳統(tǒng)PC機(jī)的數(shù)量,手機(jī)上網(wǎng)將變得越來越方便和普及,Android對(duì)3G的良好支持使得Android在網(wǎng)絡(luò)方面的優(yōu)勢(shì)

21、更為突出。由于Android基于Linux內(nèi)核且具有開源免費(fèi)的特性[12],它迅速得到廣大愛好者以及許多廠商的支持。同時(shí)Android開源智能操作系統(tǒng)在物聯(lián)網(wǎng)的應(yīng)用中有著廣泛的應(yīng)用前景[13]。</p><p>  二維碼是一個(gè)跨媒體的通道,不管是報(bào)紙、雜志、戶外、液晶媒體等只要在上面有一個(gè)二維碼,就可以通過二維碼來跟人互動(dòng),獲取更多的信息。二維碼與手機(jī)的結(jié)合能夠?yàn)槲覀儙砣魏螘r(shí)間、任何地點(diǎn),通過任何媒介獲取任何

22、內(nèi)容。在日本和韓國,超過8成的手機(jī)用戶通過手機(jī)“掃碼上網(wǎng)”和購買電子票據(jù),給人們的日常生活帶來了極大的便利。近年來,在國內(nèi)也得到了快速的發(fā)展,并在多個(gè)行業(yè)成功應(yīng)用,如:張學(xué)友07北京演唱會(huì)二維碼電子票;上海世博手機(jī)門票等[14]。</p><p>  手機(jī)二維碼是二維碼技術(shù)在手機(jī)上的應(yīng)用,將手機(jī)需要訪問、使用的信息編碼到二維碼中,利用手機(jī)的攝像頭識(shí)讀。利用手機(jī)二維碼上網(wǎng),為你省去了為手機(jī)上網(wǎng)輸入冗長的網(wǎng)址,手機(jī)用

23、戶只需通過掃描二維碼下面的號(hào)碼或關(guān)鍵字即可上網(wǎng),隨時(shí)下載如圖文、音樂、視頻、獲取優(yōu)惠劵、參與抽獎(jiǎng)、了解企業(yè)產(chǎn)品信息等。同時(shí),還可以方便地用手機(jī)自動(dòng)輸入短信、識(shí)別和存儲(chǔ)名片,實(shí)現(xiàn)電子地圖查詢定位,獲取公共服務(wù)(如天氣預(yù)報(bào))等多種功能。二維碼業(yè)務(wù)為商家構(gòu)筑自己的WAP平臺(tái)提供了可能,為其他媒體提供了一個(gè)與用戶隨時(shí)隨地溝通的方式。商家或媒體可以搭建自己的WAP網(wǎng)站,用戶對(duì)相應(yīng)的二維碼進(jìn)行掃描后即可獲取更為生動(dòng)而豐富的內(nèi)容。</p>

24、<p>  1.2國內(nèi)外發(fā)展現(xiàn)狀</p><p>  1.2.1國內(nèi)發(fā)展歷史</p><p>  2004年中國移動(dòng)在內(nèi)部交流大多會(huì)將手機(jī)條碼業(yè)務(wù)提上議事日程,當(dāng)時(shí)采用的還是來自NTT Do Co Mo的條碼手機(jī)產(chǎn)品。2005年開始在湖南長沙、上海試點(diǎn)手機(jī)二維碼業(yè)務(wù):長沙主要是與麥當(dāng)勞合作進(jìn)行手機(jī)二維碼折扣劵的試點(diǎn)工作(接入行業(yè)應(yīng)用):國內(nèi)兩大移動(dòng)電話營業(yè)商不斷探索二維碼的發(fā)

25、展應(yīng)用,為手機(jī)二維碼業(yè)務(wù)的善及和推廣做出了積極的貢獻(xiàn)。中國聯(lián)通公司于2006年5月推出國內(nèi)第一款條碼手機(jī)ET980:中國移動(dòng)公司于2006年8月推出手機(jī)二維碼應(yīng)用條碼識(shí)別業(yè)務(wù),并且與多家手機(jī)二維碼解決方案提供商進(jìn)行了合作。這都極大的促進(jìn)了手機(jī)二維碼業(yè)務(wù)的發(fā)展。自此,手機(jī)二維碼不斷出現(xiàn)在各大媒體網(wǎng)站中,成為電信領(lǐng)域關(guān)注的焦點(diǎn)。</p><p>  手機(jī)二維碼在國內(nèi)的應(yīng)用現(xiàn)狀</p><p>

26、  手機(jī)二維碼在日本和韓國應(yīng)用時(shí)間較早,使用的人群多,在很多行業(yè)得到了廣泛的應(yīng)用。雖然國內(nèi)起步晚,但近3你那發(fā)展勢(shì)頭迅速,目前有八大類應(yīng)用經(jīng)過市場(chǎng)初步檢驗(yàn)已趨于成熟,醬紫啊今后的市場(chǎng)中進(jìn)一步得到完善和推廣[15]。</p><p>  移動(dòng)訂票 中國第一張電子電影票2005年由翼碼信息推出,這種形式將傳統(tǒng)票變成電子票,將物流變成電子流,在節(jié)省成本的同時(shí),提高了效率。</p><p>  

27、積分兌換 采用手機(jī)二維碼的積分兌換方式后,用戶可以隨時(shí)隨地提出兌換申請(qǐng),并到就近的兌換點(diǎn)兌換禮品。</p><p>  電子VIP 以二維碼VIP電子卡代替?zhèn)鹘y(tǒng)實(shí)體VIP卡,VIP客戶只要攜帶手機(jī),就可以享受服務(wù)。目前全球通VIP易登機(jī)的系統(tǒng)已經(jīng)在全國除港澳臺(tái)地區(qū)的62家主要機(jī)場(chǎng)安裝完畢。</p><p>  電子折扣劵 電子折扣劵得以實(shí)現(xiàn)無紙化,直接發(fā)掉用戶手機(jī)中,使用者只需攜帶手

28、機(jī)即可享受餐飲、娛樂、旅游、百貨購物的各種折扣優(yōu)惠。</p><p>  電子提貨劵 用電子憑證的形式替代傳統(tǒng)的提貨卷,條碼憑證已廣泛應(yīng)用到實(shí)物營銷、實(shí)物派送等方面,大大方便了商家和消費(fèi)者。</p><p>  自助充值機(jī) 乘客購買電子客票后,登錄相關(guān)網(wǎng)站,輸入身份證號(hào)機(jī)航班等信息,便可以自行選擇作為,完成自助值機(jī)。之后,乘客只需帶著手機(jī)在機(jī)場(chǎng)專用自助設(shè)備掃描換取實(shí)體的登機(jī)牌,就可通過

29、安檢并登記。能夠更好的體驗(yàn)查詢、訂票、登記一站式的輕松。 </p><p>  電子導(dǎo)診 用戶可以通過手機(jī)終端預(yù)約掛號(hào),憑二維碼電子憑證在預(yù)約時(shí)間前往醫(yī)院直接取號(hào),大大減少了排隊(duì)掛號(hào)、候診的時(shí)間,為用戶提供了一種新型的就醫(yī)模式。</p><p>  電子簽到 會(huì)議、展覽、活動(dòng)通知于簽到,用于企業(yè)訪客登記與安排。</p><p>  1.2.2國外發(fā)展歷史 <

30、;/p><p>  手機(jī)二維碼應(yīng)用主要包括以下幾種形式。移動(dòng)支付:手機(jī)的支付一般是通過手機(jī)錢包來實(shí)現(xiàn)的,手機(jī)錢包可以當(dāng)作現(xiàn)金、儲(chǔ)蓄卡、保管柜鑰匙、火車票等。如今,越來越多的功能都匯聚到手機(jī)錢包的功能中,這給用戶帶來了極大的便利。手機(jī)支付是手機(jī)二維碼最典型的應(yīng)用,二維碼被廣泛地應(yīng)用于不同的支付方式中。例如,日本的NTT DoCoMo公司采用二維碼技術(shù)來實(shí)現(xiàn)移動(dòng)支付,用戶可以通過二維碼在便利店中支付手機(jī)賬單。賬單信息會(huì)被

31、儲(chǔ)存在二維碼中,并可以通過i-mode的計(jì)費(fèi)中心下載到用戶的移動(dòng)終端上。二維碼還可以處理更復(fù)雜的信息,商店收費(fèi)處的掃描器可以讀取包含計(jì)費(fèi)信息的二維碼,用戶可以直接支付現(xiàn)金給收費(fèi)處。交易的信息則通過收費(fèi)處傳送回計(jì)費(fèi)中心。</p><p>  電子票務(wù):電子票務(wù)也是二維碼的典型應(yīng)用,該應(yīng)用需要結(jié)合售票單位的網(wǎng)站、售票信息發(fā)布平臺(tái)共同完成。消費(fèi)者如果有購票的需求,可通過上網(wǎng)等方式查找相關(guān)的票務(wù)信息,然后可根據(jù)相關(guān)信息發(fā)

32、短信至售票系統(tǒng),再按提示進(jìn)行手機(jī)支付。支付完成后,售票系統(tǒng)會(huì)把電子票以二維碼的形式發(fā)送到購票者手機(jī)中,完成購票流程。</p><p>  日本最大的航空公司日航就提供移動(dòng)票務(wù)服務(wù)。顧客不僅可以通過手機(jī)或互聯(lián)網(wǎng)購買客票,還能通過讀卡器識(shí)別手機(jī)上的代碼,完成檢票并獲得登機(jī)牌。日航還在機(jī)場(chǎng)各處安裝讀卡器,用戶可以使用手機(jī)或卡在機(jī)場(chǎng)商店中消費(fèi)航程積分。在使用FeliCa手機(jī)的用戶中,60%的用戶每周至少會(huì)使用一次支付功能

33、。</p><p>  韓國首爾龍山驛高速鐵路車站的電影院也應(yīng)用了二維碼來替代傳統(tǒng)的售票方式。其具體做法是,觀眾用手機(jī)到電影院的網(wǎng)站上下載儲(chǔ)存有座位號(hào)等信息的二維碼,在進(jìn)入電影院時(shí)只需將手機(jī)二維碼掃入讀碼器即可入場(chǎng),票款再通過移動(dòng)支付的方式扣除,完全實(shí)現(xiàn)了無紙化作業(yè)。</p><p>  二維碼的識(shí)讀應(yīng)用:識(shí)讀應(yīng)用也是二維碼的重要應(yīng)用之一,主要用于平面介質(zhì)上。消費(fèi)者可以利用照相手機(jī)內(nèi)建的讀

34、碼軟件,輕輕對(duì)準(zhǔn)平面雜志或是海報(bào)上的二維碼一拍,就可以將二維碼圖形立即轉(zhuǎn)化為文字,或是連接到相關(guān)網(wǎng)址,更方便地實(shí)現(xiàn)手機(jī)上網(wǎng)或內(nèi)容下載。</p><p>  2003年,日本電信運(yùn)營商KDDI首先推出手機(jī)二維碼業(yè)務(wù)。比如,在一張CD或者DVD光盤上,通過手機(jī)識(shí)別二維碼來了解光盤的內(nèi)容;在旅游景點(diǎn)配合GPS快速定位等。其后不久,韓國與中國臺(tái)灣也開始陸續(xù)推出自己的手機(jī)條碼業(yè)務(wù)?,F(xiàn)在,在日本、韓國和中國臺(tái)灣,手機(jī)條碼已經(jīng)

35、隨處可見。除了雜志和報(bào)紙,二維條碼還被印在名片、戶外廣告牌、優(yōu)惠券和產(chǎn)品包裝等介質(zhì)之上。</p><p>  在二維碼的識(shí)讀應(yīng)用方面,韓國做得也比較成功,他們?cè)诖髮W(xué)的圖書館中就安裝了讀取二維碼信息的讀碼器。學(xué)生進(jìn)入圖書館時(shí),只需打開手機(jī),調(diào)出手機(jī)上存儲(chǔ)的二維碼,然后將手機(jī)屏幕靠近讀碼器,便可將個(gè)人信息傳到圖書館的電腦中進(jìn)行身份識(shí)別,識(shí)別無誤就可以進(jìn)入圖書館,整個(gè)過程只需要幾秒鐘。這種二維碼識(shí)別方式已經(jīng)替代了原先必

36、須檢驗(yàn)學(xué)生證的傳統(tǒng)方式。此外,圖書館借閱廳的電腦系統(tǒng)也與二維碼讀碼器實(shí)現(xiàn)了連接。學(xué)生只要將手機(jī)上用于身份識(shí)別的二維碼掃入讀碼器,便可在旁邊的電腦上查閱自己的圖書借閱情況。</p><p>  防偽功能:二維條碼具有多重防偽特性,它可以采用密碼防偽、軟件加密及利用所包含的信息如指紋、照片等進(jìn)行防偽,因此具有極強(qiáng)的保密防偽性能。</p><p>  在韓國的大學(xué)中,為了杜絕冒充別人出勤,學(xué)校專

37、門在教室中安裝了讀取二維碼信息的讀碼器。每個(gè)學(xué)生在進(jìn)入階梯教室時(shí),都需要用儲(chǔ)存有個(gè)人信息二維碼的手機(jī)或磁卡進(jìn)行掃碼。然后,教師即可根據(jù)這些信息得知學(xué)生的出勤情況。由于每個(gè)人的二維碼都具有唯一性,因此這種方式有效杜絕了冒充別人出勤。</p><p><b>  手機(jī)二維碼市場(chǎng)現(xiàn)狀</b></p><p>  從全球的二維碼市場(chǎng)來看,亞洲發(fā)展最好,目前亞洲地區(qū)已經(jīng)有7個(gè)國

38、家、地區(qū)開始提供二維碼業(yè)務(wù)(如表2所示)。而日本、韓國兩國最好,截至2006年日本已經(jīng)有6000萬用戶使用二維碼,對(duì)二維碼的認(rèn)知度已經(jīng)高達(dá)96%,在NTTDoCoMo推出的手機(jī)中將有超過90%具有二維碼識(shí)別功能。韓國也達(dá)到近2000萬用戶,而且新出廠的手機(jī)90%都帶著掃碼工具。</p><p>  日本是最早開始使用二維碼的國家。目前市場(chǎng)上已有很成熟的QR手機(jī)二維碼市場(chǎng)應(yīng)用,QR條形碼在日本得到相當(dāng)規(guī)模的應(yīng)用,日

39、本的海報(bào)、游覽手冊(cè)、傳單、折扣券、電子票證,甚至連樹上都貼著二維碼,成為日本手機(jī)用戶登錄網(wǎng)站以及獲得廣告商品信息的非常便捷的方式。近幾年來,日本二維碼手機(jī)市場(chǎng)的占有率在逐年上升,從2002年的0.8%上升到了2005年的52.6%,2006年日本二維碼手機(jī)市場(chǎng)占有率達(dá)到70%左右,如圖1所示。日本手機(jī)二維碼的運(yùn)營模式是開放的,二維碼掃描是手機(jī)上的一項(xiàng)功能,而不是運(yùn)營商提供的一種服務(wù)。二維碼的技術(shù)商將解碼軟件提供給運(yùn)營商后,按手機(jī)的裝機(jī)量

40、收取版權(quán)費(fèi),運(yùn)營商則將軟件的解碼完全公開,用戶可以進(jìn)行任意編碼。</p><p>  DM碼是韓國主流的二維碼標(biāo)準(zhǔn)。截至2006年,韓國的二維碼用戶普及率已高達(dá)50%左右,韓國的二維碼運(yùn)營模式被證明是成功的模式。韓國的鈴聲下載和游戲已成最熱門DM讀碼服務(wù)。如今,許多的游戲廠商和內(nèi)容提供商,每天都會(huì)在報(bào)紙上刊出不同服務(wù)的二維條碼,讓消費(fèi)者更快去找到使用的內(nèi)容。韓國的二維碼運(yùn)營模式也是由運(yùn)營商主導(dǎo)的,但是與日本不同的

41、是,韓國的二維碼專利權(quán)益是推動(dòng)該市場(chǎng)的主要?jiǎng)恿?。各個(gè)電信運(yùn)營商為了爭(zhēng)取到更多的權(quán)益,都開發(fā)了自己的碼制,雖然這樣的模式會(huì)推動(dòng)韓國二維碼的快速發(fā)展,但這種模式使二維碼的競(jìng)爭(zhēng)更加激烈,可能會(huì)給市場(chǎng)的大規(guī)模推廣造成困難。  在歐洲,DM二維碼已在德國、烏克蘭、奧地利、瑞士、意大利等國家應(yīng)用,特別時(shí)足球賽門票銷售已經(jīng)廣泛使用手機(jī)二維碼購買電子票。英國已計(jì)劃在2010年推出手機(jī)二維碼登機(jī)牌。屆時(shí)乘客不需要機(jī)票和登機(jī)牌,只要用手機(jī)上的登機(jī)二維碼

42、掃描即可登機(jī)。</p><p><b>  1.3 研究內(nèi)容</b></p><p>  系統(tǒng)主要分為兩個(gè)大的模塊:二維碼的生成和二維碼的識(shí)別。二維碼的生成主要就是基于 Winnows 上的開發(fā)工具Netbeans 開發(fā),而同時(shí)又開發(fā)一個(gè)在 Android 平臺(tái)下的二維碼生成。而二維碼的識(shí)別主要就是基于 Android 平臺(tái)來開發(fā), 主要就是運(yùn)用 Android SD

43、K 和 Eclipse 共同開發(fā),但是環(huán)境需要搭建。</p><p>  本系統(tǒng)研究主要包括以下內(nèi)容:要分成生成和識(shí)別兩大部分。</p><p>  識(shí)別功能主要就是對(duì)二維碼和條形碼的識(shí)別。主要就是通過手機(jī)的攝像頭對(duì)二維碼或者是條形碼進(jìn)行掃描,然后把把掃描到的二維碼或者是條形碼送到后臺(tái)進(jìn)行解析,如果解析成功后,就不再進(jìn)行掃描。如果解析不成功,就會(huì)在進(jìn)行掃描采集圖像,在傳到后臺(tái)解析,直到能夠

44、識(shí)別圖像為止 。 生成功能主要就是對(duì)二維碼的生成。而生成這個(gè)功能可以在電腦上運(yùn)行生成,也可以在手機(jī)上運(yùn)行生成。二維碼的生成主要支持名片、短信、文本、電子郵件及網(wǎng)絡(luò)書簽的生成。當(dāng)用戶選擇好多要生成的對(duì)象時(shí),就會(huì)把用戶輸入的信息送到后 臺(tái),通過調(diào)用解析包,來生成還有相應(yīng)信息的二維碼。</p><p><b>  第二章 開發(fā)環(huán)境</b></p><p>  二維碼的生成主

45、要設(shè)計(jì)的是在電腦上運(yùn)行的桌面程序。通過在電腦上開發(fā)一個(gè) Java 程序來生成二維碼。其開發(fā)環(huán)境主 要如下表</p><p>  表 1 Windows 平臺(tái)上開發(fā)使用的環(huán)境</p><p>  二維碼的識(shí)別和生成是在 Android 平臺(tái)上的開發(fā)的,并使用 Eclipse IDE 工具進(jìn)行開發(fā)的。Eclipse IDE 安裝 ADT 插件搭建了很好的 Android 開發(fā)平臺(tái),方便與編

46、程。至于識(shí)別的功能要用到攝像頭,虛擬機(jī)上面是沒有攝像頭的,這就需要有 真機(jī)進(jìn)行二維碼的識(shí)別測(cè)試。Android 平臺(tái)開發(fā)環(huán)境如下表:</p><p>  Android 平臺(tái)開發(fā)使用的環(huán)境:</p><p>  2.1 Android開發(fā)平臺(tái)</p><p>  2.1.1 Android平臺(tái)的組成</p><p>  Android不僅是一

47、種用于移動(dòng)終端設(shè)備的操作系統(tǒng),更是一個(gè)開源的體系架構(gòu)。它大量應(yīng)用了開源社區(qū)的各項(xiàng)成果,并針對(duì)移動(dòng)設(shè)備進(jìn)行了充分優(yōu)化。Android系統(tǒng)主要包含以下功能組件[16]:</p><p>  (1)經(jīng)Google針對(duì)移動(dòng)設(shè)備裁剪和優(yōu)化的Linux內(nèi)核;</p><p>  (2)由Google重新實(shí)現(xiàn)的Java虛擬機(jī)Dalvik VM;</p><p> ?。?)大量的函

48、數(shù)庫和服務(wù),如瀏覽器引擎WebKit,數(shù)據(jù)庫SQLite;</p><p> ?。?)常用的應(yīng)用程序,如撥號(hào)程序和通訊錄等;</p><p> ?。?)一套完整的SDK(Software Development Kit),提供了使用Java語言進(jìn)行Android應(yīng)用開發(fā)的API類庫和工具集(包括Android模擬器和Eclipse IDE下的開發(fā)工具插件以及一組用于在模擬器和終端設(shè)備上打包

49、、安裝、調(diào)試和測(cè)試應(yīng)用程序的工具);</p><p> ?。?)經(jīng)過優(yōu)化的輕量級(jí)2D和3D圖形引擎,用于支持各種游戲的開發(fā);</p><p> ?。?)提供常見音頻、視頻和圖片格式支持的底層多媒體庫;</p><p> ?。?)用于支持GSM藍(lán)牙、3G 、WiFi、攝像頭、GPS和各種輸入設(shè)備的驅(qū)動(dòng)。</p><p>  2.1.2 Andr

50、oid系統(tǒng)的架構(gòu)</p><p>  Android操作系統(tǒng)自頂向下分為4層,分別為應(yīng)用層、應(yīng)用框架層、函數(shù)庫和虛擬機(jī)層以及內(nèi)核層[17],結(jié)構(gòu)框架圖如圖2-1所示:</p><p>  圖2-1 Android系統(tǒng)架構(gòu)</p><p> ?。?)應(yīng)用層(Application)</p><p>  這是架構(gòu)的最上面一層,開發(fā)者可以用Jav

51、a語言來開發(fā)各種富有創(chuàng)意的應(yīng)用程序。應(yīng)用層提供了一系列核心應(yīng)用程序,包括郵件客戶端、SMS(短信)、日歷、Google地圖、Web瀏覽器(Browser)和通訊錄(Contacts) 等。這一層所有(包括開發(fā)人員自己開發(fā)的) 應(yīng)用程序都是使用Java語言編寫的。值得一提的是,這些應(yīng)用程序可以同時(shí)執(zhí)行,比如用戶可以一邊聽音樂一邊閱讀郵件。</p><p> ?。?)應(yīng)用框架層(Application Framewo

52、rk)</p><p>  這層包含了各種組件,并且這些組件具有可重用性及可替換性。Android應(yīng)用框架為開發(fā)人員方便地編寫,該平臺(tái)的應(yīng)用程序提供了標(biāo)準(zhǔn)的結(jié)構(gòu)和功能組件。借助于應(yīng)用框架,應(yīng)用程序可以方便和安全地訪問系統(tǒng)功能和其他應(yīng)用程序所公布的功能,也可以公布自己的功能供其他應(yīng)用程序使用。應(yīng)用框架主要提供了以下組件和服務(wù):</p><p> ?、儇S富及可擴(kuò)展的視圖(Views):即一系列

53、用于構(gòu)建友好用戶界面的可視化對(duì)象或控件,如列表、文本框、按鈕和菜單等。</p><p>  ②內(nèi)容提供器(Content Providers):為應(yīng)用程序提供數(shù)據(jù)或?qū)崿F(xiàn)應(yīng)用程序間數(shù)據(jù)的共享。</p><p> ?、圪Y源管理器(Resources Manager):提供對(duì)非代碼資源的訪問和管理,包括字符串、圖形和界面布局等。</p><p> ?、芡ㄖ芾砥鳎∟oti

54、fication Manager):使應(yīng)用程序可以在不中斷用戶的情況下通知用戶特定的事件。如音樂播放器在后臺(tái)運(yùn)行時(shí),可以在狀態(tài)欄通知用戶當(dāng)前正在播放的歌曲名稱。</p><p>  ⑤活動(dòng)管理器(Activity Manager):管理應(yīng)用程序的生命周期,并提供導(dǎo)航回退功能。</p><p> ?、尬恢霉芾砥鳎↙ocation Manager ):使應(yīng)用程序可以訪問移動(dòng)設(shè)備的當(dāng)前地理位置信

55、息,從而實(shí)現(xiàn)類似GPS導(dǎo)航的功能。</p><p> ?。?) 函數(shù)庫層(Libraries)</p><p>  Android包含了一套C/C++函數(shù)庫,用以支持操作系統(tǒng)為應(yīng)用程序提供的所有功能,主要包括Surface Manager、Media Framework、WebKit、SGL、Free Type、SQLite等。這些函數(shù)庫通常由移動(dòng)設(shè)備生產(chǎn)商編譯為針對(duì)特定硬件平臺(tái)的內(nèi)部機(jī)器

56、碼,安裝在相應(yīng)的移動(dòng)設(shè)備中。應(yīng)用程序不能直接使用這些函數(shù)庫,必須借助于應(yīng)用框架組件和API間接地訪問這些底層函數(shù)庫的功能。</p><p> ?。?)運(yùn)行時(shí)環(huán)境(Runtime)</p><p>  Android運(yùn)行時(shí)環(huán)境由Java核心庫和Dalvik虛擬機(jī)構(gòu)成。Dalvik虛擬機(jī)是Google針對(duì)移動(dòng)設(shè)備對(duì)Java虛擬機(jī)的重新實(shí)現(xiàn),可支持多個(gè)虛擬機(jī)實(shí)例的高效運(yùn)行。每個(gè)Android應(yīng)用

57、程序都擁有自己的進(jìn)程空間和一個(gè)獨(dú)立的虛擬機(jī)實(shí)例,因此,Android可以高效地同時(shí)運(yùn)行多個(gè)應(yīng)用程序。Dalvik虛擬機(jī)執(zhí)行后綴為.dex的可執(zhí)行文件,這是一種專門針對(duì)小內(nèi)存設(shè)備優(yōu)化了的文件格式。同時(shí),Dalvik虛擬機(jī)是基于寄存器來實(shí)現(xiàn)方法調(diào)用的,所有類都由Java編譯器編譯(.calss文件),然后通過Android SDK中的dx工具轉(zhuǎn)換為.dex格式。Dalvik虛擬機(jī)借助于Linux內(nèi)核來實(shí)現(xiàn)線程和內(nèi)存的管理。</p>

58、;<p> ?。?) Linux內(nèi)核層(Linux Kernel)</p><p>  Android基于Linux 2.6內(nèi)核來提供操作系統(tǒng)的核心服務(wù),如進(jìn)程管理、內(nèi)存管理、安全機(jī)制、網(wǎng)絡(luò)通信和驅(qū)動(dòng)模型。內(nèi)核也作為硬件和其余軟件棧之間的一個(gè)抽象層。</p><p>  2.1.3 Android系統(tǒng)的應(yīng)用程序組件</p><p>  要進(jìn)行基于And

59、roid系統(tǒng)的移動(dòng)應(yīng)用程序的開發(fā),開發(fā)人員需要熟悉以下幾個(gè)基本組件[18]:</p><p>  活動(dòng)(Activity)</p><p>  活動(dòng)是構(gòu)成Android應(yīng)用程序的最常用組件,用來表示一個(gè)用戶界面,類似于Windows應(yīng)用程序中的窗口和對(duì)話框?;顒?dòng)在視圖(View)類的協(xié)助下為應(yīng)用程序提供用戶界面(UI)。視圖類可實(shí)現(xiàn)和包含各種UI元素,如文本框、便簽、按鈕和其他UI元素。一

60、個(gè)應(yīng)用程序可包含多個(gè)活動(dòng)來提供多個(gè)用戶界面。應(yīng)用程序可以調(diào)用startActivity()或者startSubActivity()方法來開始一個(gè)新活動(dòng)或切換到另外一個(gè)活動(dòng),方法的參數(shù)是一個(gè)Intent(意圖)對(duì)象,然后由操作系統(tǒng)決定哪個(gè)活動(dòng)最能滿足指定的Intent。</p><p>  意圖(Intent)</p><p>  Intent是Google引入的一個(gè)全新的應(yīng)用程序設(shè)計(jì)元素,

61、來描述用戶期望執(zhí)行或完成的特定動(dòng)作(Action),如“選擇一張圖片”、“輸入一段文字”、“拍攝一張照片”等??梢詫ntent看作是一個(gè)消息,以表示應(yīng)用程序間的一個(gè)功能請(qǐng)求,這可以有效地復(fù)用現(xiàn)有應(yīng)用程序的功能,顯著地提高應(yīng)用程序的開發(fā)效率。如當(dāng)用戶使用郵件客戶端編輯郵件的過程中需要插入一張圖片時(shí),郵件客戶端程序無須自己實(shí)現(xiàn)該功能,只需要?jiǎng)?chuàng)建一個(gè)Intent對(duì)象表示“選擇一張圖片”這一意圖,然后將其作為參數(shù)調(diào)用start Activit

62、y()即可,操作系統(tǒng)就會(huì)使用系統(tǒng)上安裝的圖片瀏覽程序供用戶瀏覽和選擇圖片。一個(gè)應(yīng)用程序可以通過向操作系統(tǒng)注冊(cè)Intent Filter來聲明自己有能力或者有興趣執(zhí)行特定的請(qǐng)求或Intent。</p><p> ?。?)服務(wù)(Service)</p><p>  服務(wù)就是運(yùn)行于“后臺(tái)”的任務(wù),不直接與用戶交互,因此沒有用戶界面。服務(wù)的生命周期要比活動(dòng)(Activity) 長,可長時(shí)間地運(yùn)行。

63、典型的應(yīng)用場(chǎng)景是,用戶在音樂播放器的用戶界面中選擇并播放歌曲后,便離開了該界面(Activity被終止) 去閱讀郵件,但他希望在閱讀郵件的過程中,能同時(shí)聽音樂。這種情況下,負(fù)責(zé)音樂播放任務(wù)那部分代碼就應(yīng)該在運(yùn)行于服務(wù)中。</p><p>  (4)內(nèi)容提供者(Content Provider)</p><p>  Content Provider提供了一種多個(gè)應(yīng)用程序共享和訪問數(shù)據(jù)的抽象機(jī)

64、制。將對(duì)數(shù)據(jù)的訪問抽象為Content Provider可以有效地控制多個(gè)應(yīng)用程序?qū)?shù)據(jù)的讀寫操作,避免訪問沖突,提高數(shù)據(jù)的安全性。Google提倡開發(fā)人員將需要共享的數(shù)據(jù)通過編寫相應(yīng)的Content Provider供其他應(yīng)用程序訪問,而不是將這些數(shù)據(jù)直接公開。</p><p>  2.1.4 Android系統(tǒng)的應(yīng)用程序舉例</p><p>  在了解Android系統(tǒng)的組成、架構(gòu)以及

65、應(yīng)用程序組件之后,接下來我們創(chuàng)建一個(gè)Android程序,進(jìn)一步了解這個(gè)系統(tǒng)。本次設(shè)計(jì)中的程序都是應(yīng)用Java語言編程,使用Eclipse IDE來進(jìn)行來開發(fā),并且在Android模擬器(AVD)上測(cè)試的,這個(gè)模擬器兼容Android SDK Starter Package中的Android Platform的版本(開發(fā)環(huán)境為Android SDK 2.3.3)。</p><p>  本節(jié)首先新建一個(gè)Android

66、項(xiàng)目,并新創(chuàng)建一個(gè)Hello World程序,利用Android模擬器來運(yùn)行程序。打開Eclipse IDE后,啟動(dòng)AVD(Android Virtual Devices),運(yùn)行畫面就如同真的手機(jī)開機(jī)操作一樣,如圖2-2(a)所示,開機(jī)之后,隨即打開創(chuàng)建好的“Hello World”程序,如圖2-2(b)所示。</p><p> ?。╝) (b)</p>

67、<p>  圖2-2 已創(chuàng)建的“Hello World”程序</p><p>  要退出被打開的被打開的“Hello World”程序,可以按下手機(jī)模擬器上的退格鍵,如圖2-3所示。</p><p>  圖2-3 按下退格鍵離開程序,回到手機(jī)的桌面</p><p>  雖然程序沒有寫,但向?qū)s已經(jīng)幫著寫好了程序進(jìn)入點(diǎn)、布局配置和應(yīng)用程序訪問權(quán)限等,為第四章

68、的設(shè)計(jì)做好了準(zhǔn)備工作。</p><p>  2.2 開發(fā)工具(Eclipse、Android SDK、)</p><p>  Java JDK下載:</p><p>  進(jìn)入該網(wǎng)頁: http://java.sun.com/javase/downloads/index.jsp (或者直接點(diǎn)擊下載)如下圖: </p><p>

69、;  選擇 Download JDK 只下載JDK,無需下載jre. 安裝完成后,</p><p>  進(jìn)入 我的電腦 -> 高級(jí) -> 環(huán)境變量 -></p><p>  在 JAVA_HOME 的變量,值為:C:\...\java\jdk1.6.(不是JRE的路徑).</p><p>  在新建classpath 的變量,值為:</p&

70、gt;<p>  .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool.jar</p><p>  修改原有 path 變量,在最后面增加:;%JAVA_HOME%\bin(%之前的分號(hào)需要)</p><p>  下載Android SDK</p><p><b>  下載地址:</b><

71、;/p><p>  http://developer.android.com/sdk/index.html</p><p><b>  下載版本:</b></p><p>  Android-sdk_r12-windows</p><p>  下載完成解壓縮后運(yùn)行SDK Manager.Exe</p><

72、p>  SDK Manager.Exe</p><p>  會(huì)自動(dòng)更新然后列出可安裝的程序補(bǔ)丁,請(qǐng)選擇以下補(bǔ)丁安裝</p><p>  Android SDK Platform –tools, revision 6(必須選擇)</p><p>  SDK Platform Android 2.2, API 8, revision 3(必須選擇,模擬器速度不錯(cuò))

73、</p><p>  SDK Platform Android 3.2, API 13, revision 1(最新版,但是模擬器速度不是一般的慢)</p><p>  (左邊Packages 項(xiàng)目需要安裝的變?yōu)闋顟B(tài),不需要安裝的變?yōu)闋顟B(tài))</p><p>  下載完成后把 SDK 的路徑添加到 環(huán)境變量 的path 中:</p><p> 

74、 (我的電腦 -> 高級(jí) -> 環(huán)境變量 -> path) ;C:\...\Android\android-sdk(C:之前的分號(hào)需要)</p><p>  下載 Eclipse:</p><p><b>  下載地址:</b></p><p>  http://www.eclipse.org/downloads/</p

75、><p><b>  下載版本:</b></p><p>  Eclipse IDE for Java EE Developers, 212 MB</p><p>  Eclipse 配置 Android </p><p>  Eclipse配置安卓插件:</p><p>  help->Ins

76、tall New SoftWare 出現(xiàn)如下界面:</p><p>  點(diǎn)擊 Add按鈕,出現(xiàn)如下界面:</p><p>  輸入url地址https://dl-ssl.google.com/android/eclipse/,并名稱為Android,點(diǎn)擊ok將出現(xiàn)下圖:</p><p>  點(diǎn)擊next 按鈕,將出現(xiàn)下面界面:</p><p>

77、;  繼續(xù)點(diǎn)擊next 按鈕,將出現(xiàn)下面界面:</p><p>  選擇 I accept the terms of the license agreements點(diǎn)擊Next,進(jìn)入安裝插件界面:</p><p>  安裝完成后出現(xiàn)下面界面,重啟eclipse就可以了。</p><p>  配置Android SDK</p><p>  最后配

78、置SDK與Eclipse的關(guān)聯(lián),打開Eclipse</p><p>  選中左邊菜單的 Android 然后 SDK 的路徑,然后,最后OK。</p><p><b>  到此配置全部結(jié)束</b></p><p><b>  配置工作AVD</b></p><p>  Android SDK Ma

79、nager 配置,打開SDK Manager.Exe New新建一個(gè) AVD</p><p>  點(diǎn)擊next 出現(xiàn)下面界面:</p><p>  (其中個(gè)人認(rèn)為 Skin 選擇 HVGA 模擬器大小比較合適開發(fā)用)</p><p>  然后選中新建的模擬器,點(diǎn)擊</p><p>  就可以運(yùn)行模擬器了(啟動(dòng)稍慢,啟動(dòng)后不要關(guān)閉,在Eclip

80、se中運(yùn)行程序就會(huì)在模擬器中執(zhí)行, 程序內(nèi)容變化也不需要反復(fù)啟動(dòng)模擬器)</p><p>  第三章 二維碼的生成</p><p>  3.1 QR code 的簡介</p><p>  本次設(shè)計(jì)的二維碼是以QR Code二維碼為例,所以在設(shè)計(jì)之前,我們先對(duì)QR碼進(jìn)行簡單的介紹。</p><p>  3.1.1 QR Code 的結(jié)構(gòu)與

81、特性</p><p>  QR Code(Quick Response Code),稱為快速響應(yīng)矩陣碼[27],是由日本Denso公司于1994年開發(fā)的一種矩陣式二維碼,它具有二維條碼的共同特點(diǎn),如存儲(chǔ)信息量大,可靠性高,可表示漢字、圖像和音頻等多種數(shù)據(jù)類型的信息之外,還具有以下特點(diǎn):</p><p><b> ?。?)超高速識(shí)讀</b></p><

82、;p>  超高速識(shí)讀特點(diǎn)是QR碼區(qū)別于其它二維條碼的一個(gè)主要特性。使用條碼識(shí)讀設(shè)備識(shí)讀條碼時(shí),一秒鐘可以識(shí)讀30個(gè)含有100個(gè)字符的QR碼符號(hào);對(duì)于含有相同數(shù)據(jù)信息的PDF417條碼,一秒鐘只能識(shí)讀3個(gè)符號(hào);對(duì)于Data Matrix,一秒鐘最多可以識(shí)讀3個(gè)符號(hào)。</p><p><b>  (2)全方位識(shí)讀</b></p><p>  QR碼具有全方位(360

83、度)識(shí)讀的特點(diǎn),這是QR碼又一個(gè)主要優(yōu)點(diǎn)。在識(shí)別QR碼的過程中要先將具有一定的角度的QR碼作旋轉(zhuǎn)處理,使其四條邊界與坐標(biāo)軸平行垂直,然后根據(jù)QR碼的三個(gè)位置探測(cè)圖形對(duì)其進(jìn)行識(shí)別。</p><p>  (3)可以高效表示漢字</p><p>  由于日本的文字中也存在著大量的漢字,因此QR碼在其設(shè)計(jì)的過程就已經(jīng)實(shí)現(xiàn)了對(duì)漢字的支持。QR碼能夠用特定的數(shù)據(jù)壓縮模式表示中國漢字和日文,當(dāng)表示漢字時(shí)

84、QR碼僅用13位二進(jìn)制數(shù)據(jù)就足夠了,而其他二維條碼只能夠用字節(jié)表示模式來表示漢字,需用16位二進(jìn)制數(shù)據(jù)(即兩個(gè)字節(jié))表示一個(gè)漢字,所以QR碼的漢字表示容量超出其他二維條碼20%。</p><p>  a、QR Code的結(jié)構(gòu)</p><p>  QR 的編碼規(guī)范參見文獻(xiàn)[28],其編碼符號(hào)結(jié)構(gòu)見圖4-1,它包括編碼區(qū)域和功能區(qū)域(包括探測(cè)圖形、分割符、定位圖形和校正圖形)。</p&g

85、t;<p><b> ?。?)探測(cè)圖形</b></p><p>  它包括三個(gè)位置的探測(cè)圖形,分別位于符號(hào)的左上角、右上角和左下角,如圖4-1所示,每個(gè)位置探測(cè)圖形由三個(gè)同心的正方形組成,分別為7×7個(gè)深色模塊、5×5個(gè)淺色模塊、3×3個(gè)深色模塊。由于有掩模的作用,符號(hào)中其他地方遇到類似圖形的可能性極小,所以探測(cè)圖形可以用來識(shí)別QR碼符號(hào),并可確定

86、條碼的位置和方向。</p><p>  圖4-1 QR碼的符號(hào)結(jié)構(gòu)</p><p><b>  (2)定位圖形</b></p><p>  水平和垂直定位圖形分別為一個(gè)模塊寬,由深色與淺色模塊交替組成的一行和一列圖形,它們的位置分別位于第6行與第6列。作用為確定符號(hào)的密度和版本,為模塊坐標(biāo)位置作參考。</p><p>&

87、lt;b> ?。?)校正圖形</b></p><p>  每個(gè)校正圖形可看作是三個(gè)同心的正方形,由5×5深色模塊,3×3淺色模塊和一個(gè)中心深色模塊構(gòu)成,校正圖形的數(shù)量視版本而定。</p><p>  b、QR Code的基本特性,見表4-1</p><p>  表4-1 QR Code的基本特性</p><

88、p>  我國于2000年發(fā)布了QR碼的國家標(biāo)準(zhǔn),隨著QR碼在各領(lǐng)域的推廣和智能手機(jī)的快速發(fā)展,如何在智能手機(jī)中較好地識(shí)別QR碼是一項(xiàng)值得研究的課題,本章將主要討論在Android平臺(tái)下產(chǎn)生以及識(shí)別QR碼。</p><p>  3.1.2 QR Code 的標(biāo)準(zhǔn)</p><p>  在上節(jié)中介紹了QR Code的結(jié)構(gòu)與特性,它是一種矩陣型二維碼的符號(hào),具有存儲(chǔ)信息容量大、可靠性高、超高

89、速全方位識(shí)讀的特點(diǎn),可表示漢字、圖像等多種類型信息,并由于其用特定的數(shù)據(jù)壓縮模式表示中國漢字和日本漢字,在亞洲地區(qū)如中國、日本、韓國,應(yīng)用得最為廣泛。</p><p>  為了使QR Code的應(yīng)用在中國標(biāo)準(zhǔn)化,中國物品編碼中心制定了快速響應(yīng)矩陣碼國家標(biāo)準(zhǔn)GB/T 18284-2000,neq ISO/IEC 18004:2000。該標(biāo)準(zhǔn)是對(duì)ISO/IEC18004標(biāo)準(zhǔn)進(jìn)行了取舍和補(bǔ)充完善。如:用中國漢字?jǐn)?shù)據(jù)表示

90、模式代替了ISO/IEC18004中日文表示模式的內(nèi)容。</p><p>  3.1.3 QR Code 的編碼及譯碼過程</p><p><b> ?。?)編碼過程</b></p><p>  QR Code的編碼流程圖如圖4-2所示:</p><p>  圖4-2 QR Code的編碼流程圖</p>

91、<p>  ①得到用戶輸入數(shù)據(jù),進(jìn)行數(shù)據(jù)分析</p><p>  分析輸入的數(shù)據(jù)流,確定要進(jìn)行編碼的字符類型,確定用戶選擇的糾錯(cuò)等級(jí)(如果沒有則選擇默認(rèn)等級(jí)),根據(jù)糾錯(cuò)等級(jí)和數(shù)據(jù)容量,選擇與數(shù)據(jù)相適應(yīng)的最小編碼版本。</p><p> ?、跀?shù)據(jù)編碼按照所選擇模式的編碼標(biāo)準(zhǔn),將數(shù)據(jù)字符轉(zhuǎn)換為位流。</p><p>  在數(shù)據(jù)位流前加上模式指示符,在數(shù)據(jù)位流之

92、后加上終止符,將產(chǎn)生的位流分為每8位一個(gè)碼字,必要時(shí)加入填充字符以填滿按照版本所要求的數(shù)據(jù)字?jǐn)?shù)。</p><p><b> ?、奂m錯(cuò)編碼</b></p><p>  按標(biāo)準(zhǔn)要求將碼字序列分塊,以便生成相應(yīng)的糾錯(cuò)碼字。分段后的數(shù)據(jù)通過RS糾錯(cuò)電路,生成相應(yīng)的糾錯(cuò)碼字,并加入到相應(yīng)的數(shù)據(jù)碼字序列的后面。</p><p><b> ?、軜?gòu)造

93、最終信息</b></p><p>  按標(biāo)準(zhǔn)的數(shù)據(jù)排列方式構(gòu)建最終排列信息,必要時(shí)加入剩余位。</p><p> ?、菰诰仃囍袠?biāo)識(shí)功能模塊</p><p>  不同的版本因要嵌入不同數(shù)量的校正圖形,因此對(duì)應(yīng)不同的矩陣排列。矩陣中要加入功能圖形,首先要標(biāo)識(shí)功能圖形的位置,并在對(duì)應(yīng)位置加入功能圖形中的探測(cè)圖形、分隔符、定位圖形和校正圖形。</p>

94、<p> ?、拊诰仃囍胁贾脭?shù)據(jù)模塊</p><p>  按照排列標(biāo)準(zhǔn),將數(shù)據(jù)碼字模塊放入矩陣中的對(duì)應(yīng)位置。</p><p><b> ?、呒尤胙谀?lt;/b></p><p>  用8種掩模圖形依次對(duì)符號(hào)的編碼區(qū)域的位圖進(jìn)行掩模處理,評(píng)價(jià)所得到的8種結(jié)果,選擇最優(yōu)的一種。</p><p>  ⑧加入格式和版本信

95、息</p><p>  生成版本信息(版本7以上)和格式信息,構(gòu)成符號(hào),加入矩陣對(duì)應(yīng)位置。</p><p><b> ?、嵘蓷l碼圖形</b></p><p>  根據(jù)上面步驟得到的1、0矩陣,生成對(duì)應(yīng)的黑白方塊條碼圖形。</p><p><b>  (2)譯碼過程</b></p>&

96、lt;p>  QR Code譯碼系統(tǒng)的文件讀入有兩種方式,一種是直接從圖像文件(.bmp)讀入,找到條碼圖像,進(jìn)行譯碼;另一種是從QR Code的數(shù)據(jù)文件(.qr)讀入條碼信息,進(jìn)行譯碼。本次設(shè)計(jì)采用的是第一種,所以這里介紹讀入圖像文件,進(jìn)行譯碼。將圖像文件讀入,由于采集到的條碼圖像通常存在畸變、污染等,因此在定位條碼前需要進(jìn)行圖像的處理,包括圖像畸變校正、噪聲去除、二值化和圖像旋轉(zhuǎn)等操作 [29-31]。</p>

97、<p>  QR Code圖像識(shí)別過程具體流程如圖4-3所示:</p><p>  圖4-3 QR Code條碼圖像識(shí)別流程圖</p><p>  解碼的步驟和編碼正好相反,步驟為:</p><p> ?、偬崛「袷叫畔?,版本信息;</p><p><b> ?、谌パ谀#?lt;/b></p><

98、p> ?、鄢槿?shù)據(jù)信息和糾錯(cuò)信息;</p><p><b> ?、躌S糾錯(cuò);</b></p><p> ?、迣?duì)糾錯(cuò)后的數(shù)據(jù)信息進(jìn)行解碼。</p><p>  有了糾錯(cuò),圖像的部分污染也能正確解出碼來,大大提高了QR Code碼的可識(shí)讀性。</p><p>  3.2 基于Android系統(tǒng)的QR碼生成</p&

99、gt;<p>  首先打開Eclipse IDE后,輸入有關(guān)QR Code生成的Java程序(主要程序見附錄1)。</p><p>  QR Code二維碼為ISO/IEC 18004所規(guī)范,在網(wǎng)絡(luò)上有許多開放的Library來進(jìn)行編碼范例,因此,在運(yùn)行程序之前,先到swetake.com下載for Java版本使用的庫函數(shù),并將文件名稱更名為SwetakeQRCode.jar。此次設(shè)計(jì)有三個(gè)重點(diǎn):

100、</p><p> ?、僖卯a(chǎn)生的QR Code二維碼的SwetakeQRCode.jar函數(shù)庫。</p><p> ?、趯ser輸入的字符串,利用SwetakeQRCode.jar函數(shù)庫轉(zhuǎn)成產(chǎn)生圖片文件的二維數(shù)組,作為產(chǎn)生二維碼的依據(jù)。</p><p>  ③在SurfaceView上繪制二維碼圖片。</p><p>  此程序中自定義函

101、數(shù)AndroidQREncode()有兩個(gè)參數(shù),分別位于編碼的字符串以及要指定的QR CodeVersion(可接受0~40)。程序默認(rèn)的QR CodeVersion為4,能接受62個(gè)字符,所以,若需要接受更多字符編碼,則需要修改QR CodeVersion的數(shù)值。</p><p>  創(chuàng)建com.swetake.util.Qrcode對(duì)象testQrcode后,將Error Correction設(shè)置為M(可接受

102、L,M,O,Q等值),以及調(diào)用testQrcode.calQrcode()將其編碼為二維boolean數(shù)組,自定義函數(shù)draw QR Code()則接受來自編碼后的boolean二維數(shù)組,將其在SurfaceView上繪制出QR Code二維碼。</p><p>  準(zhǔn)備好應(yīng)用程序之后,啟動(dòng)AVD,運(yùn)行程序后,運(yùn)行結(jié)果見圖4-4(a)。</p><p>  單擊“產(chǎn)生QRCode條形碼”的

103、按鈕,則生成網(wǎng)址為“http://jwc.nxu.edu.cn”的QR Code二維碼,如圖4-4(b)所示。</p><p>  (a) (b)</p><p><b>  圖4-4 運(yùn)行結(jié)果</b></p><p>  上一個(gè)例子,生成的是一個(gè)網(wǎng)址的二維碼,下面我們通過java變成生成任意功能的二維

104、碼,用戶可以選擇所要生成的二維碼信息進(jìn)行填寫如圖(a),如點(diǎn)擊名片,輸入姓名、職業(yè)、固定電話、移動(dòng)電話,然后單擊生成QR碼,就會(huì)出現(xiàn)如(b)的畫面,之后點(diǎn)擊產(chǎn)生QR條形碼就會(huì)出現(xiàn)我們想要的二維碼,如圖(c)所示。(程序見附表1)</p><p>  (a) (b) (c)</p><p>  圖4-5生成的

105、二維碼</p><p>  第四章 二維碼識(shí)別系統(tǒng)的實(shí)現(xiàn)</p><p>  二維碼的識(shí)別主要是通過對(duì)攝像頭的調(diào)用,啟用多線程,對(duì)攝像頭進(jìn)行快速的回調(diào)應(yīng)用,當(dāng)一次回調(diào)的圖像沒有識(shí)別出來就進(jìn)行下一次的回調(diào),直到識(shí)別出二維碼為止 。同時(shí)由于對(duì)與二維碼的大小不同,顯示的模糊度不同等等原因,會(huì)使攝 像頭不能很好的采集圖像,在這里要使攝像頭能夠進(jìn)行自動(dòng)對(duì)焦,從而使識(shí)別更快的實(shí)現(xiàn)。當(dāng)識(shí)別完成以后就對(duì)

106、用戶進(jìn)行提 醒,對(duì)手機(jī)進(jìn)行震動(dòng)和播放聲音,播放完成,顯示識(shí)別出來的結(jié)果。</p><p>  本文使用ZXing 1.6實(shí)現(xiàn)條碼/二維碼識(shí)別。ZXing是個(gè)很經(jīng)典的條碼/二維碼識(shí)別的開源類庫,long long ago,就有開發(fā)者在J2ME上使用ZXing了,不過要支持JSR-234規(guī)范(自動(dòng)對(duì)焦)的手機(jī)才能發(fā)揮其威力,而目前已經(jīng)有不少Android手機(jī)具備自動(dòng)對(duì)焦的功能。</p><p>

107、;  4.1 開源利器-----zxing</p><p>  . ZXing 是一個(gè)開源 Java 類庫用于解析多種格式的條形碼和二維碼.</p><p>  官網(wǎng): http://code.google.com/p/zxing/</p><p>  截止目前為止最新版本為 1.7,提供以下編碼格式的支持:</p><p>  UPC-A

108、and UPC-E </p><p>  EAN-8 and EAN-13 </p><p><b>  Code 39 </b></p><p><b>  Code 93 </b></p><p><b>  Code 128 </b></p><p&g

109、t;<b>  QR Code </b></p><p><b>  ITF </b></p><p><b>  Codabar </b></p><p>  RSS-14 (all variants) </p><p>  Data Matrix </p>&

110、lt;p>  PDF 417 ('alpha' quality) </p><p>  Aztec ('alpha' quality) </p><p>  同時(shí)官網(wǎng)提供了 Android、cpp、C#、iPhone、j2me、j2se、jruby、objc、rim、symbian</p><p>  等多種應(yīng)用的類庫,具體詳情

111、可以參考下載的源碼包中。</p><p>  4.2 基于zxing的二維碼識(shí)別</p><p>  將完整的zxing程序包導(dǎo)入Eclipse軟件,并模擬仿真,結(jié)果如圖所示:(如圖5-1)</p><p>  (a) zxing模擬器 (b)解析成功頁面</p><p>  圖5-1 zxing解析

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論