基于Android的二維碼生成與識別系統(tǒng)的設計與實現(xiàn)_第1頁
基于Android的二維碼生成與識別系統(tǒng)的設計與實現(xiàn)_第2頁
基于Android的二維碼生成與識別系統(tǒng)的設計與實現(xiàn)_第3頁
基于Android的二維碼生成與識別系統(tǒng)的設計與實現(xiàn)_第4頁
基于Android的二維碼生成與識別系統(tǒng)的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、基于android的二維碼生成與識別系統(tǒng)的設計與實現(xiàn) xxxxx本科生畢業(yè)設計論文需全套源程序代碼 695132052 各專業(yè)都有學院系: xx專 業(yè):xx學 生: x 指導教師:x 完成日期 年 月xxxx本科生畢業(yè)設計(論文)基于android的二維碼的生成與識別系統(tǒng)的設計與實現(xiàn)the design and realization of the qr codegeneration and recognition system總 計:畢業(yè)設計論文 28頁表 格: 2個圖 片: 24個xxxx 本 科 畢 業(yè) 設 計論文基于android的二維碼的生成與識別系統(tǒng)的設計與實現(xiàn)the design

2、 and realization of the qr codegeneration and recognition system學 院系: x專 業(yè):x 學 生 姓 名: x學 號:x指導教師職稱:x評 閱 教 師:完 成 日 期:xy基于android的二維碼的生成與識別系統(tǒng)的設計與實現(xiàn)軟件工程 xxx 隨著二維碼的廣泛應用和android智能手機的進一步普及,在本文中介紹了一個通過android平臺下的攝像和繪圖功能,利用二維碼的編碼和解碼原理,通過android手機對二維碼的數(shù)據(jù)進行解析和編碼,實現(xiàn)對二維碼識別和生成的系統(tǒng)。 android平臺;二維碼;二維碼生成;二維碼識別the de

3、sign and realization of the qr codegeneration and recognition systemsoftware engineering majorxxx along with the wide application of planar barcode and android smart phones further popularity. this paper introduces a camera and drawing function in the android workbench. using of the two dimensional

4、barcode encoding and decoding principle, through the android mobile phone resolve and code planar barcode to realize the dimensional barcode identification and generate system. the android platform;qr code;the generation of qrcode;the recognition of qrcode目 錄1. 緒論11.1 本課題的背景11.1.1 二維碼的誕生11.1.2 二維碼在國

5、外的發(fā)展11.1.3 二維碼在國內(nèi)的發(fā)展11.2 本課題的目的和意義22. 開發(fā)環(huán)境及關鍵技術32.1 android系統(tǒng)架構32.2 開發(fā)環(huán)境32.2.1 adt插件32.2.2 二維碼的識別與生成開發(fā)環(huán)境42.3 關鍵技術42.3.1 android五大部件42.3.2 系統(tǒng)的實現(xiàn)的關鍵技術52.4 可能遇到的問題63. 需求分析73.1 系統(tǒng)需求描述73.2 系統(tǒng)需求分析73.3 系統(tǒng)需求說明83.4 系統(tǒng)的可行性分析84. 系統(tǒng)設計94.1 系統(tǒng)框架設計94.2 二維碼生成104.3 二維碼的識別105. 編碼與實現(xiàn)125.1 識別模塊的實現(xiàn)125.1.1 二維碼識別的功能實現(xiàn)125.

6、1.2 二維碼識別的界面設計145.2 生成的實現(xiàn)145.2.1 二維碼生成功能的實現(xiàn)145.2.2 二維碼生成選擇界面設計156. 系統(tǒng)演示與運行186.1 系統(tǒng)的演示說明186.2 在android模擬器端的運行186.2.1 該系統(tǒng)的歡迎界面與主功能界面196.2.2 二維碼的生成演示與運行206.2.3 二維碼的識別演示與運行236.3 在android移動設備端的運行24小結25參考文獻26附錄27致謝28緒論本章通過對二維碼的誕生和其發(fā)展前景的介紹,主要結合二維碼的背景與自己所選該課題,對課題的意義進行闡述和分析。本課題的背景二維碼的誕生一維條碼自出現(xiàn)以來,得到了人們的普遍的關注,

