版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 學(xué)士學(xué)位論文</b></p><p> 題目:Android二維碼的掃描識(shí)別</p><p><b> 設(shè)計(jì)人: 蘭紅林</b></p><p><b> 指導(dǎo)教師:李富萍</b></p><p> 所屬系部:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院<
2、/p><p> 專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)082002</p><p> 2012年 6月 1日</p><p> 太原科技大學(xué)畢業(yè)設(shè)計(jì)(論文)任務(wù)書</p><p> 學(xué)院: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 </p><p> 說(shuō)明:一式兩份,一份裝訂入學(xué)生畢業(yè)設(shè)計(jì)(論文)內(nèi),一份交學(xué)院(直屬系)。</p>
3、;<p><b> 中文摘要</b></p><p> 一維條碼在生產(chǎn)和生活的各個(gè)方面得到了廣泛的應(yīng)用,極大的提高了生產(chǎn)率,但是一維條碼本身的缺點(diǎn):信息量小、依賴數(shù)據(jù)庫(kù)等也日益的現(xiàn)露出來(lái)。二維條碼本身具有高容量、高密度、糾錯(cuò)能力強(qiáng)、安全強(qiáng)度高等特點(diǎn),使得二維條碼作為信息的載體在信息自動(dòng)化領(lǐng)域發(fā)揮著越來(lái)越重要的作用。QRCode作為快速響應(yīng)二維碼,以其獨(dú)特的優(yōu)勢(shì),在漢語(yǔ)國(guó)家發(fā)
4、展迅速。目前,國(guó)內(nèi)QR碼的識(shí)別大多是基于PC的,Android平臺(tái)上當(dāng)前流行的二維碼識(shí)別軟件普遍存在著掃描速度慢,需要精確對(duì)焦等缺點(diǎn)。</p><p> 該軟件基于Android開(kāi)發(fā)平臺(tái)在windows環(huán)境下采用面向?qū)ο蠓椒ㄟM(jìn)行開(kāi)發(fā)。首先,進(jìn)行需求分析,繪制了用例圖和活動(dòng)圖。然后,在概要設(shè)計(jì)中建立了系統(tǒng)功能模型,并在詳細(xì)設(shè)計(jì)階段對(duì)圖片處理過(guò)程進(jìn)行設(shè)計(jì)。最后,對(duì)軟件進(jìn)行編碼和測(cè)試。該軟件實(shí)現(xiàn)了二維碼的掃描與識(shí)別,
5、具有很強(qiáng)的實(shí)用性。</p><p> 關(guān)鍵字:二維碼;QRCode;解碼;Android</p><p> The scanning and recongnition of two-dimensional barcode</p><p> Author: Lan Honglin Tutor: Li Fuping</p><p>
6、;<b> Abstract</b></p><p> One-dimension barcode is widely used recent years in all aspect of life, which greatly improved the productivity. However, the faults of 1-D barcode have become increa
7、singly apparent, the information storage of it is so little, and also it must be rely on database. Two-dimension barcode has the characteristics of high capacity, high density, high security and good error correction ab
8、ility, which make it play more and more important role in information and automation field. QRCode(Quick Response</p><p> The development of the software is based on Android platform by object-oriented prog
9、ramming method under the Windows OS. Firstly, this paper describes the detailed demand analysis to draw use case diagram and activity diagram. Then constructing the system function model in general design, meanwhile, des
10、igning the details of diagram process. Finally, the software implements the scanning and recognition of two-dimensional barcode by decoding and testing, after that, this software has robust appli</p><p> K
11、ey words: Two-dimensional barcode;QRCode;decoding;Android目錄</p><p> 第一章 系統(tǒng)概述1</p><p> 1.1 系統(tǒng)開(kāi)發(fā)背景和意義1</p><p> 1.1.1 系統(tǒng)開(kāi)發(fā)背景1</p><p> 1.1.2 系統(tǒng)開(kāi)發(fā)的意義1</p><
12、;p> 1.1.3 二維碼介紹2</p><p> 1.2 開(kāi)發(fā)工具介紹3</p><p> 1.2.1 Eclipse簡(jiǎn)介3</p><p> 1.2.2 JDK簡(jiǎn)介3</p><p> 1.2.3 Android SDK簡(jiǎn)介4</p><p> 1.2.4 ADT簡(jiǎn)介4</p&g
13、t;<p> 1.3 項(xiàng)目開(kāi)發(fā)環(huán)境4</p><p> 1.3.1 硬件環(huán)境4</p><p> 1.3.2 軟件環(huán)境5</p><p> 1.4 環(huán)境搭建5</p><p> 1.4.1 下載和安裝Android SDK5</p><p> 1.4.2 安裝Eclipse和ADT插
14、件5</p><p> 第二章 可行性研究和需求分析7</p><p> 2.1 可行性研究7</p><p> 2.1.1 技術(shù)可行性7</p><p> 2.1.2 經(jīng)濟(jì)可行性7</p><p> 2.1.3 操作可行性7</p><p> 2.1.4 社會(huì)可行性8
15、</p><p> 2.2 需求分析8</p><p> 2.2.1 系統(tǒng)功能需求8</p><p> 2.2.2 系統(tǒng)功能結(jié)構(gòu)圖9</p><p> 2.2.3 系統(tǒng)用例圖10</p><p> 2.2.4 系統(tǒng)活動(dòng)圖11</p><p> 2.3 技術(shù)需求11<
16、/p><p> 2.4 性能需求12</p><p> 第三章 系統(tǒng)總體設(shè)計(jì)14</p><p> 3.1 系統(tǒng)總體設(shè)計(jì)目標(biāo)14</p><p> 3.2 系統(tǒng)概要設(shè)計(jì)14</p><p> 3.2.1 系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)14</p><p> 3.2.2 計(jì)算機(jī)物理系統(tǒng)配置方案
17、設(shè)計(jì)15</p><p> 3.4 系統(tǒng)功能模塊15</p><p> 3.3.1 系統(tǒng)總體功能模塊16</p><p> 3.3.2 拍照解碼功能模塊16</p><p> 第四章 系統(tǒng)詳細(xì)設(shè)計(jì)17</p><p> 4.1 系統(tǒng)流程圖17</p><p> 4.2 圖
18、片處理過(guò)程圖17</p><p> 4.3 界面設(shè)計(jì)18</p><p> 第五章 系統(tǒng)編碼實(shí)現(xiàn)20</p><p> 5.1 基本編碼設(shè)置20</p><p> 5.2 相機(jī)預(yù)覽實(shí)現(xiàn)21</p><p> 5.3 關(guān)閉相機(jī)實(shí)現(xiàn)22</p><p> 5.4 拍照解碼實(shí)現(xiàn)
19、23</p><p> 第六章 系統(tǒng)測(cè)試26</p><p> 6.1 測(cè)試目的26</p><p> 6.2 測(cè)試方法26</p><p> 6.3 功能測(cè)試26</p><p> 6.3.1 軟件安裝測(cè)試26</p><p> 6.3.2 相機(jī)預(yù)覽功能測(cè)試27<
20、;/p><p> 6.3.3 關(guān)閉相機(jī)測(cè)試27</p><p> 6.3.4 拍照解碼功能測(cè)試27</p><p><b> 結(jié)束語(yǔ)31</b></p><p><b> 致謝32</b></p><p><b> 參考文獻(xiàn)33</b>&
21、lt;/p><p> 附錄I 英文原文34</p><p><b> 第一章 系統(tǒng)概述</b></p><p> 1.1 系統(tǒng)開(kāi)發(fā)背景和意義</p><p> 1.1.1 系統(tǒng)開(kāi)發(fā)背景</p><p> 條形碼技術(shù)是集條碼理論、光電技術(shù)、計(jì)算機(jī)技術(shù)、通信技術(shù)等技術(shù)于一體的綜合性技術(shù),起源于
22、20世紀(jì)40年代。它具有輸入速度快、可靠性高、采集信息量大、成本低等特點(diǎn),近年來(lái)發(fā)展十分迅速,在國(guó)際上廣泛應(yīng)用于商品流通、物流倉(cāng)儲(chǔ)、信息服務(wù)等各個(gè)領(lǐng)域,極大地提高了生產(chǎn)效率。</p><p> 近幾年,另一個(gè)廣泛得到普及的領(lǐng)域就是手機(jī),自90年代初以來(lái),無(wú)線移動(dòng)技術(shù)和市場(chǎng)應(yīng)用得到飛速發(fā)展和成功。從尋呼機(jī)到目前3G手機(jī)的面市,中國(guó)人已經(jīng)習(xí)慣了手中的移動(dòng)手機(jī)不停地變化。移動(dòng)通信發(fā)展的焦點(diǎn)已經(jīng)由用戶數(shù)量的增長(zhǎng),轉(zhuǎn)為業(yè)
23、務(wù)量和新業(yè)務(wù)的增長(zhǎng);由技術(shù)驅(qū)動(dòng)轉(zhuǎn)為業(yè)務(wù)驅(qū)動(dòng)。在激烈的市場(chǎng)競(jìng)爭(zhēng)中,越來(lái)越成熟的手機(jī)用戶不僅注重手機(jī)硬件的外觀,更注重手機(jī)所賦予的強(qiáng)大功能。</p><p> 以上兩個(gè)普及領(lǐng)域催生了一個(gè)新的需求:即將二維碼和手機(jī)結(jié)合起來(lái),利用手機(jī)作為讀取設(shè)備,實(shí)現(xiàn)條碼識(shí)別。</p><p> 目前國(guó)際ISO標(biāo)準(zhǔn)已經(jīng)有多種條形碼,其中應(yīng)用最廣泛的有PDF417、DateMatrix、QR碼等。QR碼是矩陣式
24、二維條形碼的代表,它除了具有一維條碼和其它二維條碼所具有的信息容量大、可靠性高等特點(diǎn)外,還具有全方位識(shí)讀、能有效表示中、英、簡(jiǎn)、繁、日、韓等文字、超高速識(shí)讀以及超強(qiáng)的糾錯(cuò)能力和抗干擾能力等特性。適合于我國(guó)的國(guó)情以及漢字編碼的特點(diǎn)。</p><p> 綜上,QR碼在手機(jī)中的應(yīng)用有著良好的前景和潛力,它將有效地推動(dòng)移動(dòng)增值業(yè)務(wù)的快速增長(zhǎng),有利于為我國(guó)信息產(chǎn)業(yè)的發(fā)展和經(jīng)濟(jì)建設(shè)帶來(lái)社會(huì)及經(jīng)濟(jì)效益。</p>
25、<p> 1.1.2 系統(tǒng)開(kāi)發(fā)的意義</p><p> 二維碼作為一種全新的條碼技術(shù),已被廣泛應(yīng)用于國(guó)防、醫(yī)療保健、商業(yè)、金融、后勤管理等領(lǐng)域。由于QRCode二維碼信息容量大,保密性能好,并且成本低,適合我國(guó)人口眾多,計(jì)算機(jī)建設(shè)還不是很完善的國(guó)情,因此在我國(guó)有著十分廣闊的應(yīng)用前景??梢灶A(yù)見(jiàn),二維條碼技術(shù)在我國(guó)的推廣上應(yīng)用必將為我國(guó)信息產(chǎn)業(yè)的發(fā)展和現(xiàn)代化的經(jīng)濟(jì)建設(shè)帶來(lái)可觀的社會(huì)效益和經(jīng)濟(jì)效益。 &
26、lt;/p><p> 1.1.3 二維碼介紹</p><p> 二維碼(2-dimensional barcode),是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的。</p><p> 在許多種類的二維條碼中,常用的碼制有:DataMatrix, MaxiCode, Aztec, QRCode, Vericode,PDF
27、417,Ultracode,Code49,Code16K等。</p><p> 1.堆疊式/行排式二維條碼,如,Code16K、Code49、PDF417(如下圖)等。</p><p> 2.矩陣式二維碼,最流行莫過(guò)于QRCODE。</p><p> QR(Quick-Response) code是被廣泛使用的一種二維碼,解碼速度快。它可以存儲(chǔ)多用類型。現(xiàn)在使
28、用的QRCODE二位條形碼的規(guī)范一直遵循OMIA(Open Mobile Internet Alliance)的規(guī)范,QRCode基本結(jié)構(gòu)如圖1.1所示。</p><p> 圖1.1 QRCode基本結(jié)構(gòu)</p><p> 其中:位置探測(cè)圖形、位置探測(cè)圖形分隔符和定位圖形用于對(duì)二維碼的定位;對(duì)每個(gè)QR碼來(lái)說(shuō),位置都是固定存在的,只是大小規(guī)格會(huì)有所差異;規(guī)格確定,校正圖形的數(shù)量和位置也就
29、確定了;格式信息表示改二維碼的糾錯(cuò)級(jí)別,分為L(zhǎng)、M、Q、H;版本信息即二維碼的規(guī)格,QR碼符號(hào)共有40種規(guī)格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號(hào)比前一版本 每邊增加4個(gè)模塊。數(shù)據(jù)和糾錯(cuò)碼字實(shí)際保存的二維碼信息和糾錯(cuò)碼字(用于修正二維碼損壞帶來(lái)的錯(cuò)誤)。</p><p> 簡(jiǎn)要的解碼過(guò)程:二維碼圖像->圖像解析出01編碼->按照規(guī)則解釋為相應(yīng)的內(nèi)容
30、。</p><p> 1.2 開(kāi)發(fā)工具介紹</p><p> 1.2.1 Eclipse簡(jiǎn)介</p><p> Eclipse是一個(gè)綜合開(kāi)發(fā)環(huán)境(Integrated Development Environment)IDE,它是一個(gè)功能完整且成熟的軟件,由IBM公司于2001年首次推出。大家可以在其官方網(wǎng)站http://www.eclipse.org免費(fèi)下載該
31、軟件的打包文件,釋放到文件夾即可使用。</p><p> Eclipse是一個(gè)開(kāi)放源代碼、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。開(kāi)放源代碼的意思是讓使用者能夠取得軟件的原始碼,部分地有權(quán)去修改和傳播這個(gè)軟件。有人非常形象地將Eclipse比喻成軟件開(kāi)發(fā)者的“打鐵鋪”,它一開(kāi)始備有火爐、鐵砧與鐵錘。就像鐵匠會(huì)用現(xiàn)有的工具打造新的工具一樣,程序員也能用Eclipse打造新工具來(lái)開(kāi)發(fā)軟件———這些新工具可擴(kuò)充Eclipse的
32、功能。</p><p> 就Eclipse本身而言,它只是一個(gè)框架和一組被稱為平臺(tái)核心的服務(wù)程序,用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。核心的任務(wù)是讓每樣?xùn)|西動(dòng)起來(lái),并加載所需的外掛程序。當(dāng)啟動(dòng)Eclipse時(shí),先執(zhí)行的就是這個(gè)組件,再由這個(gè)組件加載其他外掛程序。Eclipse附帶了一個(gè)包括Java開(kāi)發(fā)工具(Java Development Tools,JDT)的標(biāo)準(zhǔn)插件集,因此如果要使用Eclipse來(lái)開(kāi)發(fā)Java程
33、序,必須安裝JDK作為它的插件才能使它正常運(yùn)作。</p><p> 1.2.2 JDK簡(jiǎn)介</p><p> JDK(Java Development Kit,JDK)是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(Java Runt ime Envirnment),一堆Java工具和Java基礎(chǔ)的類庫(kù)(rt.jar)。不論什么Java應(yīng)用服務(wù)器實(shí)質(zhì)都是內(nèi)置了某個(gè)版本的JDK。最主流的J
34、DK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開(kāi)發(fā)了自己的JDK,例如IBM公司開(kāi)發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開(kāi)發(fā)的JDK等等。其中IBM的JDK包含的JVM(Java VirtualMachine,JVM)運(yùn)行效率要比Sun JDK包含的JVM高出許多。JDK的最重要命令行工具:</p><p> java: 啟動(dòng)JVM執(zhí)行class;</p>&l
35、t;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軟件開(kāi)發(fā)工具
36、包。被軟件開(kāi)發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開(kāi)發(fā)工具的集合,是Android專屬的軟件開(kāi)發(fā)工具包。</p><p> 1.2.4 ADT簡(jiǎn)介</p><p> 目前Android開(kāi)發(fā)所用的開(kāi)發(fā)工具是Eclipse,在Eclipse編譯IDE環(huán)境中,安裝ADT,為Android開(kāi)發(fā)提供開(kāi)發(fā)工具的升級(jí)或者變更,簡(jiǎn)單理解為在Eclipse下開(kāi)發(fā)工具的升
37、級(jí)下載工具。</p><p> 1.3 項(xiàng)目開(kāi)發(fā)環(huán)境</p><p> 1.3.1 硬件環(huán)境</p><p> 處理器:Intel Celeron 2.4GHz以上處理器及以上</p><p><b> 內(nèi)存:1GB及以上</b></p><p> 硬盤空間:80GB及以上</p&
38、gt;<p> 華為C8650手機(jī)一部</p><p> 1.3.2 軟件環(huán)境</p><p> 操作系統(tǒng):Windows XP (32-bit)或windows vista(32位或64位)或Mac OS X10.4.8或更新的版本(硬件必須是X86的版本)或Linux(在Linux Ubantu Hardy Heron上)。</p><p>
39、 開(kāi)發(fā)工具:jdk-6u26-windows-i586、Eclipse Indigo Service Release 2、android-sdk_r18-windows、ADT18。</p><p><b> 1.4 環(huán)境搭建</b></p><p> 在開(kāi)始搭建Android開(kāi)發(fā)環(huán)境之前,讀者必須具有一定的Java編程基礎(chǔ),像JDK環(huán)境安裝,環(huán)境設(shè)置之類的入門
40、知識(shí),這里不做詳細(xì)的介紹,下面將從Android SDK的安裝開(kāi)始講起,詳細(xì)說(shuō)明Android開(kāi)發(fā)、測(cè)試環(huán)境的安裝和使用。</p><p> 1.4.1 下載和安裝Android SDK</p><p> 登陸Android開(kāi)發(fā)者網(wǎng)站http://developer.android.com/sdk/index.html即可下載Android SDK。下載和安裝步驟如下:</p&g
41、t;<p> 在Android1.5之前,Google提供了Android SDK的完整開(kāi)發(fā)包;從Android 1.6之后,Google不再提供完整開(kāi)發(fā)包,開(kāi)發(fā)者必須采用在線的方式安裝Android SDK。此處以Windows開(kāi)發(fā)平臺(tái)為例,登陸界面之后點(diǎn)擊“android-sdk_r18-windows.zip”連接,通過(guò)連接即可下載Android SDK的在線安裝包。</p><p> 下
42、載完成后得到android-sdk_r18-windows.zip文件。將該文件解壓到任意路徑,解壓后文件夾,啟動(dòng)文件夾中SDK Manager.exe,單擊出現(xiàn)窗口左邊“Installed packages”項(xiàng),可以查看已有安裝工具,單擊“Available packages”然后選安裝工具,其中Android平臺(tái)工具、Android文檔、Android2.3 SDK必須選,然后單擊“Install Selected”,窗口出現(xiàn)“Ac
43、cept All”單選按鈕,單擊“Install”系統(tǒng)便開(kāi)始安裝Android SDK,安裝時(shí)間可能要花費(fèi)一兩個(gè)小時(shí)。</p><p> 1.4.2 安裝Eclipse和ADT插件</p><p> Eclipse是一個(gè)市場(chǎng)占有率很高的Java IDE工具,Java EE應(yīng)用的開(kāi)發(fā)者對(duì)Eclipse應(yīng)該十分熟悉,Android推薦使用Eclipse來(lái)開(kāi)發(fā)Android應(yīng)用,并為它提供專
44、門的插件ADT(Android Development Tools,ADT)。</p><p> 安裝Eclipse工具按如下步驟進(jìn)行:</p><p> 登陸http://www.eclipse.org站點(diǎn),下載Eclipse IDE for Java EE Developer 的版本。下載完成后解壓縮后雙擊eclipse.exe文件,即可看到Eclipse啟動(dòng)界面,表明Eclips
45、e 已經(jīng)安裝成功,為了在Eclipse中進(jìn)行Android 開(kāi)發(fā),還需要安裝ADT插件。安裝ADT請(qǐng)按如下步驟進(jìn)行登陸下載:</p><p> 登陸網(wǎng)站:http://developer.android.com/sdk/eclipse-adt.html#installing下載ADT插件最新版本,下載后得到ADT-18.0.0.zip文件。</p><p> 啟動(dòng)Eclipse,單擊E
46、clipse的主菜單上Help/Install New Software菜單項(xiàng),單擊窗口“Add..”按鈕,選擇ADT插件ADT-18.0.0.zip文件。選中“OK”按鈕,在點(diǎn)擊“next”,最后點(diǎn)擊“Finish”,Eclipse開(kāi)始安裝ADT插件。稍稍等幾分鐘,ADT插件安裝完成再配置相應(yīng)環(huán)境變量即可進(jìn)行Android軟件開(kāi)發(fā)了。</p><p> 第二章 可行性研究和需求分析</p>&l
47、t;p><b> 2.1 可行性研究</b></p><p> 一個(gè)項(xiàng)目的開(kāi)發(fā)需要仔細(xì)分析,看它在目前的情況下是否可行,如果一個(gè)項(xiàng)目開(kāi)發(fā)具有很好的背景和意義,但是在經(jīng)濟(jì)上或者是技術(shù)上是不可行的,那么它也只能稱之為不能實(shí)現(xiàn)的項(xiàng)目。通過(guò)參照現(xiàn)有相似的其他網(wǎng)站的使用效果和分析實(shí)例進(jìn)行可行性2]研究,主要從以下四個(gè)方面進(jìn)行討論。</p><p> 2.1.1 技術(shù)
48、可行性</p><p> 本次開(kāi)發(fā)的android二維碼掃描識(shí)別軟件,用戶通過(guò)手機(jī)對(duì)QRcode二維碼進(jìn)行拍照解碼識(shí)別并且顯示二維碼隱藏的信息,如果二維碼為“http://”,則打開(kāi)手機(jī)瀏覽器直接上網(wǎng);當(dāng)發(fā)現(xiàn)為“wtai://”或“TEL:”規(guī)范,則調(diào)用手機(jī)撥打電話;而若未發(fā)現(xiàn)任何標(biāo)準(zhǔn)規(guī)范,則顯示條形碼的文字。如果拍照的圖片不是QRcode二維碼條形碼或者程序無(wú)法識(shí)別,則不作任何處理。</p>&
49、lt;p> 首先我們需要借助一個(gè)第三方的庫(kù)函數(shù)QRCODE.jar.然后我們可以通過(guò)手機(jī)照相機(jī)獲取二維碼圖片,然后將其送往QRCode的函數(shù)進(jìn)行解碼,對(duì)比我們的OMIA規(guī)范,即可實(shí)現(xiàn),因此在技術(shù)上可行。</p><p> 2.1.2 經(jīng)濟(jì)可行性</p><p> 二維碼在國(guó)內(nèi)應(yīng)用引起眾多用戶群體的興趣,國(guó)內(nèi)許多廠商已經(jīng)開(kāi)始致力于二維碼的研究,設(shè)備開(kāi)發(fā)與應(yīng)用系統(tǒng)的應(yīng)用推廣及新市場(chǎng)
50、的培育,投資方很看好這個(gè)項(xiàng)目,在資金方面沒(méi)有問(wèn)題,所以在經(jīng)濟(jì)上可行。</p><p> 2.1.3 操作可行性</p><p> 通過(guò)對(duì)android二維碼掃描識(shí)別的研究,本系統(tǒng)能滿足投資方的基本要求,同時(shí)由于本系統(tǒng)只需要有一臺(tái)android手機(jī)即可對(duì)QRcode二維碼進(jìn)行掃描識(shí)別、在操作方面可行。</p><p> 2.1.4 社會(huì)可行性</p>
51、<p> 本軟件可以讓用戶通過(guò)手機(jī)對(duì)一些產(chǎn)品上的二維碼進(jìn)行掃描識(shí)別,從而查看該產(chǎn)品的真?zhèn)?。?duì)社會(huì)幫助很大。</p><p> 根據(jù)以上幾個(gè)方面的研究分析,Android二維碼的掃描識(shí)別在技術(shù)上可行、經(jīng)濟(jì)方面可行、操作方面可行、法律方面也是可行的,可得出結(jié)論:應(yīng)該立即進(jìn)行本項(xiàng)目的開(kāi)發(fā)。</p><p><b> 2.2 需求分析</b></p&
52、gt;<p> 需求分析是軟件定義的最后一個(gè)階段,它的基本任務(wù)是回答“系統(tǒng)必須做什么”這個(gè)問(wèn)題。需求分析的任務(wù)不是確定系統(tǒng)怎樣完成他的工作,而僅僅是確定系統(tǒng)完成哪些工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。</p><p> 可行性研究階段產(chǎn)生的文檔,是需求分析的出發(fā)點(diǎn)。從需求分析中已經(jīng)劃分出系統(tǒng)必須完成的許多基本功能,系統(tǒng)分析員將仔細(xì)研究這些功能并進(jìn)一步將它們具體化。需求分析的結(jié)
53、果是系統(tǒng)開(kāi)發(fā)的基礎(chǔ),關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量。因此,必須用行之有效的方法對(duì)軟件需求進(jìn)行嚴(yán)格的審查驗(yàn)證。</p><p> 本系統(tǒng)的實(shí)現(xiàn)要考慮到很多方面的因素,因此要求的方法和技術(shù)要相應(yīng)的有些多。具體來(lái)說(shuō),在開(kāi)發(fā)過(guò)程中,要熟悉QRcode二維碼解碼和圖像處理的方法,能熟練運(yùn)用JAVA語(yǔ)言,還要懂得軟件工程技術(shù)和系統(tǒng)測(cè)試技術(shù)。由于此系統(tǒng)的開(kāi)發(fā)是在XP環(huán)境下借助JDK、Eclipse、ADT和SDK完成的,所
54、以還應(yīng)熟練使用XP和這些開(kāi)發(fā)工具。</p><p> 2.2.1 系統(tǒng)功能需求</p><p><b> 1、相機(jī)預(yù)覽需求</b></p><p> 此二維碼識(shí)別系統(tǒng)必須能夠調(diào)用手機(jī)上的照相機(jī)才能獲取二維碼的圖像,因此需要一個(gè)相機(jī)預(yù)覽功能,之后才能獲取我們的二維碼圖片。</p><p> 2、關(guān)閉相機(jī)預(yù)覽需求&l
55、t;/p><p> 此系統(tǒng)既然要打開(kāi)手機(jī)照相機(jī),當(dāng)然也能夠關(guān)閉相機(jī)預(yù)覽功能。</p><p> 3、圖像處理和拍照解碼需求</p><p> 既然此系統(tǒng)是要對(duì)二維碼識(shí)別,我們通過(guò)相機(jī)預(yù)覽后即可進(jìn)行拍照截取圖片,然后對(duì)圖片進(jìn)行處理,同時(shí)需要對(duì)二維碼解碼,因此需要有圖像處理和解碼的功能。</p><p><b> 4、調(diào)用瀏覽器功能
56、</b></p><p> 當(dāng)我們二維碼隱藏的是一個(gè)網(wǎng)站信息時(shí),我們需要訪問(wèn)該網(wǎng)站,那么我們這時(shí)候需要調(diào)用我們手機(jī)瀏覽器功能。</p><p> 5、調(diào)用手機(jī)撥打電話功能</p><p> 當(dāng)我們二維碼隱藏的是一個(gè)電話號(hào)碼時(shí),這個(gè)時(shí)候我們需要調(diào)用我們手機(jī)撥打電話功能。</p><p><b> 6、其他功能<
57、;/b></p><p> 顯示文本功能:當(dāng)二維碼隱藏的只是一些文本信息的時(shí)候能夠文本信息顯示出來(lái)。</p><p> 2.2.2 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 系統(tǒng)結(jié)構(gòu)圖是對(duì)軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì)的圖形顯示,在需求分析階段,已經(jīng)從系統(tǒng)開(kāi)發(fā)的角度出發(fā),把系統(tǒng)按功能逐次分割成層次結(jié)構(gòu),使每一部分完成簡(jiǎn)單的功能且各個(gè)部分之間又保持一定的聯(lián)系,這就是功能設(shè)
58、計(jì)。在設(shè)計(jì)階段,基于這個(gè)功能的層次結(jié)構(gòu)把各個(gè)部分組合起來(lái)成為系統(tǒng)。如圖2.1所示。</p><p> 圖2.1 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 2.2.3 系統(tǒng)用例圖</p><p><b> 1、系統(tǒng)用戶用例圖</b></p><p> 用例圖就是由主角、用例以及它們之間的關(guān)系構(gòu)成的圖。該圖說(shuō)明了用例模型中的
59、關(guān)系。通過(guò)上面對(duì)系統(tǒng)的分析即可得到系統(tǒng)的用例圖,如圖2.2所示。</p><p> 圖2.2 系統(tǒng)用例圖</p><p> 2、相機(jī)預(yù)覽用例:調(diào)用手機(jī)照相機(jī)初始化相機(jī)模式。</p><p> 3、關(guān)閉相機(jī)用例:關(guān)閉手機(jī)照相機(jī)。</p><p> 4、拍照解碼用例:通過(guò)手機(jī)照相機(jī)把二維碼圖片拍下來(lái)然后再送入系統(tǒng)解碼。</p>
60、<p> ?。?)調(diào)用瀏覽器用例:如果二維碼信息隱藏的是以“http://”開(kāi)頭的網(wǎng)址,那么手機(jī)便調(diào)用默認(rèn)瀏覽器瀏覽該網(wǎng)站。</p><p> ?。?)調(diào)用撥打電話功能用例:如果二維碼信息隱藏的是以“TEL:”或者是“wtai://”開(kāi)頭的電話號(hào)碼,那么手機(jī)直接調(diào)用撥打電話功能。</p><p> ?。?)顯示文本信息用例:如果二維碼信息只是包含一些文本信息,那么直接顯示。&
61、lt;/p><p> 2.2.4 系統(tǒng)活動(dòng)圖</p><p> 活動(dòng)圖(activity diagram,動(dòng)態(tài)圖)是闡明了業(yè)務(wù)用例實(shí)現(xiàn)的工作流程。業(yè)務(wù)用例工作流程說(shuō)明了業(yè)務(wù)為向所服務(wù)的業(yè)務(wù)主角提供其所需的價(jià)值而必須完成的工作。業(yè)務(wù)用例由一系列活動(dòng)組成,它們共同為業(yè)務(wù)主角生成某些工件。工作流程通常包括一個(gè)基本工作流程和一個(gè)或多個(gè)備選工作流程。工作流程的結(jié)構(gòu)使用活動(dòng)圖來(lái)進(jìn)行說(shuō)明。系統(tǒng)的活動(dòng)圖如
62、圖2.3所示。</p><p> 圖2.3 系統(tǒng)活動(dòng)圖</p><p><b> 2.3 技術(shù)需求</b></p><p> Android二維碼掃描系統(tǒng)是一個(gè)綜合性比較強(qiáng)的題目,它需要在學(xué)校學(xué)習(xí)多方面知識(shí),具體的幾個(gè)主要技術(shù)要求如下:</p><p> 1、android技術(shù)</p><p&
63、gt; Android開(kāi)發(fā)之前呢,需要配置Android開(kāi)發(fā)環(huán)境。首先,Android開(kāi)發(fā)所需要的開(kāi)發(fā)包和工具,以及獲得它們的方式;其次,如何正確安裝和配置這些開(kāi)發(fā)包;最后,為了測(cè)試安裝的開(kāi)發(fā)環(huán)境,創(chuàng)建了第一個(gè)Android項(xiàng)目--Hello Android,并在模擬器上運(yùn)行和調(diào)試該程序,并且將該應(yīng)用程序安裝到Android手機(jī)上。</p><p><b> 2、照相機(jī)實(shí)現(xiàn)技術(shù)</b>&
64、lt;/p><p> 在了解了android開(kāi)發(fā)的過(guò)程之后需要學(xué)習(xí)android怎樣進(jìn)行照相。Android應(yīng)用提供了Camera來(lái)控制拍照,使用Camera進(jìn)行拍照需要按照如下步驟進(jìn)行即可.</p><p> 調(diào)用Camera的open()方法打開(kāi)照相機(jī)。</p><p> 調(diào)用Camera和getParameters()方法獲取拍照參數(shù)。該方法返回一個(gè)Came
65、ra. 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)用Camera的startPreview()方法開(kāi)始預(yù)覽取景,
66、在預(yù)覽取景之前需要調(diào)用Camera的setPreviewDisplay(SurfaceHolder holder)方法設(shè)置使用哪一個(gè)SurfaceView來(lái)顯示取景圖片。</p><p> 調(diào)用Camera的takePicture()方法進(jìn)行拍照。</p><p> 3、二維碼圖片處理技術(shù)</p><p> 首先二維碼圖片是圖片的一種,當(dāng)拍攝下來(lái)時(shí)需要將該圖片
67、送往解碼函數(shù)解碼,因此需要獲取預(yù)覽中圖片,在這里用的是bitmap這個(gè)類。</p><p><b> 4、二維碼解碼技術(shù)</b></p><p> 將預(yù)覽畫面中的二維碼圖片送到我們的解碼函數(shù)對(duì)二維碼進(jìn)行解碼,因此需要應(yīng)用android另外的一個(gè)JAR包。這個(gè)系統(tǒng)主要是對(duì)二維碼的一種QRcode進(jìn)行解碼,因此這里需要引用sourceforge.jp里的qrcode項(xiàng)
68、目。</p><p><b> 2.4 性能需求</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)格。<
69、;/p><p><b> 2、系統(tǒng)界面需求</b></p><p> 軟件界面直觀、簡(jiǎn)潔,人機(jī)交互性強(qiáng)。</p><p> 第三章 系統(tǒng)總體設(shè)計(jì)</p><p> 3.1 系統(tǒng)總體設(shè)計(jì)目標(biāo)</p><p> 經(jīng)過(guò)可行性研究和需求分析階段的工作,已經(jīng)清楚系統(tǒng)必須完成的工作,下面的工作就應(yīng)該是決
70、定“如何做”的問(wèn)題。概要設(shè)計(jì)的基本目的就是“概括地說(shuō)系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”通過(guò)該階段的工作將劃分出系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫(kù)、文檔等,另一方面的主要工作是設(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)行模塊劃分
71、、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫(kù)的設(shè)計(jì)。顯然,概要設(shè)計(jì)建立的是目標(biāo)系統(tǒng)的邏輯模型,與計(jì)算機(jī)無(wú)關(guān)??傮w設(shè)計(jì)包括系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)和計(jì)算機(jī)物理系統(tǒng)的配置方案設(shè)計(jì)。</p><p> Android二維碼掃描識(shí)別系統(tǒng)需要調(diào)用我們android手機(jī)的照相機(jī),通過(guò)onPictureTaken函數(shù)二維碼圖片處理成位圖,而且將位圖在im
72、ageview中顯示出來(lái),然后再對(duì)位圖進(jìn)行譯碼,按照QRCODE二維碼生成的方式解碼成字符型,QRCODE遵循OMIA規(guī)范,如果二維碼隱藏信息是一個(gè)網(wǎng)址那么調(diào)用瀏覽器訪問(wèn)該網(wǎng)站,如果二維碼隱藏的信息是一個(gè)電話號(hào)碼,那么調(diào)用手機(jī)撥打電話功能,如果該二維碼隱藏的信息是普通的文本信息,那么顯示出文本信息即可,若不是QRCODE二維碼不做任何操作。</p><p> 3.2.1 系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)</p>
73、<p> 系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)的任務(wù)是劃分子系統(tǒng),然后確定子系統(tǒng)的模塊結(jié)構(gòu),并畫出模塊結(jié)構(gòu)圖。在這個(gè)過(guò)程中必須考慮以下幾個(gè)問(wèn)題:</p><p> 如何將一個(gè)系統(tǒng)劃分成多個(gè)子系統(tǒng);</p><p> 每個(gè)子系統(tǒng)如何劃分成多個(gè)模塊;</p><p> 如何確定子系統(tǒng)之間、模塊之間傳送的數(shù)據(jù)及其調(diào)用關(guān)系;</p><p> 如何評(píng)
74、價(jià)并改進(jìn)模塊結(jié)構(gòu)的質(zhì)量。</p><p> 3.2.2 計(jì)算機(jī)物理系統(tǒng)配置方案設(shè)計(jì)</p><p> 在進(jìn)行總體設(shè)計(jì)時(shí),還要進(jìn)行計(jì)算機(jī)物理系統(tǒng)具體配置方案的設(shè)計(jì),要解決計(jì)算機(jī)軟硬件系統(tǒng)的配置、通信網(wǎng)絡(luò)系統(tǒng)的配置等問(wèn)題。計(jì)算機(jī)物理系統(tǒng)具體配置方案要經(jīng)過(guò)用戶單位和領(lǐng)導(dǎo)部門的同意才可進(jìn)行實(shí)施。</p><p> 開(kāi)發(fā)管理信息系統(tǒng)的大量經(jīng)驗(yàn)教訓(xùn)說(shuō)明,選擇計(jì)算機(jī)軟硬件設(shè)
75、備不能光看廣告或資料介紹,必須進(jìn)行充分的調(diào)查研究,最好應(yīng)向使用過(guò)該軟硬件設(shè)備的單位了解運(yùn)行情況及優(yōu)缺點(diǎn),并征求有關(guān)專家的意見(jiàn),然后進(jìn)行論證,最后寫出計(jì)算機(jī)物理系統(tǒng)配置方案報(bào)告。</p><p> 從我國(guó)的實(shí)際情況看,不少單位是先買計(jì)算機(jī)然后決定開(kāi)發(fā)。這種不科學(xué)的、盲目的做法是不可取的,它會(huì)造成極大浪費(fèi)。因?yàn)?,?jì)算機(jī)更新?lián)Q代是非??斓?,就是在開(kāi)發(fā)初期和在開(kāi)發(fā)的中后期系統(tǒng)實(shí)施階段購(gòu)買計(jì)算機(jī)設(shè)備,價(jià)格差別就會(huì)很大。因
76、此,在開(kāi)發(fā)管理信息系統(tǒng)過(guò)程中應(yīng)在系統(tǒng)設(shè)計(jì)的總體設(shè)計(jì)階段才具體設(shè)計(jì)計(jì)算機(jī)物理系統(tǒng)的配置方案。</p><p> 3.4 系統(tǒng)功能模塊</p><p> 系統(tǒng)總體功能有以下幾個(gè)方面:</p><p><b> 1、相機(jī)預(yù)覽功能;</b></p><p><b> 2、關(guān)閉相機(jī)功能;</b><
77、;/p><p><b> 3、拍照解碼:</b></p><p> ?。?)調(diào)用瀏覽器:如果二維碼信息隱藏的是以“http://”開(kāi)頭的網(wǎng)址,那么手機(jī)便調(diào)用默認(rèn)瀏覽器瀏覽該網(wǎng)址。</p><p> (2)調(diào)用撥打電話功能:如果二維碼信息隱藏的事以“TEL:”或者是“wtai:”開(kāi)頭的電話號(hào)碼,那么手機(jī)直接調(diào)用撥打電話功能。</p>
78、<p> ?。?)顯示文本信息:如果二維碼信息只是包含一些文本信息,那么直接顯示。</p><p> 3.3.1 系統(tǒng)總體功能模塊</p><p> 通過(guò)上面的對(duì)系統(tǒng)的總體功能模塊的分析,便可以得出系統(tǒng)總體功能模塊圖。系統(tǒng)總體功能模塊圖如圖3.1所示。</p><p> 圖3.1 系統(tǒng)總體功能模塊圖</p><p> 3.
79、3.2 拍照解碼功能模塊</p><p> 在整個(gè)系統(tǒng)模塊中最重要的模塊是拍照解碼功能,因此把這個(gè)模塊單獨(dú)分析,將它的功能進(jìn)行分析如圖3.2所示。</p><p> 圖3.2 拍照解碼功能模塊圖</p><p> 第四章 系統(tǒng)詳細(xì)設(shè)計(jì)</p><p><b> 4.1 系統(tǒng)流程圖</b></p>&
80、lt;p> 系統(tǒng)流程圖(System Flowchart)是描繪系統(tǒng)物理模型的傳統(tǒng)工具。它的基本思想是用圖形符號(hào)以黑盒子形式描繪系統(tǒng)里面的每個(gè)部件(程序、文件、數(shù)據(jù)庫(kù)、表格、人工過(guò)程等),表達(dá)信息在各個(gè)部件之間流動(dòng)的情況。本系統(tǒng)流程圖如圖4.1所示。</p><p> 圖4.1 系統(tǒng)流程圖</p><p> 4.2 圖片處理過(guò)程圖</p><p> 首
81、先圖片的格式必須是JPEG格式的圖片,通過(guò)照相機(jī)預(yù)覽到二維碼圖片之后,需要對(duì)該圖片拍下來(lái),由于QRCODE二維碼是按照一定規(guī)則以矩陣的形式生成的,所以拍照截取到圖片之后需要譯碼字節(jié)數(shù)組,將字節(jié)數(shù)組譯碼成位圖,并將位圖顯示在imageview上,然后通過(guò)decodeQRImage函數(shù)將此位圖送往系統(tǒng)自帶的譯碼函數(shù)譯碼成字符串,最后判斷取出的字符串是否符合OMIA所規(guī)范的規(guī)則。圖片處理過(guò)程圖如圖4.2所示。</p><p
82、> 圖4.2 圖片處理過(guò)程圖</p><p><b> 4.3 界面設(shè)計(jì)</b></p><p> 界面設(shè)計(jì)是人與機(jī)器之間傳遞和交換信息的媒介,一個(gè)好的界面是很重要的。它主要是站在用戶角度考慮,因此界面的設(shè)計(jì)要人性化、簡(jiǎn)潔、清楚,還要有安全性和靈活性。</p><p> 此系統(tǒng)功能整體上可以分為三個(gè)部分。第一部分是相機(jī)預(yù)覽顯示部分
83、,這部分用一個(gè)surfaceview來(lái)實(shí)現(xiàn);第二部分是整個(gè)系統(tǒng)操作部分,分為三個(gè)按鈕,第一個(gè)按鈕為相機(jī)預(yù)覽按鈕,第二個(gè)按鈕為關(guān)閉相機(jī)按鈕,第三個(gè)為拍照解碼按鈕并且為各自按鈕設(shè)置監(jiān)聽(tīng)器并綁定;第三部分是顯示拍照截取的二維碼圖片,在這兒我們用imageview視圖來(lái)顯示。具體系統(tǒng)界面如圖4.3所示。</p><p><b> 圖4.3 系統(tǒng)界面</b></p><p>
84、 第五章 系統(tǒng)編碼實(shí)現(xiàn)</p><p> 5.1 基本編碼設(shè)置</p><p> 從詳細(xì)設(shè)計(jì)我們已經(jīng)知道系統(tǒng)分為三部分,因此我們?cè)O(shè)置一個(gè)變量bIfPreview來(lái)控制相機(jī)是否為預(yù)覽模式,變量初始化為private boolean bIfPreview = false,及設(shè)置相機(jī)預(yù)覽模式為false。因?yàn)橐{(diào)用手機(jī)相機(jī)和撥打電話功能,因此在我們的AndroidManifest.xml文
85、件中應(yīng)該加上相機(jī)權(quán)限和撥打電話權(quán)限語(yǔ)句:</p><p> <uses-permission android:name="android.permission.CAMERA"/></p><p> <uses-permission android:name="android.permission.CALL_PHONE"/>
86、</p><p> 對(duì)于布局文件來(lái)說(shuō),我們分為三層,第一層是拍照預(yù)覽部分,用surfaceview實(shí)現(xiàn);第二部分是三個(gè)按鈕,添加三個(gè)按鈕組件即可實(shí)現(xiàn);第三部分是顯示拍照截取的圖片,我們用imageview來(lái)實(shí)現(xiàn)。對(duì)布局來(lái)說(shuō),每一層都是一個(gè)線性布局LinearLayout。布局文件代碼如下所示:</p><p> <?xml version="1.0" enco
87、ding="utf-8"?></p><p> <LinearLayout</p><p> xmlns:android="http://schemas.android.com/apk/res/android"</p><p> android:background="@drawable/white
88、"</p><p> android:orientation="vertical"</p><p> android:layout_width="fill_parent"</p><p> android:layout_height="fill_parent"</p><
89、p> android:layout_gravity="center_horizontal"</p><p><b> ></b></p><p> <SurfaceView</p><p> android:id="@+id/mSurfaceView1"</p>&
90、lt;p> android:visibility="visible" </p><p> android:layout_width="160px" </p><p> android:layout_height="120px"</p><p> android:layout_gravity=&
91、quot;center_horizontal" ></p><p> </SurfaceView> </p><p> <LinearLayout</p><p> android:orientation="horizontal"</p><p> android:layout_w
92、idth="wrap_content"</p><p> android:layout_height="wrap_content"</p><p> android:layout_gravity="center_horizontal"</p><p><b> ></b>&
93、lt;/p><p><b> <Button</b></p><p> android:id="@+id/myButton1"</p><p> android:layout_width="wrap_content"</p><p> android:layout_hei
94、ght="wrap_content"</p><p> android:text="@string/str_button1"/></p><p><b> <Button</b></p><p> android:id="@+id/myButton2"</p&g
95、t;<p> android:layout_width="wrap_content"</p><p> android:layout_height="wrap_content"</p><p> android:text="@string/str_button2"/></p><p&g
96、t;<b> <Button</b></p><p> android:id="@+id/myButton3"</p><p> android:layout_width="wrap_content"</p><p> android:layout_height="wrap_con
97、tent"</p><p> android:text="@string/str_take_picture"/></p><p> </LinearLayout></p><p> <ImageView</p><p> android:id="@+id/myImageV
98、iew1" </p><p> android:layout_width="wrap_content" </p><p> android:layout_height="wrap_content" </p><p> android:layout_gravity="center" />
99、</p><p> </LinearLayout></p><p> 5.2 相機(jī)預(yù)覽實(shí)現(xiàn)</p><p> 相機(jī)預(yù)覽,用于開(kāi)啟手機(jī)照相機(jī)。我們用一個(gè)按鈕實(shí)現(xiàn)該功能,添加一個(gè)按鈕并且設(shè)置并綁定監(jiān)聽(tīng)器。在監(jiān)聽(tīng)器里面我用一個(gè)initCamera()函數(shù)實(shí)現(xiàn),函數(shù)調(diào)用相機(jī)的OPEN方法即可實(shí)現(xiàn)預(yù)覽功能同時(shí)將變量bIfPreview設(shè)置為true。當(dāng)然我們
100、要取得二維碼,因此我們要不活圖片,我們需要設(shè)置圖片的格式和一些參數(shù)。</p><p><b> 調(diào)用相機(jī)代碼如下:</b></p><p> private void initCamera() {</p><p> if (!bIfPreview) {</p><p> /* 若相機(jī)非在預(yù)覽模式,則開(kāi)啟相機(jī) */
101、</p><p><b> try {</b></p><p> mCamera01 = Camera.open();</p><p><b> } </b></p><p> catch (Exception e) {</p><p> Log.e(TAG, e.
102、getMessage());</p><p><b> }</b></p><p><b> }</b></p><p> 設(shè)置圖片參數(shù)及相關(guān)代碼如下:</p><p> mCamera01.setPreviewDisplay(mSurfaceHolder01);</p>&l
103、t;p> /* 建立Camera.Parameters物件 */</p><p> Camera.Parameters parameters = mCamera01.getParameters();</p><p> /* 設(shè)定相片格式為JPEG格式*/</p><p> parameters.setPictureFormat(PixelFormat.
104、JPEG);</p><p> List<Camera.Size> s = parameters.getSupportedPreviewSizes();</p><p> 其實(shí)現(xiàn)如圖5.1所示:</p><p><b> 圖5.1 相機(jī)預(yù)覽</b></p><p> 5.3 關(guān)閉相機(jī)實(shí)現(xiàn)</p&
105、gt;<p> 我們能調(diào)用手機(jī)相機(jī),當(dāng)然我們也可以關(guān)機(jī)手機(jī)相機(jī)。這里同樣用一個(gè)按鈕并且設(shè)置并綁定監(jiān)聽(tīng)器實(shí)現(xiàn),在監(jiān)聽(tīng)器里面只需要調(diào)用相機(jī)的stopPreview()方法即可關(guān)閉相機(jī),同時(shí)我們要釋放相機(jī)資源將預(yù)覽變量bIfPreview設(shè)置為false。代碼如下:</p><p> private void resetCamera() {</p><p> if (mCam
106、era01 != null && bIfPreview) {</p><p><b> try {</b></p><p> mCamera01.stopPreview();</p><p> /* 釋放Camera對(duì)象 */</p><p> mCamera01.release();</p
107、><p> bIfPreview = false;</p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p>
108、;<p><b> }</b></p><p> 其實(shí)現(xiàn)如下圖5.2所示:</p><p><b> 圖5.2 關(guān)閉相機(jī)</b></p><p> 5.4 拍照解碼實(shí)現(xiàn)</p><p> 本系統(tǒng)的目的就是要將二維碼識(shí)別出來(lái)知道里面所隱藏的信息,因此我們需要一個(gè)拍照解碼的功能。
109、同樣使用一個(gè)按鈕,設(shè)置并綁定監(jiān)聽(tīng)器,監(jiān)聽(tīng)器里面通過(guò)takePicture()函數(shù)調(diào)用相機(jī)的takePicture,takePicture方法調(diào)用一個(gè)jpegCallback回調(diào)函數(shù)專門處理JPEG格式的圖片,調(diào)用onPictureTaken方法將二維碼字節(jié)數(shù)組通過(guò)decodeByteArray方法譯碼成位圖,將位圖顯示在imageview上,再將位圖通過(guò)decodeQRImage函數(shù)譯碼成字符串,對(duì)字符串進(jìn)行比對(duì)實(shí)現(xiàn)其相關(guān)操作。代碼如下
110、:</p><p> private PictureCallback jpegCallback = new PictureCallback() {</p><p> public void onPictureTaken(byte[] _data, Camera _camera) {</p><p> // TODO Handle JPEG image data
111、</p><p><b> try {</b></p><p> /* onPictureTaken傳入的第一個(gè)參數(shù)即為相片的byte */</p><p> Bitmap bm = null;</p><p> bm = BitmapFactory.decodeByteArray(_data, 0, _data
112、.length);</p><p> int resizeWidth = 160;</p><p> int resizeHeight = 120;</p><p> float scaleWidth = ((float) resizeWidth) / bm.getWidth();</p><p> float scaleHeight
113、 = ((float) resizeHeight) / bm.getHeight();</p><p> Matrix matrix = new Matrix();</p><p> /* 使用Matrix.postScale方法縮小 Bitmap Size */</p><p> matrix.postScale(scaleWidth, scaleHeigh
114、t);</p><p> /* 建立新的Bitmap對(duì)象 */</p><p> Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0,</p><p> bm.getWidth(), bm.getHeight(), matrix, true);</p><p> /* 擷取4:3的圖
115、檔的置中紅色框部分100x100像素 */</p><p> Bitmap resizedBitmapSquare = Bitmap.createBitmap(resizedBitmap,</p><p> 30, 10, 100, 100);</p><p> /* 將拍照的圖文件以ImageView顯示出來(lái) */</p><p>
116、 mImageView01.setImageBitmap(resizedBitmapSquare);</p><p> /* 將傳入的圖文件譯碼成字符串 */</p><p> String strQR2 = decodeQRImage(resizedBitmapSquare);</p><p> if (strQR2 != "") {&l
117、t;/p><p> if (URLUtil.isNetworkUrl(strQR2)) {</p><p> /* 如果二維碼信息隱藏的是以“http://”開(kāi)頭的網(wǎng)址,那么手機(jī)便調(diào)用瀏覽器瀏覽該網(wǎng)站 */</p><p> mMakeTextToast(strQR2, true);</p><p> Uri mUri = Uri.par
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何掃描二維碼顯示表格內(nèi)容
- 基于Android平臺(tái)二維碼識(shí)別的研究與實(shí)現(xiàn).pdf
- 基于android的二維碼識(shí)別系統(tǒng)的研究與實(shí)現(xiàn)——畢業(yè)論文
- 基于二維碼打印及掃描識(shí)別系統(tǒng)研發(fā).pdf
- 二維碼軟件如何制作不會(huì)失效的二維碼
- 二維碼資料
- 二維碼漫談
- 基于Android的二維碼生成與識(shí)別研究及軟件實(shí)現(xiàn).pdf
- 開(kāi)題報(bào)告--基于android的二維碼識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 二維碼生成器如何批量生成溯源二維碼
- 二維碼生成器如何批量制作溯源二維碼
- 添加微信gzxxzlk 或掃描下面二維碼
- 二維碼激光高速賦碼及識(shí)別研究.pdf
- 添加微信gzxxzlk 或掃描下面二維碼
- qr二維碼的原理與識(shí)別方法
- 二維碼的生成與解碼論文.doc
- 二維碼感知識(shí)別技術(shù)的研究.pdf
- 基于android的二維碼的生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_馬鳴
- 基于二維碼識(shí)別的門禁系統(tǒng)的研究.pdf
- 扭曲二維碼的識(shí)別算法研究與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論