7、發(fā)展速度十分迅速。它的使用,極大的提高了數(shù)據(jù)采集和信息處理的速度,提高了工作效率,并為管理的科學化和現(xiàn)在化做出了巨大的貢獻。由于受信息容量的限制,一維條碼僅僅是對“物品”的標識,而不是對“物品”的描述,故一堆條碼的實用,不得不依賴數(shù)據(jù)庫的存在。在沒有數(shù)據(jù)庫和不聯(lián)網(wǎng)的地方,一維條碼的使用受到了較大的限制,有時甚至變的毫無意義。另外,要用一維條碼表示漢字的場合,顯得十分的不方便,且效率低下?,F(xiàn)代高新技術的發(fā)展,迫切要求用條碼在有限的幾何空間內(nèi)表示更多的信息,從而滿足千變?nèi)f化的信息表示需要。二維碼正是為了解一維條碼無法解決的問題而產(chǎn)生。因而它具有高密度、高可靠性等特點,所以可以用它表示數(shù)據(jù)文件(包括

8、漢字文件)、圖像等。二維碼是大容量、高可靠性信息實現(xiàn)存儲、攜帶并自動適讀的最理想的方法。二維碼在國外的發(fā)展 手機二維碼的業(yè)務類型主要有兩種:一是識讀,就是借助應用軟件直接讀出碼上信息,它可以衍生出上網(wǎng)瀏覽、電子購物等多種應用;二是被讀,就是由商家向手機用戶發(fā)送二維碼信息,通過設備識讀,可作身份識別、電子憑證等之用。 根據(jù)網(wǎng)上資料顯示二維碼在日本和韓國的商用分別始于2002年和2003年。短短幾年的發(fā)展,截至2006年,日本使用手機二維碼的用戶已有6000萬,二維碼廣告、二維碼名片、二維碼票券就像短信那樣常見;韓國市面上約有1500萬部手機支持韓國第一大手機二維碼提供商iconlab的條碼業(yè)務,

9、超市里售賣的蔬菜上也貼有二維碼,消費者拍攝解碼后,就可以獲知產(chǎn)品的產(chǎn)地等信息。由于使用二維碼,給商家?guī)淼氖杖敕浅?捎^,資料顯示,2005年,日本的手機識別二維碼應用已獲得近千萬美元的收入15。二維碼在國內(nèi)的發(fā)展 相關資料顯示,手機二維碼在國內(nèi)的應用也開始嶄露頭角:用二維碼為“超女”投票、易初蓮花超市印有二維碼的購物袋、卓越網(wǎng)的二維碼手機移動書店網(wǎng)舟咨詢預測,今年手機二維碼用戶量將超過1000萬,市場普及率將達到2%,到2008年用戶數(shù)將近5000萬,普及率達到9%,到2009年,用戶量將達到1.1億,普及率達到28%,到2010年,用戶量將突破2億,增長率穩(wěn)定在200%左右,市場普及率達到5

10、3%。網(wǎng)舟咨詢對該業(yè)務的收入增長作出預測,今年的收入規(guī)模可達2億元,到2008年,收入規(guī)模達到4.8億元,2009年將進入高速增長期,2010年收入規(guī)模預計超過16億元15。本課題的目的和意義二維碼的使用已經(jīng)是很普及的事情了,中國移動的廣告里面有一個場景,就是買蘋果的場景,一個人買蘋果,拿出自己的手機,對蘋果上面的二維碼進行掃描,便能夠知道蘋果的產(chǎn)地和摘取過程等信息。國內(nèi)二維碼的應用主要出現(xiàn)在電子憑證、防偽溯源、平面雜志以及數(shù)字出版等領域,技術服務方面可由易拍酷二維碼服務平臺提供。應用案例非常廣泛,各大會議活動中不斷出現(xiàn)二維碼簽到,杭州,成都、北京公交站牌上的二維碼指引市民方便出行;二維碼火車

11、票、飛機票等均屬于二維碼電子憑證類別。對于二維碼應用,我們不僅僅應該只是處于在廣告中實現(xiàn)的地步,本系統(tǒng)結合了二維碼的廣泛應用和android智能手機的普及,實現(xiàn)了android手機對二維碼的解析和生成,可以使那買蘋果的場面不僅僅是在廣告中看到。開發(fā)環(huán)境及關鍵技術二維碼識別與生成基于android平臺,使用到了android系統(tǒng)的關鍵技術有android的activity、intent等主要組件,以下內(nèi)容將進行android平臺以及相應的關鍵技術進行介紹。android系統(tǒng)架構由于該課題主要是基于android平臺,所以在此就簡單的介紹下android平臺的主要架構。如圖2?1就是google公

12、司提出的一個架構圖。圖2?1 android平臺架構圖14開發(fā)環(huán)境本系統(tǒng)主要分為兩個大的模塊:二維碼的生成和二維碼的識別。二維碼的生成主要就是基于winnows上的開發(fā)工具netbeans開發(fā),用java語言來實現(xiàn),而同時又開發(fā)一個在android平臺下的二維碼生成。而二維碼的識別主要就是基于android平臺來開發(fā),主要就是運用android sdk和eclipse共同開發(fā),但是環(huán)境需要搭建。adt插件eclipse adt插件:android開發(fā)工具(adt)是一個為eclipse ide的,旨在為您提供一個強大的,集成的環(huán)境中構建android應用程序的插件。 adt的擴展eclipse

13、的功能,讓您快速建立新的android項目,創(chuàng)建一個應用程序的用戶界面,添加基于android框架api的包,使用android sdk工具調試你的應用程序,甚至出口簽署(或符號) .apk文件為了分發(fā)您的應用程序。引導項目設置與提供,以及工具的集成,自定義的xml編輯器,調試輸出窗格,adt的為您提供了令人難以置信的提高,在開發(fā)android應用程序。二維碼的識別與生成開發(fā)環(huán)境二維碼的生成主要設計的是在電腦上運行的桌面程序。通過在電腦上開發(fā)一個java程序來生成二維碼。其開發(fā)環(huán)境主要如下表:表2?1 windows平臺上開發(fā)使用的環(huán)境 需求名稱平臺及工具 開發(fā)工具net beans 優(yōu)化工具

14、photoshop 開發(fā)語言java 運行環(huán)境windows xp+jdk 測試環(huán)境windows xp+jdk 二維碼的識別和生成是在android平臺上的開發(fā)的,并使用eclipse ide工具進行開發(fā)的。eclipse ide安裝adt插件搭建了很好的android開發(fā)平臺,方便與編程。至于識別的功能要用到攝像頭,虛擬機上面是沒有攝像頭的,這就需要有真機進行二維碼的識別測試。android平臺開發(fā)環(huán)境如下表:表2?2 android平臺開發(fā)使用的環(huán)境 需求名稱平臺及工具 開發(fā)工具eclipse、android sdk、測試機 優(yōu)化工具photoshop 開發(fā)語言java 運行環(huán)境andr

15、oid平臺 測試環(huán)境android平臺關鍵技術android五大部件1、活動(activities)一個活動表示一個可視化的用戶界面,關注一個用戶從事的事件。例如,一個活動可能表示一個用戶可選擇的菜單項列表,或者可能顯示照片連同它的標題。一個文本短信應用程序可能有一個活動,顯示聯(lián)系人的名單發(fā)送信息;第二個活動,寫信息給選定的聯(lián)系人;其他活動,重新查看舊信息或更改設置。雖然他們一起工作形成一個整體的用戶界面,但是每個活動是獨立于其他活動的。每一個都是作為activity基類的一個子類的實現(xiàn)。2、服務(services)一個服務沒有一個可視化用戶界面,而是在后臺無期限地運行。例如一個服務可能是播放

16、背景音樂而用戶做其他一些事情,或者它可能從網(wǎng)絡獲取數(shù)據(jù),或計算一些東西并提供結果給需要的活動(activities)。每個服務都繼承自service基類。3、廣播接收者(broadcast receivers) 一個廣播接收者是這樣一個組件,它不做什么事,僅是接受廣播公告并作出相應的反應。許多廣播源自于系統(tǒng)代碼,例如公告時區(qū)的改變、電池電量低、已采取圖片、用戶改變了語言偏好。應用程序也可以發(fā)起廣播,例如為了他其他程序知道某些數(shù)據(jù)已經(jīng)下載到設備且他們可以使用這些數(shù)據(jù)。4、內(nèi)容提供者(content providers)內(nèi)容提供者(content provider)使一個應用程序的指定數(shù)據(jù)集提供給

17、其他應用程序。這些數(shù)據(jù)可以存儲在文件系統(tǒng)中、在一個sqlite數(shù)據(jù)庫、或以任何其他合理的方式。內(nèi)容提供者繼承自contentprovider 基類并實現(xiàn)了一個標準的方法集,使得其他應用程序可以檢索和存儲數(shù)據(jù)。然而,應用程序并不直接調用這些方法。相反,替代的是它們使用一個contentresolver對象并調用它的方法。contentresolver能與任何內(nèi)容提供者通信,它與提供者合作來管理參與進來的進程間的通信。5、連接組件的紐帶(intent)以上4種基本組件中,除了content provider 是通過content resolver激活外,其他 3 種組件activity 、serv

18、ice 和 broadcast receiver 都是由intent異步消息激活的。 intent在不同的組件之間傳遞消息,將一個組件的請求意圖傳給另一個組件。因此, intent是包含具體請求信息的對象。針對不同的組件,intent所包含的消息內(nèi)容有所不同,且不同組件的激活方式也不同, 且不同類型組件有傳遞 intent的不同方式。intent 是一種運行時綁定(runtime binding)機制,它能夠在程序運行的過程中連接兩個不同的組件。通過intent,你的程序可以向android表到某種請求或者意愿,android 會根據(jù)意愿的內(nèi)容選擇適當?shù)慕M件來處理請求。系統(tǒng)的實現(xiàn)的關鍵技術1、

19、攝像頭操作,識別功能主要應用技術就是對攝像頭的調用,能夠使用攝像頭來自動對焦,使用多線程來對攝像頭捕獲到的圖像進行提交是關鍵的技術。2、多線程的調用,使用多線程來對攝像頭捕獲到的圖像進行提交給二維碼解析器,是使識別時間降低的主要機制,運用多線程的提交,能夠在更快的時間內(nèi)識別用戶需要識別的二維碼。3、繪畫的調用,在二維碼的生成功能里面使用到了android的繪圖功能,是用相應的功能包將要轉換的字符串轉換成二維碼字符串,對輸出的二維數(shù)組進行解析,按照排碼規(guī)范使用android的繪圖功能,將二維碼繪畫出來??赡苡龅降膯栴}基于android平臺下的二維碼的識別與生成軟件可能遇到的問題如下:1、界面問題

20、對于手機上的應用,布局的合理與開發(fā)的人性化使得軟件的歡迎度有很大的區(qū)別,一個漂亮的布局會吸引多數(shù)用戶,前提是功能的實現(xiàn),在功能相同的情況下當然是界面好看的會受到大家的歡迎。2、攝像頭調用問題軟件的識別要進行攝像頭的調用,要對攝像頭部分進行相應的了解,另外應對與用戶的需求來說,時間觀念要充實,應該啟用多線程來進行識別的攝像頭的調用,攝像頭自動對焦問題,還有識別后預覽的圖像傳遞的問題。3、數(shù)據(jù)量大小問題二維碼的容量是有限的,如果書寫的內(nèi)容過多的話,就會產(chǎn)生生成錯誤的二維碼的錯誤流,對于二維碼方面的生成容量問題應該好好的解決。同時android平臺的資源是有限的,解析時需要將攝像頭掃描到的大量圖像數(shù)

21、據(jù)向后臺進行傳輸,這會消耗很多資源。4、生成和識別中的若干問題二維碼的生成是將字符串轉換成圖像,這個過程要通過二維碼的編碼原理來進行轉換,其中的轉換可能會存在未知問題。識別的時候使用解析后臺進行圖像的解析,數(shù)據(jù)量會比較大,解析過程的時間復雜度比較大,可能會出現(xiàn)不可預知到問題。 本章中提到關鍵技術是android的核心技術,我會在編碼和實現(xiàn)之前對以上提出的關鍵技術進行學習了解,工欲善其事必先利其器,先將自己充實起來。通過對android的學習,增加了我對上節(jié)提出來可能遇到的問題解決的信心,我相信在后面的編碼和實現(xiàn)中,我會通過很好的利用網(wǎng)絡資源和自己學習的積累對克服存在的問題的。需求分析經(jīng)過前面章

22、節(jié)內(nèi)容的介紹,在本章中將對二維碼的生成和識別的需求分析進行闡述。主要包括系統(tǒng)需求概述、系統(tǒng)需求分析、系統(tǒng)的可行性分析。系統(tǒng)需求描述現(xiàn)在二維碼是越來越流行,當然人們對二維碼也越來越感興趣。出于對二維碼的好奇,很多人都開始研究二維碼。人們不斷的提問,二維碼到底是怎么生成和識別的呢?我想很多的人都不知其中的原理。而在本論文中主要介紹的就是二維碼的生成和識別。對于二維碼的生成與識別提出如下需求:1、二維碼的生成要能夠生成包含一定信息的二維碼,生成后的二維碼能夠被二維碼的識別軟件很好的識別出來。同時二維碼的生成能夠支持多種功能信息的生成。2、二維碼的識別要能夠很好的識別出來一些二維碼的中多包含的信息,在

23、識別的過程中能夠對各種二維碼進行識別,也包括條形碼。系統(tǒng)需求分析系統(tǒng)總體需求如下圖所示:圖3?1系統(tǒng)總體需求圖本論文是基于android平臺,設計開發(fā)一款識別與生成二維碼的軟件(能兼容的識別條形碼),很重要的一點就是本系統(tǒng)是基于android手機上面的攝像頭來對二維碼的識別的,所以要使用二維碼的識別功能便需要android手機或者是平板,帶有攝像頭。系統(tǒng)總體功能業(yè)務可以描述為以下幾點:1、一個友好的歡迎界面2、功能的選擇(識別功能,生成功能)3、能對二維碼(包括條形碼)識別解析4、能夠生成用戶所需的二維碼系統(tǒng)需求說明根據(jù)系統(tǒng)的主要需求進行分析,總結功能需求做如下說明:1、實現(xiàn)對二維碼的生成功能

24、。主要就是能夠正確的生成客戶需要的二維碼,就是說能夠正確無誤的將用戶的輸入信息轉換成二維碼。經(jīng)過分析,要實現(xiàn)最常用的功能,即名片的生成、短信的生成、文本的生成、電子郵件的生成、網(wǎng)絡書簽的生成。2、實現(xiàn)對二維碼的是識別功能。主要就是系統(tǒng)要能夠識別二維碼(包括條形碼),并能夠對二維碼(包括條形碼)進行正確的解析。然后把所解析出來的信息以文字的信息輸出來。3、生成和識別的過程中,速度要快。不能是用戶等待很久才生成和識別出來,這樣一方面說明該系統(tǒng)是失敗的,另一方面會對浪費用戶的時間,造成不可估量的后果。系統(tǒng)的可行性分析以前我們進入超市買東西,都知道商品上面是有條形碼的,我們也知道,條形碼的識別機器是像

25、紅外線的東西,我們在信息的時代下,手機的發(fā)展越來越廣闊,我們中國人平均一個人就有一個半手機,隨著智能手機的流行,手機更是發(fā)展紅火,特別是android系列的智能手機發(fā)展更為廣闊,隨著android手機的流行到現(xiàn)在,android手機已經(jīng)很普遍了,據(jù)調查顯示android手機的市場占有率達到60%以上,二維碼的流行的到來,是人們特別的感興趣,那么結合android手機和二維碼的流行,應該有一個方便與二者之間的軟件來使之得到雙贏,手機上面有攝像頭,是不是能夠通過攝像頭來進行二維碼的識別呢?答案是肯定的,所以,基于android系統(tǒng)的二維碼的識別與生成軟件系統(tǒng)是可行的,并且是很有市場需求的。經(jīng)過上述

26、需求的分析和現(xiàn)在手機上的一些二維碼掃描的出現(xiàn),本論文中提到的各項系統(tǒng)功能的實現(xiàn)是可行的,在后續(xù)章節(jié)中將于一一介紹。系統(tǒng)設計根據(jù)上面章節(jié)中系統(tǒng)的需求描述,本章將進行系統(tǒng)的設計。系統(tǒng)設計主要從提供的整體到各個功能部分的設計入手,本節(jié)中將分為:系統(tǒng)框架設計 、二維碼生成設計、二維碼識別生成。系統(tǒng)框架設計本系統(tǒng)框架結構主要分成生成和識別兩大部分,針對二維碼的生成部分,我感覺不僅僅要局限于android手機,也可以編寫一個可以在電腦上生成二維碼的軟件,這樣大家使用起來會更加的方便,至于識別方面,在電腦上也完全可以實現(xiàn),可以調用系統(tǒng)的攝像頭進行識別。而本課題主要是基于android平臺,所以在androi

27、d平臺上二維碼的識別主要就是調用android的攝像頭模塊,對攝像頭進行對焦,回傳圖像信息,對圖像信息進行識別等。生成模塊主要是應用了android的繪圖功能,將二維碼進行繪制。其中識別的判斷是系統(tǒng)自動完成的,而生成的判斷是根據(jù)用戶的選擇會進行相應的顯示和生成功能。系統(tǒng)功能結構如下圖所示:圖4?1系統(tǒng)功能模塊圖該系統(tǒng)的識別模塊方面主要是通過android手持設備上的攝像頭進行圖像采集,經(jīng)過系統(tǒng)的分析識別,來進行二維碼(包括條形碼)的辨別功能。生成方面的內(nèi)容相對多,包括名片的生成,短信的生成,文本的生成,電子郵件的生成,網(wǎng)絡書簽的生成。生成功能主要就是對二維碼的生成。而生成這個功能可以在電腦上運

28、行生成,也可以在手機上運行生成。二維碼的生成主要支持名片、短信、文本、電子郵件及網(wǎng)絡書簽的生成。當用戶選擇好多要生成的對象時,就會把用戶輸入的信息送到后臺,通過調用解析包,來生成還有相應信息的二維碼。識別功能主要就是對二維碼和條形碼的識別。主要就是通過手機的攝像頭對二維碼或者是條形碼進行掃描,然后把把掃描到的二維碼或者是條形碼送到后臺進行解析,如果解析成功后,就不再進行掃描。如果解析不成功,就會在進行掃描采集圖像,在傳到后臺解析,直到能夠識別圖像為止。二維碼生成二維碼的生成,支持多種形式內(nèi)容的二維碼生成。所以用戶要先進行選擇要生成的類型,當選擇類型以后,系統(tǒng)將轉入到多選該類型的生成界面給用戶,

29、用戶將相應的信息填寫完成,點擊生成二維碼,會跳轉到生成界面,顯示生成的二維碼。二維碼生成詳細流程設計如下圖所示:圖4?2二維碼生成功能流程圖二維碼的識別 二維碼生成主要是通過對攝像頭的調用,啟用多線程,對攝像頭進行快速的回調應用,當一次回調的圖像沒有識別出來就進行下一次的回調,直到識別出二維碼為止。同時由于對與二維碼的大小不同,顯示的模糊度不同等等原因,會使攝像頭不能很好的采集圖像,在這里要使攝像頭能夠進行自動對焦,從而使識別更快的實現(xiàn)。當識別完成以后就對用戶進行提醒,對手機進行震動和播放聲音,播放完成,顯示識別出來的結果。二維碼生成部分的功能流程圖詳細如下圖所示:圖4?3二維碼識別功能流程圖

30、到此系統(tǒng)的基本設計已經(jīng)完成,下一步將進行系統(tǒng)的代碼的書寫。編碼與實現(xiàn)打開軟件顯示軟件的logo和版本版權信息。然后就是功能的選擇界面,包括生成和識別兩個功能,選擇識別功能系統(tǒng)便會進入識別狀態(tài),將手機攝像頭對準要識別的二維碼或者是條形碼,手機便開始識別,當識別結束,手機會發(fā)出聲音和震動提示。生成方面,選擇相應的生成選項填充內(nèi)容,點擊生成按鈕,系統(tǒng)便能生成相應的二維碼,當輸入字符過長超過二維碼的容量時會顯示一個超出容量的圖片。系統(tǒng)流程設計如下:圖5?1系統(tǒng)總體流程圖根據(jù)上一章中的設計,本章中將進行系統(tǒng)的編碼和實現(xiàn),主要分為三大部分,識別功能的實現(xiàn)、生成功能的實現(xiàn)、系統(tǒng)總體的實現(xiàn),下面將對其逐一進行

31、介紹。識別模塊的實現(xiàn)二維碼的識別功能主要體現(xiàn)在后臺的處理,調用攝像頭,打開攝像頭進行掃描。將攝像頭掃描的數(shù)據(jù)傳給后臺,然后后臺對掃描來的圖像進行處理,進行識別。識別成功就將識別出來的內(nèi)容顯示出來,識別不成功就繼續(xù)識別。二維碼識別的功能實現(xiàn)系統(tǒng)在手機上實現(xiàn)圖像的采集是重要的一步,在android 平臺上,是使用camera 類來完成攝像頭的調用和圖像采集 使用 camera mcamera camer-a. open 獲得camera 的實例,然后使用 camer-a.parameters 來設置獲得圖像的大小,最后通過實現(xiàn)camera. preview-callback 的接口 onprevi

32、ewframe byte data, camera camera 來獲得攝像頭的圖像數(shù)據(jù)data。為能夠較快地獲得清晰的圖像,提高識別速度,文中使用了自動對焦技術。另外還應該對對焦進行定時操作,這就需要設置一個定時器對自動對焦進行定時調用。后臺對攝像頭傳過來的圖像數(shù)據(jù)data進行解碼處理,如果能夠解析出來,則上面的對焦調用,攝像頭回傳圖像數(shù)據(jù)調用等將暫停。如果解析不成功,則繼續(xù)輪回調用。節(jié)約解析的時間。主要實現(xiàn)代碼如下:public void handlemessagemessage message switch message.what case /.o_focus:/ 當一個自動對焦傳遞結

33、束后,開始另一個。這是最接近/ 連續(xù)自動對焦。它似乎打獵了一點,但我不知道還能做什么。if state state.preview /.uestautofocusthis, /.o_focus;break;case /.tart_preview:log.dtag, got restart preview message;restartpreviewanddecode;break;case /.ode_succeeded:log.dtag, got decode succeeded message;state state.success;bundle bundle message.getdata

34、;bitmap barcode bundle nullnull : bitmap bundlegetparcelabledecodethread.barcode_bitmap;try activity.handledecoderesult message.obj, barcode;catch exception e e.printstacktrace;break;case /.ode_failed:/ 我們盡可能快的解碼,所以當一個解碼失敗,開始另一個state state.preview;/.uestpreviewframedecodethread.gethandler,/.ode;brea

35、k;case /.urn_scan_result:log.dtag, got return scan result message;/.ult_ok, intent message.obj;activity.finish;break;case /.nch_product_query:log.dtag, got product query message;string url string message.obj;intent intent new intentintent.action_view, uri.parseurl;/.g_activity_clear_when_task_reset;

36、activity.startactivityintent;break;二維碼識別的界面設計二維碼的識別界面主要是有一個textview和一個自定義的掃描框。二維碼的識別功能界面設計如下圖所示:圖5?2二維碼識別界面示意圖生成的實現(xiàn) 二維碼的生成主要是靠官方相應的編碼包,將用戶輸入字符轉換成二維數(shù)組,然后根據(jù)二維碼的編碼規(guī)范,使用繪圖功能將二維碼進行繪制,主要實現(xiàn)如下:二維碼生成功能的實現(xiàn)二維碼的生成根據(jù)第四章的系統(tǒng)框架設計,生成主要分為名片、短信、文本、電子郵件、網(wǎng)絡書簽的生成。需要有相應的框架使程序與用戶進行交互,使用戶有選擇自己想要生成的類型,然后就是用戶將自己想編輯的信息輸入到系統(tǒng)內(nèi),系

37、統(tǒng)應該提供相應的交互界面給用戶輸入。主要生成代碼如下:/ 自定義qrcode函數(shù)public void androidqrencodestring strencoding, int qrcodeversion try / 構建qrcode編碼對象/.l.qrcode testqrcode new /.l.qrcode;testqrcode.setqrcodeerrorcorrectm;testqrcode.setqrcodeencodemodeb;testqrcode.setqrcodeversionqrcodeversion;byte bytesencoding strencoding.ge

38、tbytesutf-8;if bytesencoding.length 0 boolean bencoding testqrcode.calqrcodebytesencoding;drawqrcodebencoding, /.wable.black;catch exception e e.printstacktrace;/ 在surfaceview上繪制qrcode條形碼private void drawqrcodeboolean brect, int colorfill /* test canvas */int intpadding 20;/ 繪圖前先鎖定surfaceholdercanva

39、s mcanvas01 msurfaceholder01.lockcanvas;mcanvas01./.wable.white;paint mpaint01 new paint;mpaint01./.l;mpaint01.setcolorcolorfill;mpaint01.setstrokewidth1.0f;/ 逐一加載boolean數(shù)組for int i 0; i brect.length; i+ for int j 0; j brect.length; j+ if brectji / 繪出條形碼方塊mcanvas01.drawrectnew rectintpadding + j * 3

40、 + 2,intpadding + i * 3 + 2, intpadding + j * 3 + 2 + 3,intpadding + i * 3 + 2 + 3, mpaint01;msurfaceholder01.unlockcanvasandpostmcanvas01;二維碼生成選擇界面設計生成二維碼有很多的選擇,包括名片,短信,郵件等選擇,進入到二維碼生成功能首先就是二維碼生成類型的選擇設計效果如下主要是按鈕,點擊相應的按鈕,系統(tǒng)會進入到相應的用戶輸入界面,設計如下圖所示:圖5?3二維碼生成類型選擇系統(tǒng)為用戶提供相應的選擇,讓用戶選擇自己想要生成二維碼的類型,然后進入相應的交互頁面。

41、該界面設計如下圖所示:圖5?4二維碼名片生成示意圖如果用戶選擇了名片,系統(tǒng)將顯示如上圖所示界面,供用戶輸入自己想要的名片信息。該界面設計如下圖所示:圖5?5二維碼短信生成示意圖如果用戶選擇了短信,則系統(tǒng)就會轉到如上界面,供用戶進行輸入信息內(nèi)容。該界面設計如下圖所示:圖5?6二維碼文本生成示意圖如果用戶選擇了文本,系統(tǒng)跳轉到文本頁面,用戶可以輸入自己的文本內(nèi)容。該界面設計如下圖所示:圖5?7二維碼郵件生成示意圖用戶選擇郵件,系統(tǒng)跳轉到郵件頁面,用戶便可輸入郵件的內(nèi)容。系統(tǒng)包含有兩大模塊,二維碼的識別和生成模塊。系統(tǒng)應該結合兩大模塊,實現(xiàn)兩大模塊的組合,形成系統(tǒng)。系統(tǒng)演示與運行經(jīng)過了長時間的編碼設

42、計,完成了第一個版本的開發(fā),以下是對系統(tǒng)進行演示與運行。進行簡單的運行測試。系統(tǒng)的演示說明在對編碼的工作完成以后,該系統(tǒng)基本上就算完成了,現(xiàn)在就是展示自己的稱過的時候了。在這里,我們主要分在android的模擬器上的運行和在手機上的運行。當然,我們主要的還是在模擬器上演示。在模擬器上的演示主要包括二維碼的生成演示和二維碼的掃描演示,通過界面的演示效果可以更好的體現(xiàn)該系統(tǒng)的功能。在手機上運行,一方面可以看看該系統(tǒng)在手機上的兼容性,另一方面可以看看在手機上的效果。因為我們的系統(tǒng)主要是在手機上運行,所以要保證在手機上的視覺效果。在android模擬器端的運行眾所周知,android sdk提供給我們

43、一個手機模擬器。這個手機模擬器的功能也是相當?shù)膹姶?。在上面我們可以進行很多的操作。比如通過瀏覽器上網(wǎng)、安裝一些程序、發(fā)送短信、手機的設置等等。當然虛擬器的屏幕支持鼠標的點擊觸屏。這一點的設計上很是新穎,總體的感覺就是在操作手機一樣。模擬器的演示如下圖:圖6?1 android模擬器的效果圖該系統(tǒng)的歡迎界面與主功能界面歡迎界面該界面主要就是顯示該系統(tǒng)的主題和一些相關的信息。主要就是該系統(tǒng)的題目、作者等等。歡迎界面的演示如下圖所示:圖6?2歡迎界面主功能界面這是該系統(tǒng)的主要功能界面,就是對二維碼生成和掃描功能的選擇界面。通過選擇相應的功能跳到相應的功能界面。主功能界面的演示如下圖所示:圖6?3主功

44、能界面二維碼的生成演示與運行二維碼的生成主要就是在輸入相應的文字信息時,該系統(tǒng)能夠自動生成相應的二維碼。該系統(tǒng)主要提供五個方面的文字的生成,即名片、短信、文本、電子郵件、網(wǎng)絡書簽。二維碼生成的功能選擇演示如下圖所示:圖6?4二維碼生成主界面 然后分別選擇相應的功能會跳到各個功能界面。名片功能界面讓用戶輸入相應的姓名、職業(yè)電話等生成二維碼。該界面的演示如下圖所示:圖6?5名片生成主界面 短信功能界面主要就是讓用戶輸入收件人和正文來生成二維碼。該界面的演示如下圖所示:圖6?6短信生成界面 文本功能界面主要就是讓用戶輸入標題和正文來生成二維碼。該界面的效果如下圖所示:圖6?7文本生成界面 電子郵件功

45、能界面主要就是讓用戶輸入收件人、主題和正文等信息來生成二維碼。該界面的演示如下圖所示:圖6?8電子郵件生成界面 網(wǎng)址書簽功能界面主要就是讓用戶輸入標題、網(wǎng)址等信息來生成二維碼。該界面的演示如下圖所示:圖6?9網(wǎng)址書簽生成界面 用戶輸入完成,選擇點擊生成qrcode按鈕,系統(tǒng)便會進入生成的界面,生成相應的二維碼。 網(wǎng)址書簽生成二維碼的演示如下圖所示:圖6?10網(wǎng)址書簽的生成的效果圖二維碼的識別演示與運行二維碼的掃描主要就是通過移動設備上的額攝像頭來掃描二維碼,然后進行系統(tǒng)分析,最后顯示出來結果。二維碼的識別界面的設計如下圖所示:圖6?11識別界面效果圖在android移動設備端的運行androi

46、d sdk提供的模擬器的功能已經(jīng)相當?shù)娜?但是還是不能夠完全的替代手機。因為一些問題在模擬器的那種環(huán)境下不能很好的測試出來。比如在導入到手機上安裝是可能會遇到一些問題。在這里可能遇到的版本的問題或者是兼容等些問題。不過在安裝到手機以后,這些問題并沒有真正的出現(xiàn)。所以總體來說,該系統(tǒng)已經(jīng)基本上實現(xiàn)了在手機上的運行。程序導入手機的兩種方法:1、把程序安裝文件(.apk文件)導入到手機內(nèi)存或者是sd卡中,然后到手機上安裝即可。2、將手機與pc機通過數(shù)據(jù)線連接,然后再pc機上安裝配套的手機設備驅動,然后在eclipse中進行游戲的運行配置,選擇從手機設備運行,這樣游戲就會自動部署到手機端并運行。小結

47、基于android的二維碼生成與識別系統(tǒng)的基本的功能已經(jīng)實現(xiàn),當然也有許多不完美的地方。但是其基本的生成與識別功能都得以實現(xiàn)。在此,還是對自己的這次畢業(yè)設計做個總結和展望。畢業(yè)設計總結:這次畢業(yè)設計主要就是針對google推出的android平臺來進行對二維碼的生成與識別。當然該系統(tǒng)不需要數(shù)據(jù)庫,主要就是對調用一些接口。起初由于對二維碼的知識了解的很少,所以根本就不知道怎么下手,但是后來通過上網(wǎng)查詢一些資料和有關android的api,自己才算基本上有了思路。當然在網(wǎng)上也看到了一些關于二維碼識別的代碼,通過學習,了解了在android平臺下對二維碼的識別的實現(xiàn),但是當初設計程序對移動設備的攝像

48、頭的調用,就是調不出來,后來在網(wǎng)上查詢得知是調用錯誤,更正后完好的調用出來了。而對二維碼的生成是在電腦上用java做的一個應用程序。主要就是運用java語言編寫。但是總體來說,還是基本上完成了在android平臺下二維碼的生成和識別這兩個大功能。未來展望:雖說基本功能都已完善,但是還有許多的地方仍然需要改進和修改。如果以后時間允許的話,我還想在為下面的幾個方面做個優(yōu)化和完善。1、代碼與界面的優(yōu)化。代碼的通讀行好的話,該系統(tǒng)會受到很多的android愛好者的喜愛,同時,漂亮的界面可以吸引更多的用戶來用軟件。2、增加額外的功能??梢栽黾哟鎯δ?把掃描過的和識別過的存到移動設備的內(nèi)存里,以備以后用戶在用。在這里,我們主要還是運用第一種方法,以為在安裝的過程我們可以發(fā)現(xiàn)一些第二種方法不曾遇到的問題,從而給予解決。參考文獻余志龍等,google android sdk開發(fā)范例大全m.北京:人民郵電出版社.2010楊豐盛, android應用開發(fā)揭秘m.北京: 機械工業(yè)出版社ed burnette美編, hello, androidm.北京:民郵電出版社張龍祥, uml與系統(tǒng)分析設計第二版 m.北京:民郵電出版社李代平, 軟件工程(第2版)m.北京: 清華大學出版社葉柄發(fā),小華,究與開發(fā)雜志-andr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論