基于Android的二維碼識(shí)別系統(tǒng)的研究 與實(shí)現(xiàn)
XXXX
本科生畢業(yè)設(shè)計(jì)(論文)
學(xué)院(系): XX
專 業(yè): XX
學(xué) 生: XX
指導(dǎo)教師: XX
XX
完成日期 年 月
XXX本科生畢業(yè)設(shè)計(jì)(論文)
基于Android的二維碼識(shí)別系統(tǒng)的研究
與實(shí)現(xiàn)
Research and Implementation of QRcode Recognition System Based on Android
總 計(jì):畢業(yè)設(shè)計(jì)(論文) 31頁
表 格: 5個(gè)
圖 片: 20個(gè)
XXXXX 本 科 畢 業(yè) 設(shè) 計(jì)(論文)
基于Android的二維碼識(shí)別系統(tǒng)的研究
與實(shí)現(xiàn)
Research and Implementation of QRcode Recognition System Based on Android
學(xué) 院(系): XXX
專 業(yè): XXX
學(xué) 生 姓 名: XXX
學(xué) 號(hào): XXX
指導(dǎo)教師(職稱): XXX
指導(dǎo)教師(職稱): XXX
評(píng) 閱 教 師: XXX
完 成 日 期:
基于Android的二維碼識(shí)別系統(tǒng)的研究
與實(shí)現(xiàn)
軟件工程 XXX
一維條碼在生產(chǎn)和生活的各個(gè)方面得到了廣泛的應(yīng)用,極大的提高了生產(chǎn)率,但是一維條碼本身的缺點(diǎn):信息量小、依賴數(shù)據(jù)庫等也日益的現(xiàn)露出來。二維條碼本身具有高容量、高密度、糾錯(cuò)能力強(qiáng)、安全強(qiáng)度高等特點(diǎn),使得二維條碼作為信息的載體在信息自動(dòng)化領(lǐng)域發(fā)揮著越來越重要的作用。QR碼作為快速響應(yīng)二維碼,以其獨(dú)特的優(yōu)勢(shì),在漢語國(guó)家發(fā)展迅速。目前,國(guó)內(nèi)QR碼的識(shí)別大多是基于PC的,而且對(duì)于光照不均、背景較復(fù)雜的二維碼圖像,其識(shí)別速度和準(zhǔn)確度也有待提高。另外,Android平臺(tái)上當(dāng)前流行的二維碼識(shí)別軟件普遍存在著掃描速度慢,需要精確對(duì)焦等缺點(diǎn),而且大都是由國(guó)外開發(fā)。鑒于此,深入研究QRCode碼的準(zhǔn)確與快速識(shí)別算法及其在Android手機(jī)平臺(tái)上的軟件實(shí)現(xiàn)具有十分重要的意義。本課題分析研究QRCode二維碼編解碼原理與圖像預(yù)處理算法,根據(jù)Android嵌入式平臺(tái)的特點(diǎn),設(shè)計(jì)出一種嵌入式設(shè)備中的QRCode二維碼別軟件,具有很強(qiáng)的實(shí)用性。本文首先分析研究了QR碼結(jié)構(gòu)的基本特征、編解碼理論、RS糾錯(cuò)算法和二維碼圖像預(yù)處理算法,然后在當(dāng)前預(yù)處理算法的基礎(chǔ)上,基于QR碼圖像的特點(diǎn),進(jìn)行程序的編寫。課題利用Android平臺(tái),設(shè)計(jì)出一套QR碼的識(shí)別系統(tǒng),系統(tǒng)首先在模擬器中運(yùn)行,然后下載到手機(jī)中進(jìn)行測(cè)試。最后論文給出了測(cè)試結(jié)果。
Android;條碼;二維碼;識(shí)別
Research and Implementation of QRcode Recognition System Based on Android
Software Engineering MajorXXX
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 increasingly 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 ability, which make it play more and more important role in information and automation field. QRCode(Quick Response Code), as a 2-D barcode, develops rapidly in Chinese speaking countries with its unique advantages. At present, in our nation, recognition of QRCode mostly bases on PC, and especially for QR image with uneven illumination or complicated background, the recognition speed and accuracy are not so good. Moreover, the popular barcode recognition software on android platform has some shortcomings prevalently, such as slow speed of recognition, etc. This article studies the QRCode codec theory and barcode image preprocessing algorithms, and then puts forward some optimization algorithms based on embedded android mobile phone system, and designs a QRCode recognition system. At first, this thesis makes a deep research on QRCode features, codec theory, RS error correction algorithm and 2-D barcode image preprocessing algorithms. And then in the current pretreatment algorithm, and on the basis of the characteristics of the QR code based on image, the writing of the program. Then, a QRCode recognition system is implemented on Android platform. This system firstly is tested on emulator and then downloaded on HTC mobile phone. At last, thesis gives the test results.
Android;Barcode;Two-dimension code;Recognition
目 錄
1 Android系統(tǒng)開發(fā)背景與意義11
1.1 Android系統(tǒng)平臺(tái)的出現(xiàn)11
1.2 Android系統(tǒng)的發(fā)展11
1.3 Android系統(tǒng)架構(gòu)的介紹11
1.4 Android開放系統(tǒng)33
1.5 Android系統(tǒng)的特點(diǎn)33
2 二維碼識(shí)別系統(tǒng)背景介紹33
2.1 二維碼識(shí)別系統(tǒng)背景33
2.1.1 二維碼技術(shù)產(chǎn)生的背景33
2.1.2 二維碼分類及其特點(diǎn)44
2.1.3 二維碼技術(shù)國(guó)內(nèi)外的發(fā)展55
2.2 二維碼技術(shù)研究的意義和應(yīng)用66
2.2.1 二維碼技術(shù)的應(yīng)用66
2.2.2 二維碼研究的意義77
3 需求分析88
3.1 系統(tǒng)需求分析88
3.1.1 課題可行性分析88
3.1.2 課題功能需求分析99
3.1.3 課題功能需求分析說明99
3.1.4 系統(tǒng)界面需求99
3.1.5 系統(tǒng)性能需求99
3.1.6 運(yùn)行環(huán)境需求99
3.2 系統(tǒng)需要解決的問題99
3.3 系統(tǒng)關(guān)鍵技術(shù)分析1010
3.4 本章總結(jié)1010
4 系統(tǒng)設(shè)計(jì)1010
4.1 課題需要解決的問題1010
4.1.1 界面布局1010
4.1.2 條形碼二維碼解碼功能1010
4.2 系統(tǒng)總體設(shè)計(jì)1111
4.2.1 課題功能框架1111
4.2.2 課題總體流程圖1212
4.2.3 數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)1313
4.3 系統(tǒng)詳細(xì)設(shè)計(jì)1313
4.3.1 系統(tǒng)模塊設(shè)計(jì)1313
4.3.2 系統(tǒng)界面詳細(xì)設(shè)計(jì)1616
4.3.3 數(shù)據(jù)庫詳細(xì)設(shè)計(jì)1616
4.4 本章小結(jié)1717
5 編碼與實(shí)現(xiàn)1717
5.1 開發(fā)環(huán)境搭配1717
5.1.1 軟件下載安裝1717
5.1.2 配置環(huán)境變量1717
5.2 二維碼識(shí)別系統(tǒng)功能實(shí)現(xiàn)1717
5.2.1 二維碼識(shí)別系統(tǒng)界面設(shè)計(jì)1717
5.2.2 二維碼功能的設(shè)計(jì)與實(shí)現(xiàn)1919
5.2.3 查看掃描歷史記錄功能實(shí)現(xiàn)2121
5.2.4 分享功能實(shí)現(xiàn)2222
5.3 本章小結(jié)2222
6 系統(tǒng)測(cè)試與運(yùn)行2222
6.1 測(cè)試目的2222
6.2 測(cè)試環(huán)境2323
6.3 測(cè)試的流程和測(cè)試2323
6.3.1 基于Android模擬器的運(yùn)行測(cè)試2323
6.3.2 基于Android移動(dòng)設(shè)備的運(yùn)行測(cè)試2424
6.4 本章小結(jié)2727
結(jié)束語2828
參考文獻(xiàn)2929
附錄3030
致謝3131
Android系統(tǒng)開發(fā)背景與意義
Android系統(tǒng)平臺(tái)的出現(xiàn)
Android操作系統(tǒng)最初是由Andy Rubin開發(fā),最初主要支持手機(jī)。2005年由Google收購(gòu)注資。并組建開放手機(jī)聯(lián)盟開發(fā)改良,后來Google公司進(jìn)軍移動(dòng)領(lǐng)域,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。直到2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統(tǒng),并且在這天谷歌宣布建立一個(gè)全球性的聯(lián)盟組織,該組織由34家手機(jī)制造商、軟件開發(fā)商、電信運(yùn)營(yíng)商以及芯片制造商共同組成。這一聯(lián)盟將支持谷歌發(fā)布的手機(jī)操作系統(tǒng)以及應(yīng)用軟件,并共同開發(fā)Android系統(tǒng)的開放源代碼。這一開放平臺(tái)后來被人們稱之為“Android工程”。
第一款搭載 Android 系統(tǒng)的手機(jī)是 2008 年 9 月由 T-Mobile 發(fā)布的 G1,它擁有 GPS 功能,3.1M 攝像頭,以及一系列的 Google 應(yīng)用。G1 的面市,正式拉開了 Google 以及整個(gè)移動(dòng)業(yè)界激動(dòng)人心的大冒險(xiǎn)的序幕,Android系統(tǒng)這才真正進(jìn)入智能手機(jī)舞臺(tái)。Android系統(tǒng)的發(fā)展
隨著Android平臺(tái)的推出到現(xiàn)在的普遍推廣,其發(fā)展的速度可以稱之為神速。從最初的平臺(tái)的發(fā)布,許多的手機(jī)巨頭都看到了Android的巨大前景并紛紛加入Android平臺(tái)的研究與開發(fā)。后來隨著Android各版本的相繼發(fā)布及其開放性,Android越來越受歡迎。
隨著Android2.0智能手機(jī)操作系統(tǒng)的正式發(fā)布,Android已經(jīng)相當(dāng)?shù)幕馃?。隨后Google相繼宣布與雅虎、亞馬遜等知名公司合作。截止到2012年,Google相繼發(fā)布了android系統(tǒng)的一系列版本,每個(gè)新的版本不但向下兼容,而且也提供了新的功能,系統(tǒng)更加穩(wěn)定。到2011年第一季度,Android在全球的市場(chǎng)份額首次最超越塞班系統(tǒng),躍居全球第一。2012年2月數(shù)據(jù),Android占據(jù)全球的智能手機(jī)操作系統(tǒng)市場(chǎng)的52.5%的份額,中國(guó)占有率為68.4%[1]。Android系統(tǒng)架構(gòu)的介紹
Android操作系統(tǒng)是一個(gè)開源的軟件平臺(tái),基于Linux 內(nèi)核,定義并實(shí)現(xiàn)了一套系統(tǒng)服務(wù)框架和圖形用戶接口。Android操作系統(tǒng)組成如圖1-1所示:

圖1-1 Android系統(tǒng)架構(gòu)
從軟件的角度來看,Android平臺(tái)由Linux內(nèi)核、系統(tǒng)庫、Android運(yùn)行時(shí)、應(yīng)用程序框架以及應(yīng)用程序共5部分構(gòu)成。
(1) Linux 內(nèi)核(Linux Kernel),主要也就是操作系統(tǒng)的內(nèi)核框架和硬件驅(qū)動(dòng)。這也是Android平臺(tái)的開放性、安全性的基礎(chǔ)。所示就是Linux內(nèi)核層為我們?cè)谲浖雍陀布咏⒌某橄髮?如下圖1-2所示:

圖1-2 Android系統(tǒng)內(nèi)核
(2)Android的系統(tǒng)庫(Libraries),主要采用C/C++語言編寫,為Android系統(tǒng)服務(wù)提供一些底層實(shí)現(xiàn)和一些函數(shù)庫。
(3)Android運(yùn)行時(shí)(Android Runtime),主要就是提供一個(gè)Android虛擬機(jī)和虛擬機(jī)運(yùn)行的一些類庫。
(4)應(yīng)用程序框架(Application Framework),主要實(shí)現(xiàn)Android的系統(tǒng)框架和GUI。應(yīng)用程序框架層包含了視圖系統(tǒng)、內(nèi)容提供器、窗口管理器、活動(dòng)管理器、通知管理器、位置管理器、資源管理器、電話管理器和包管理器9大部分,如圖1-3所示:

圖1-3 Android應(yīng)用框架
(5)應(yīng)用程序(Applications),主要就是包含Android的一些常用的應(yīng)用程序。這些應(yīng)用程序包括郵件、短信、日歷、地圖、瀏覽器、聯(lián)系人管理程序等,而這些程序也是基于Java程序語言編寫的。
Android開放系統(tǒng)
我們可以從上面內(nèi)容中可以發(fā)現(xiàn)Android是一個(gè)包括操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用的移動(dòng)設(shè)備軟件堆。Google的Android系統(tǒng)是一個(gè)完全開放的系統(tǒng),也是一個(gè)完整的生態(tài)系統(tǒng),分成了三個(gè)有機(jī)個(gè)體。源代碼工程Open Source Project
開發(fā)應(yīng)用 Developer
市場(chǎng) Market
Android系統(tǒng)的特點(diǎn)
由于android系統(tǒng)的這三個(gè)有機(jī)個(gè)體的綜合應(yīng)用,Android系統(tǒng)具有5大特點(diǎn):
(1)開放性
(2)應(yīng)用程序無界性
(3)平等條件創(chuàng)建應(yīng)用程序
(4)輕松嵌入網(wǎng)絡(luò)
(5)并行運(yùn)行
正是由于Android系統(tǒng)的這些特點(diǎn),才使得Android系統(tǒng)有了如今的發(fā)展[2]。
二維碼識(shí)別系統(tǒng)背景介紹
二維碼識(shí)別系統(tǒng)背景
二維碼技術(shù)產(chǎn)生的背景
條碼技術(shù)自20世紀(jì)70年代初問世以來,發(fā)展十分迅速,僅僅20年時(shí)間,它已廣泛應(yīng)用于商業(yè)流通、倉儲(chǔ)、醫(yī)療衛(wèi)生、圖書情報(bào)、郵政、鐵路、交通運(yùn)輸、生產(chǎn)自動(dòng)化管理等領(lǐng)域。條碼技術(shù)的應(yīng)用極大地提高了數(shù)據(jù)采集和信息處理的速度,改善了人們的工作和生活環(huán)境,提高了工作效率,并為管理的科學(xué)化和現(xiàn)代化做出了重要貢獻(xiàn)。
二維條碼技術(shù)是在一維條碼無法滿足實(shí)際應(yīng)用需求的前提下產(chǎn)生的。由于受信息容量的限制,一維條碼通常是對(duì)物品的標(biāo)識(shí),而不是對(duì)物品的描述。所謂對(duì)物品的標(biāo)識(shí),就是給某物品分配一個(gè)代碼,代碼以條碼的形式標(biāo)識(shí)在物品上,用來標(biāo)識(shí)該物品以便自動(dòng)掃描設(shè)備的識(shí)讀,代碼或一維條碼本身不表示該產(chǎn)品的描述性信息。
因此,在通用商品條碼的應(yīng)用系統(tǒng)中,對(duì)商品信息,如生產(chǎn)日期、價(jià)格等的描述必須依賴數(shù)據(jù)庫的支持。在沒有預(yù)先建立商品數(shù)據(jù)庫或不便聯(lián)網(wǎng)的地方,一維條碼表示漢字和圖像信息幾乎是不可能的,即使可以表示,也顯得十分不便且效率很低。
隨著現(xiàn)代高新技術(shù)的發(fā)展,迫切需要用條碼在有限的幾何空間內(nèi)表示更多的信息,以滿足千變?nèi)f化的信息表示的需要[3]。二維碼分類及其特點(diǎn)
二維碼可以分為堆疊式/行排式二維條碼和矩陣式二維條碼。堆疊式/行排式二維條碼形態(tài)上是由多行短截的一維條碼堆疊而成;矩陣式二維條碼以矩陣的形式組成,在矩陣相應(yīng)元素位置上用“點(diǎn)”表示二進(jìn)制“1”, 用“空”表示二進(jìn)制“0”,由“點(diǎn)”和“空”的排列組成代碼。堆疊式/行排式二維碼
堆疊式/行排式二維條碼(又稱堆積式二維條碼或?qū)优攀蕉S條碼),其編碼原理是建立在一維條碼基礎(chǔ)之上,按需要堆積成二行或多行。它在編碼設(shè)計(jì)、校驗(yàn)原理、識(shí)讀方式等方面繼承了一維條碼的一些特點(diǎn),識(shí)讀設(shè)備與條碼印刷與一維條碼技術(shù)兼容。但由于行數(shù)的增加,需要對(duì)行進(jìn)行判定,其譯碼算法與軟件也不完全相同于一維條碼。有代表性的行排式二維條碼有:Code 16K、Code 49、PDF417等。其中的CODE49,是1987年由 David Allair 博士研制,Intermec 公司推出的第一個(gè)二維碼。矩陣式二維碼
短陣式二維條碼(又稱棋盤式二維條碼)它是在一個(gè)矩形空間通過黑、白像素在矩陣中的不同分布進(jìn)行編碼。在矩陣相應(yīng)元素位置上,用點(diǎn)(方點(diǎn)、圓點(diǎn)或其他形狀)的出現(xiàn)表示二進(jìn)制“1”,點(diǎn)的不出現(xiàn)表示二進(jìn)制的“0”,點(diǎn)的排列組合確定了矩陣式二維條碼所代表的意義。矩陣式二維條碼是建立在計(jì)算機(jī)圖像處理技術(shù)、組合編碼原理等基礎(chǔ)上的一種新型圖形符號(hào)自動(dòng)識(shí)讀處理碼制。具有代表性的矩陣式二維條碼有:Code One、Maxi Code、QR Code、Data Matrix等。除了這些常見的二維碼之外,還有Vericode條碼、CP條碼、Codablock F條碼、田字碼、 Ultracode條碼,Aztec條碼。下圖列舉了國(guó)內(nèi)外二維碼制及符號(hào)。下圖2-1列舉了國(guó)內(nèi)外二維碼制及符號(hào)。

圖2-1二維碼分類
二維碼技術(shù)國(guó)內(nèi)外的發(fā)展
國(guó)外對(duì)二維碼技術(shù)的研究始于20世紀(jì)80年代末,已研制出多種碼制,全球現(xiàn)有的一維碼、二維碼多達(dá)250種以上,到目前二維碼已經(jīng)是一項(xiàng)非常成熟的技術(shù),其中常見的有PDF417,QRCode,Code49,Code16K,CodeOne等20余種,并有許多國(guó)家開始應(yīng)用這項(xiàng)技術(shù)。二維碼技術(shù)標(biāo)準(zhǔn)在全球范圍得到了應(yīng)用和推廣。美國(guó)訊寶科技公司(Symbol)和日本電裝公司(Denso)都是二維碼技術(shù)的佼佼者。
在當(dāng)今生活中我們經(jīng)常見到一維條碼,二維條碼的應(yīng)用還剛剛起步,隨著帶攝像頭的智能手機(jī)普及,二維條碼的應(yīng)用漸漸來到我們的日常生活中。手機(jī)二維碼的技術(shù)是指以二維碼標(biāo)準(zhǔn)為核心,將手機(jī)作為載體,而展開的碼制編碼、譯碼、識(shí)別、被識(shí)別相結(jié)合的綜合性技術(shù)。在眾多的二維碼技術(shù)標(biāo)準(zhǔn)中,QR(Quickly Response)碼與DM(Data Matrix)碼應(yīng)用最為廣泛。
DM碼產(chǎn)生于1989年,包括NASA、USDoD兩種標(biāo)準(zhǔn)。DM碼主要采用了復(fù)雜的糾錯(cuò)碼技術(shù),使得該編碼具有超強(qiáng)的抗污染能力。目前DM碼在韓國(guó)市場(chǎng)上屬于手機(jī)二維碼的主流技術(shù)。
QR碼是由日本Denso公司于1994年研制的一種矩陣二維碼符號(hào),該二維碼已經(jīng)成為日本主流的手機(jī)二維碼技術(shù)標(biāo)準(zhǔn),它的最大特點(diǎn)就是可高效地表示漢字。日本是最早開始使用二維碼的國(guó)家。目前市場(chǎng)上已有很成熟的QR手機(jī)二維碼市場(chǎng)應(yīng)用,QR條形碼在日本得到相當(dāng)規(guī)模的應(yīng)用,日本的海報(bào)、游覽手冊(cè)、傳單、折扣券、電子票證,甚至連樹上都貼著二維碼,成為日本手機(jī)用戶登錄網(wǎng)站以及獲得廣告商品信息的非常便捷的方式。近幾年來,日本二維碼手機(jī)市場(chǎng)的占有率在逐年上升,從2002年的0.8%上升到了2005年的52.6%,2006年日本二維碼手機(jī)市場(chǎng)占有率達(dá)到70%左右。日本手機(jī)二維碼的運(yùn)營(yíng)模式是開放的,二維碼掃描是手機(jī)上的一項(xiàng)功能,而不是運(yùn)營(yíng)商提供的一種服務(wù)。二維碼的技術(shù)商將解碼軟件提供給運(yùn)營(yíng)商后,按手機(jī)的裝機(jī)量收取版權(quán)費(fèi),運(yùn)營(yíng)商則將軟件的解碼完全公開,用戶可以進(jìn)行任意編碼[4]。
在我國(guó),GM 《二維碼網(wǎng)格矩陣碼(GM)》SJ/T11349-2006和CM《二維碼緊密矩陣碼(CM)》SJ/T11350-2006標(biāo)準(zhǔn)是由原國(guó)家信息產(chǎn)業(yè)部于2006年5月25日所頒布的兩項(xiàng)國(guó)產(chǎn)行業(yè)推薦標(biāo)準(zhǔn)。此兩項(xiàng)標(biāo)準(zhǔn)于2006年5月30日起實(shí)施。
GM碼其全稱為網(wǎng)格碼(Grid Matrix Code)是一種正方形的二維碼碼制,該碼制的碼圖由正方形宏模塊組成,每個(gè)宏模塊由6乘6個(gè)正方形單元模塊組成。網(wǎng)格碼可以編碼存儲(chǔ)一定量的數(shù)據(jù)并提供5個(gè)用戶可選的糾錯(cuò)等級(jí)。
CM碼意為“緊密矩陣”,是英文Compact Matrix的縮寫。碼圖采用齒孔定位技術(shù)和圖像分段技術(shù),通過分析齒孔定位信息和分段信息可快速完成二維碼圖像的識(shí)別和處理。
當(dāng)前,我國(guó)二維碼產(chǎn)業(yè)還處于成長(zhǎng)期,總體來看,我國(guó)的條碼標(biāo)準(zhǔn)體系尚顯單薄,具有自主知識(shí)產(chǎn)權(quán)的二維碼核心技術(shù)不多,二維碼技術(shù)標(biāo)準(zhǔn)的應(yīng)用和推廣也存在一些困難。但是,各方面條件的逐漸成熟,正推動(dòng)整個(gè)產(chǎn)業(yè)的發(fā)展提速。目前,幾方面有利因素是我國(guó)二維碼產(chǎn)業(yè)發(fā)展的重要驅(qū)動(dòng)力:首先,二維碼自身的優(yōu)勢(shì)和價(jià)值使將其在全球范圍內(nèi)得到更廣泛更深入的應(yīng)用。其次,作為物聯(lián)網(wǎng)產(chǎn)業(yè)的重要技術(shù),二維碼將成為優(yōu)先受益市場(chǎng),背景行業(yè)的發(fā)展將對(duì)二維碼產(chǎn)業(yè)的發(fā)展起到推波助瀾的作用。另外,二維碼與手機(jī)的結(jié)合,將開辟二維碼的更廣闊的市場(chǎng)空間。經(jīng)過了近幾年的技術(shù)、應(yīng)用推廣和產(chǎn)業(yè)鏈的不斷壯大,我國(guó)二維碼市場(chǎng)日漸繁榮,未來2-3年將保持高速的成長(zhǎng)態(tài)勢(shì)[5]。
二維碼技術(shù)研究的意義和應(yīng)用
二維碼技術(shù)的應(yīng)用
二維碼可以被廣泛應(yīng)用于各個(gè)行業(yè),如,物流業(yè)、生產(chǎn)制造業(yè)、交通、安防、票證等行業(yè),由于各行業(yè)特性不同,二維碼被應(yīng)用于不同行業(yè)的不同工作流程中。目前,二維碼在應(yīng)用比較廣泛的幾個(gè)行業(yè)的具體應(yīng)用如下:
1.物流行業(yè)應(yīng)用
二維碼在物流行業(yè)的應(yīng)用主要包括四個(gè)環(huán)節(jié)。第一,入庫管理:入庫時(shí)識(shí)讀商品上的二維碼標(biāo)簽,同時(shí)錄入商品的存放信息,將商品的特性信息及存放信息一同存入數(shù)據(jù)庫,存儲(chǔ)時(shí)進(jìn)行檢查,看是否是重復(fù)錄入。第二,出庫管理:產(chǎn)品出庫時(shí),要掃描商品上的二維碼,對(duì)出庫商品的信息進(jìn)行確認(rèn),同時(shí)更改其庫存狀態(tài)。第三,倉庫內(nèi)部管理:在庫存管理中,一方面二維碼可用于存貨盤點(diǎn),另一方面二維碼可用于出庫備貨。第四,貨物配送:配送前將配送商品資料和客戶訂單資料下載到移動(dòng)終端中,到達(dá)配送客戶后,打開移動(dòng)終端,調(diào)出客戶相應(yīng)的訂單,然后根據(jù)訂單情況挑選貨物并驗(yàn)證其條碼標(biāo)簽,確認(rèn)配送完一個(gè)客戶的貨物后,移動(dòng)終端會(huì)自動(dòng)校驗(yàn)配送情況,并做出相應(yīng)的提示。
2.生產(chǎn)制造業(yè)
以食品的生產(chǎn)為例,二維碼在食品的生產(chǎn)與流通過程中的應(yīng)用主要在三個(gè)環(huán)節(jié)。第一,原材料信息錄入與核實(shí):原材料供應(yīng)商在向食品廠家提供原材料時(shí),將原材料的原始生產(chǎn)數(shù)據(jù)制造日起、食用期限、原產(chǎn)地、生產(chǎn)者、遺傳基因組合的有無、使用的藥劑等信息錄入到二維碼中并打印帶有二維碼的標(biāo)簽,粘貼在包裝箱上后交與食品廠家。第二,生產(chǎn)配方信息錄入與核實(shí):在根據(jù)配方進(jìn)行分包的原材料上粘貼帶有二維碼的標(biāo)簽,其中含有原材料名稱、重量、投入順序、原材料號(hào)碼等信息。第三,成品信息錄入與查詢:在原材料投入后的各個(gè)檢驗(yàn)工序,使用數(shù)據(jù)采集器錄入檢驗(yàn)數(shù)據(jù);將數(shù)據(jù)采集器中記錄的數(shù)據(jù)上傳到電腦中,生成生產(chǎn)原始數(shù)據(jù),使用該數(shù)據(jù)庫,在互聯(lián)網(wǎng)上向消費(fèi)者公布產(chǎn)品的原材料信息。
3.安防類應(yīng)用
由于二維碼具有可讀而不可改寫的特性,也被廣泛應(yīng)用于證卡的管理。將持證人的姓名、單位、證件號(hào)碼、血型、照片、指紋等重要信息進(jìn)行編碼,并且通過多種加密方式對(duì)數(shù)據(jù)進(jìn)行加密,可有效地解決證件的自動(dòng)錄入及防偽問題。此外,證件的機(jī)器識(shí)讀能力和防偽能力是新一代證件的標(biāo)志。
4.交通管理應(yīng)用
二維碼在交通管理中的應(yīng)用主要應(yīng)用環(huán)節(jié)有:行車證駕駛證管理、車輛的年審文件、車輛的隨車信息、車輛違章處罰、車輛監(jiān)控網(wǎng)絡(luò)。
行車證駕駛證管理:采用印制有二維碼行車證,將有關(guān)車輛上的基本信息,包括車駕號(hào)、發(fā)動(dòng)機(jī)號(hào)、車型、顏色等車輛的基本信息轉(zhuǎn)化保存在二維碼中,信息的數(shù)字化和網(wǎng)絡(luò)化便于管理部門的實(shí)時(shí)監(jiān)控與管理。
車輛的年審文件:在自動(dòng)檢測(cè)年審文件的過程中實(shí)現(xiàn)通過確認(rèn)采用二維碼自動(dòng)記錄的方式,保證通過每個(gè)檢驗(yàn)程序的信息輸入自動(dòng)化。
車輛的隨車信息:在隨車的年檢等標(biāo)志上將車輛的有關(guān)信息,包括通過年檢時(shí)的技術(shù)性能參數(shù),年檢時(shí)間,年檢機(jī)構(gòu)、年檢審核人員等信息印制在標(biāo)志的二維碼上,以便隨時(shí)查驗(yàn)核實(shí)。
車輛違章處罰:交警可通過二維碼掌上識(shí)讀設(shè)備對(duì)違章駕駛員的證件上的二維碼進(jìn)行識(shí)讀,系統(tǒng)自動(dòng)將其碼中的相關(guān)資料和違章情況記錄到掌上設(shè)備的數(shù)據(jù)庫中,再進(jìn)一步通過聯(lián)網(wǎng),實(shí)現(xiàn)違章信息與中心數(shù)據(jù)庫信息的交換,實(shí)現(xiàn)全網(wǎng)的監(jiān)控與管理。二維碼研究的意義
維碼目前主要是在行業(yè)或企業(yè)中應(yīng)用,對(duì)于消費(fèi)者也許我們沒有注意它,但二維碼與手機(jī)結(jié)合拓展了二維碼的應(yīng)用空間,最顯著的特征,使得二維碼離消費(fèi)者越來越近。技術(shù)正應(yīng)用到我們的生活中,二維碼不再向是一個(gè)黑白條塊/方快,它將成為新的信息溝通平臺(tái),為企業(yè)和個(gè)人帶來更多的應(yīng)用價(jià)值。促進(jìn)跨媒體營(yíng)銷發(fā)展
手 機(jī)二維碼促進(jìn)了媒體、通信和互聯(lián)網(wǎng)的融合,帶來一個(gè)全新的跨媒體營(yíng)銷平臺(tái)。使得平面媒體、移動(dòng)運(yùn)營(yíng)商可以充分發(fā)揮各自的媒體優(yōu)勢(shì),為企業(yè)開辟新營(yíng)銷服務(wù); 對(duì)于平面媒體延伸了媒體空間、帶來新的廣告形式,對(duì)于廣大企業(yè),利用該平臺(tái),開創(chuàng)新的營(yíng)銷模式、增進(jìn)與客戶的互動(dòng)、提升客戶服務(wù)。二維碼作為一種全新的溝 通方式,在時(shí)間、空間、媒介三個(gè)維度上實(shí)現(xiàn)企業(yè)與消費(fèi)者的溝通。比如一個(gè)簡(jiǎn)單的商品廣告,消費(fèi)者通過掃描旁邊的二維碼就可以獲得產(chǎn)品詳細(xì)介紹、經(jīng)銷商名 錄、成功案例、其他產(chǎn)品系列等信息,甚至通過二維碼登錄廣告商的WAP網(wǎng)站。促進(jìn)社會(huì)和企業(yè)資源的節(jié)約,提升社會(huì)和經(jīng)濟(jì)效益。
手機(jī)二維碼在應(yīng)用到電子票務(wù)降低票據(jù)制作成本、減少配送成本、提升票務(wù)防偽和檢驗(yàn)?zāi)芰?提升客戶服務(wù)質(zhì)量、有利于開展針對(duì)性的營(yíng)銷;手機(jī)二維碼在應(yīng)用到電子 折扣上,提升促銷效果、增進(jìn)與客戶的互動(dòng)、降低折扣券制作成本等;手機(jī)二維碼用在防偽盜版上,可以有效打擊防偽盜版,保護(hù)消費(fèi)者利益,為企業(yè)創(chuàng)造效益。手 機(jī)二維碼用于交通違章處理上,可以大大提高工作效率。
(3)為手機(jī)用戶帶來精彩體驗(yàn)
手機(jī)二維碼的發(fā)展簡(jiǎn)化手機(jī)用戶信息輸入,提升用戶獲取信息的能力、拓展手機(jī)上網(wǎng)入口,帶給我們更多精彩體驗(yàn)[6]。
需求分析
系統(tǒng)需求分析
課題可行性分析
隨著Android的快速發(fā)展和不斷完善,Android的應(yīng)用是越發(fā)的廣泛。所以基于Android平臺(tái)的手機(jī)小程序也是越來越多、越來越受歡迎。
Java是一種跨平臺(tái)的,面向?qū)ο蟮?,分布式的,解釋的,健壯的安全的,結(jié)構(gòu)的中立的,可移植的,性能很優(yōu)異的多線程的,動(dòng)態(tài)的語言。XML(Extensible Markup Language)即可擴(kuò)展標(biāo)記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)。Xml是Internet環(huán)境中跨平臺(tái)的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴(kuò)展標(biāo)記語言XML是一種簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)語言,使用一系列簡(jiǎn)單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立。
隨著Android移動(dòng)設(shè)備大部分都帶有自動(dòng)調(diào)焦作用,這就對(duì)Android二維碼系統(tǒng)的應(yīng)用帶來了更廣闊的市場(chǎng)。又各國(guó)對(duì)二維碼的發(fā)展和研究,也產(chǎn)生了很多穩(wěn)定和安全的二維碼系統(tǒng),并且Google根據(jù)每種條形碼二維碼的標(biāo)準(zhǔn)開發(fā)了開源項(xiàng)目Zxing。根據(jù)Zxing核心庫的基礎(chǔ),該系統(tǒng)可以根據(jù)核心庫提供的二維碼標(biāo)準(zhǔn),依據(jù)編碼解碼原理實(shí)該項(xiàng)目的條碼、二維碼識(shí)別。這對(duì)二維碼的開發(fā)和研究帶來了更多發(fā)展前景[7]。課題功能需求分析
本次的畢業(yè)設(shè)計(jì)主要就是在基于Android平臺(tái)下設(shè)計(jì)并開發(fā)一個(gè)條碼二維碼識(shí)別系統(tǒng)。運(yùn)用當(dāng)前Google提供的Android SDK來以及開源項(xiàng)目Zxing核心庫編碼解碼原理為基礎(chǔ),來實(shí)現(xiàn)二位碼識(shí)別系統(tǒng)。
本課題的總體的功能業(yè)務(wù)可以主要描述為以下幾點(diǎn):
(1) 主界面上顯示出主要的功能
(2) 進(jìn)行一維條行碼的識(shí)別
(3) 進(jìn)行二維QR碼的識(shí)別
(4) 進(jìn)行二維DM矩陣碼識(shí)別
(5) 對(duì)二維碼進(jìn)行分享
(6) 軟件使用幫助課題功能需求分析說明
根據(jù)對(duì)本課題的主要需求的分析做如下說明:
(1) 主界面上主要就是顯示該系統(tǒng)所能夠進(jìn)行的動(dòng)作和所能實(shí)現(xiàn)的功能,也是用戶進(jìn)行軟件操作的主要界面。
(2) 本軟件最強(qiáng)大的功能是實(shí)現(xiàn)當(dāng)前主流的條碼、QR碼和DM矩陣碼的識(shí)別功能。
(3) 可以分享二維碼。
(4) 對(duì)掃描歷史進(jìn)行查看。
(5) 對(duì)軟件使用提供幫助。系統(tǒng)界面需求
本系統(tǒng)的界面需要布局合理、美觀,需要體現(xiàn)系統(tǒng)的友好性。系統(tǒng)性能需求
本系統(tǒng)需要掃描速度快、安全性高、處理結(jié)果速度快,盡可能為用戶節(jié)省時(shí)間。運(yùn)行環(huán)境需求
系統(tǒng)運(yùn)行環(huán)境:基于Android操作系統(tǒng)移動(dòng)設(shè)備
系統(tǒng)支持版本:Android 1.5及以上版本
開發(fā)環(huán)境:Eclipse 3.5 ADT16-16.0.1 JDK-7u3-windows-i586
系統(tǒng)需要解決的問題
開發(fā)基于Android二維碼識(shí)別系統(tǒng)需要解決一下幾個(gè)問題:
(1)數(shù)據(jù)庫問題
本系統(tǒng)需要用到SQLite輕量級(jí)數(shù)據(jù)庫。用SQLite數(shù)據(jù)庫來實(shí)現(xiàn)歷史記錄數(shù)據(jù)的存放。
(2)布局問題
在Android平臺(tái)下開發(fā)該應(yīng)用軟件,一個(gè)非常重要問題的是要解決布局問題。android平臺(tái)中采用的是xml文件來設(shè)置布局。SDK提供了包括圖片、文字顯示、以及xml文件的設(shè)計(jì)方法。該系統(tǒng)需要用到FrameLayout布局來調(diào)用攝像頭。系統(tǒng)關(guān)鍵技術(shù)分析
(1)SQLite輕量級(jí)數(shù)據(jù)庫的使用。
該系統(tǒng)需要使用到Android自身的數(shù)據(jù)庫系統(tǒng),使用SQLite數(shù)據(jù)創(chuàng)建存放掃描結(jié)果的歷史記錄表。
(2)移動(dòng)設(shè)備Camera攝像頭的調(diào)用。
該系統(tǒng)要是使用攝像頭才能進(jìn)行二維碼的掃描和處理,通過攝像頭來進(jìn)行二維碼圖片數(shù)據(jù)的輸入。本章總結(jié)
通過對(duì)Android平臺(tái)的架構(gòu)的分析和對(duì)畢業(yè)設(shè)計(jì)課題的需求的分析,我們基本可以了解到該課題的主要功能。為下一階段的設(shè)計(jì)的研究打下好的基礎(chǔ)。
系統(tǒng)設(shè)計(jì)
課題需要解決的問題
界面布局
一個(gè)Android軟件的好壞很大程度上并不是功能如何強(qiáng)大,而是友好易操作的界面的好壞。一個(gè)友好的界面不僅讓用戶更容易操作和使用軟件,也讓用戶感覺到很舒服的感覺。Android系統(tǒng)正是考慮到這一點(diǎn),為開發(fā)人員提供了強(qiáng)大的布局實(shí)現(xiàn),并提供了很多布局方式包括:LinearLayout水平布局、FrameLayout框架布局、RelativeLayout相對(duì)布局、TableLayout表單布局和TAbWidget切換卡、AbsoluteLayout絕對(duì)布局。
本軟件需要用調(diào)用Camera來實(shí)現(xiàn)掃描功能,需要用到框架布局FrameLayout能重疊控件,實(shí)現(xiàn)“范圍框”的效果。條形碼二維碼解碼功能
本系統(tǒng)是根據(jù)Google研究開源項(xiàng)目Zxing核心庫為基礎(chǔ),通過二維碼發(fā)布的標(biāo)準(zhǔn),就是為了實(shí)現(xiàn)二維碼掃描功能,當(dāng)前最流行條形碼,日韓所使用最多的QR碼和美國(guó)的DM矩陣碼。Zxing不僅對(duì)最主要的二維碼掃描功能做了詳細(xì)的分析,同時(shí)也實(shí)現(xiàn)了國(guó)際化的操作,針對(duì)不同國(guó)家,使用不同的語言,由于QRcode二維碼的廣泛應(yīng)用且QRcode支持中文,所以在此我們主要使用QRcode二維碼識(shí)別,語言為簡(jiǎn)體中文[9]。
系統(tǒng)用例圖如圖4-1所示:

圖4-1 系統(tǒng)功能用例圖
系統(tǒng)總體設(shè)計(jì)
課題功能框架
基于Android二維碼系統(tǒng)功能主要包括:一位條碼掃描、二位QR碼掃描、DM矩陣碼掃描和分享二維碼掃描。功能框架如圖4-2所示:

圖4-2 系統(tǒng)功能模塊圖
課題總體流程圖
啟動(dòng)模擬器,軟件會(huì)自動(dòng)運(yùn)行到主界面,界面會(huì)自動(dòng)變?yōu)闄M屏全屏模式,直接進(jìn)行二維碼掃描界面。當(dāng)掃描完畢后,我們可以通過掃描的結(jié)果進(jìn)行分享。本課題總體流程圖如圖4-3所示:
圖4-3 系統(tǒng)流程圖
上面主要講解的是軟件使用的流程,二維碼識(shí)別系統(tǒng)通過攝像頭來獲取圖片文件,然后通過圖片預(yù)處理,然后進(jìn)行解碼,掃描解碼流程圖如圖4-4所示:

圖4-4 解碼過程圖
數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)
本課題需要?jiǎng)?chuàng)建一個(gè)存放掃描歷史記錄的數(shù)據(jù)庫。
數(shù)據(jù)庫名稱:barcode_scanner_history.db
表名:history
表中字段:ID_COL,TEXT_COL,FORMAT_COL,DISPLAY_COL,TIMESTAMP_COL
說明:歷史記錄實(shí)體用來存放二維碼查詢結(jié)果,記錄ID是表的主鍵,唯一標(biāo)示一條記錄。FORMAT_COL列是存放數(shù)據(jù)存儲(chǔ)的格式。TIMESTAMP_COL是用來存放掃描的時(shí)間。DISPLAY_COL是用來存儲(chǔ)解析值。TEXT_COL用來存放文本信息。、掃描時(shí)間、解析顯示[10]。
歷史記錄概念結(jié)構(gòu)設(shè)計(jì)圖如圖4-5所示:

圖4-5 歷史記錄實(shí)體屬性圖
系統(tǒng)詳細(xì)設(shè)計(jì)
系統(tǒng)模塊設(shè)計(jì)
二維碼識(shí)別功能模塊
用戶打開應(yīng)用程序之后會(huì)進(jìn)入主界面,然后就可以進(jìn)行二維碼掃描,將二維碼的圖片放于攝像頭下面,攝像頭會(huì)自動(dòng)調(diào)焦,獲取二維碼圖片,然后程序會(huì)進(jìn)行圖片解析,解析成功之后將結(jié)果顯示在屏幕上。流程圖如圖4-6所示:

圖4-6 二維碼識(shí)別功能流程圖
分享功能模塊
當(dāng)用戶點(diǎn)擊menu菜單之后就會(huì)顯示分享功能選項(xiàng),點(diǎn)擊之后出現(xiàn)分享聯(lián)系人、應(yīng)用程序選項(xiàng),根據(jù)用戶不同的選項(xiàng)程序會(huì)生成相應(yīng)的二維碼圖片,然后其他的用戶可以通過二維碼掃面的方式盡享分享。分享功能模塊的流程圖如圖4-7所示。

圖4-7 分享功能流程圖

圖4-8 查看歷史記錄流程圖
歷史記錄功能模塊
當(dāng)用戶掃面完二維碼之后,程序會(huì)自動(dòng)保存到歷史記錄表當(dāng)中,用戶可以通過點(diǎn)擊menu菜單找到歷史記錄選項(xiàng),點(diǎn)擊查看歷史記錄按鈕之后,程序會(huì)自動(dòng)彈出歷史記錄對(duì)話框,上面會(huì)直接顯示掃描過的歷史記錄。接下來可以進(jìn)行清除歷史記錄,發(fā)送歷史記錄操作。流程圖如圖4-8所示。
系統(tǒng)界面詳細(xì)設(shè)計(jì)
主界面設(shè)計(jì)
系統(tǒng)運(yùn)行之后就會(huì)進(jìn)入主界面,主界面直接進(jìn)行掃面,在項(xiàng)目res文件中的layout中的新建一個(gè)capture.xml文件,并在里面添加掃描所用到的抽象布局來實(shí)現(xiàn)二維碼圖片獲取界面,并設(shè)置結(jié)果集布局不可見,當(dāng)掃描后設(shè)置結(jié)果集布局可見,獲取圖片的布局設(shè)置為不可見,從而來實(shí)現(xiàn)二維碼識(shí)別功能。分享界面設(shè)計(jì)
分享界面的按鈕實(shí)現(xiàn)是在menu菜單中添加的,在運(yùn)行程序以后我們通過點(diǎn)擊menu菜單來實(shí)現(xiàn)分享功能,當(dāng)點(diǎn)擊分享按鈕時(shí),系統(tǒng)會(huì)調(diào)用分享功能的Activity來實(shí)現(xiàn)。歷史記錄界面設(shè)計(jì)
查看歷史記錄的界面按鈕實(shí)現(xiàn)首先也是在menu菜單中添加的,在運(yùn)行程序以后我們通過點(diǎn)擊menu菜單中的查看歷史記錄選項(xiàng),然后我們一dialog提示框的方式來顯示歷史記錄的顯示。功能設(shè)置界面設(shè)計(jì)
功能設(shè)置界面可以進(jìn)行系統(tǒng)功能的設(shè)置,在項(xiàng)目res文件夾下新建一個(gè)xml文件,并進(jìn)行preferences.xml內(nèi)容的添加,包括是否選擇震動(dòng)、有無提示音和是否復(fù)制到剪切板等功能。幫助界面設(shè)計(jì)
在開源項(xiàng)目中下載二維碼掃描幫助頁面,并在項(xiàng)目中的assets資源文件中新建一個(gè)html文件來存放幫助界面,里面包含了如何正確掃面二維碼的頁面以及如何在網(wǎng)頁上生成二維碼等界面。
數(shù)據(jù)庫詳細(xì)設(shè)計(jì)
本系統(tǒng)采用Android操作系統(tǒng)自帶的內(nèi)嵌小型數(shù)據(jù)庫sqlte3作為后臺(tái)數(shù)據(jù)庫。
歷史記錄表設(shè)計(jì)如表4-1所示:
表4-1歷史記錄表

本章小結(jié)
本章主要根據(jù)系統(tǒng)分析,針對(duì)本課題進(jìn)行了總體設(shè)計(jì)和詳細(xì)設(shè)計(jì),在完成以上總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)之后,至此系統(tǒng)設(shè)計(jì)階段基本完成。
編碼與實(shí)現(xiàn)
開發(fā)環(huán)境搭配
軟件下載安裝
JDK下載安裝
Eclipse IDE下載安裝
Android SDK下載安裝
ADT插件安裝 注:開發(fā)Android應(yīng)用程序,還需要用到ADT Plugin for Eclipse插件,也可以在Eclipse中網(wǎng)址安裝,更利于開發(fā)android軟件。
配置環(huán)境變量
Java JDK環(huán)境變量配置
搭配Android 系統(tǒng)的環(huán)境變量
AVD(Android virtual device)模擬器
注:可以從Eclipse里面點(diǎn)擊Android圖標(biāo)中來啟動(dòng)模擬器管理,同時(shí)我們也可以在Android SDK文件夾中直接點(diǎn)擊運(yùn)行AVD Manager。
二維碼識(shí)別系統(tǒng)功能實(shí)現(xiàn)
二維碼識(shí)別系統(tǒng)界面設(shè)計(jì)
二維碼識(shí)別系統(tǒng)啟動(dòng)時(shí)需要用調(diào)用Camera來實(shí)現(xiàn)掃描功能,需要用到框架布局FrameLayout能重疊控件,實(shí)現(xiàn)“范圍框”的效果。在程序啟動(dòng)后會(huì)進(jìn)入二維碼捕捉界面,在res文件layout目錄下創(chuàng)建capture.xml,在里面需要添加自定義的View
以看到在XML里面用到了 ViewfinderView 自定義view 。所以新建一個(gè)View 的包,然后把:ViewfinderView 和 ViewfinderResultPointCallback 靠到里面(記得對(duì)應(yīng)修改XML里面的包)。
在FrameLayout里面我們還需要加入存放result的控件,在掃描時(shí)需要將存放result結(jié)果的空間設(shè)置為不可見。
實(shí)現(xiàn)代碼如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView android:id="@+id/preview_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"/>
<com.google.zxing.client.android.ViewfinderView
android:id="@+id/viewfinder_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/transparent"/>
<TextView android:id="@+id/status_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:background="@color/transparent"
android:text="@string/msg_default_status"
android:textColor="@color/status_text"
/>
</FrameLayout>
SurfaceView是整個(gè)界面的窗口,其中的ViewfinderView就是中間掃描的小窗口,其中的TextView是程序掃描的提示框,提示程序掃描時(shí)圖片要放在窗口中間。
該界面還包含了掃描結(jié)果的控件,在掃描時(shí)設(shè)置為不可見,當(dāng)掃描出結(jié)果是將存放結(jié)果的控件設(shè)置為可見,上面掃描時(shí)的控件設(shè)置為不可見。下面的代碼是存放結(jié)果的控件[11]。
<ImageView android:id="@+id/barcode_image_view"
android:layout_width="160dip"
android:layout_height="wrap_content"
android:maxWidth="160dip"
android:maxHeight="160dip"
android:layout_marginBottom="4dip"
android:adjustViewBounds="true"
android:scaleType="centerInside"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/time_text_view_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/msg_default_time"
android:textColor="@color/result_minor_text"
android:textStyle="bold"
android:textSize="14sp"
android:paddingRight="4dip"/>
<TextView android:id="@+id/time_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/result_minor_text"
android:textSize="14sp"/>
</LinearLayout>
效果圖如圖5-1所示:

圖5-1 主界面布局
二維碼功能的設(shè)計(jì)與實(shí)現(xiàn)
二維碼識(shí)別功能實(shí)現(xiàn)
首先建立項(xiàng)目將啟動(dòng)Activity命名為CaptureActivity,并導(dǎo)入核心庫。項(xiàng)目完成后我們?yōu)镃aptureActivity建立布局文件res目錄下capture.xml,并修改里面內(nèi)容。
在XML文檔里面用到了ViewfinderView自定義View來獲取條碼二維碼圖片。
然后打開CaptureActivity覆蓋onCreate方法,代碼如下:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Window window = getWindow();
//設(shè)置屏幕保持亮度
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.capture);
//初始化 CameraManager
//這里調(diào)用到的 CameraManager 類是控制攝像頭的包里的類
CameraManager.init(getApplication());
viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view);
resultView = findViewById(R.id.result_view);
statusView = (TextView) findViewById(R.id.status_view);
handler = null;
lastResult = null;
hasSurface = false;
historyManager = new HistoryManager(this);
historyManager.trimHistory();
inactivityTimer = new InactivityTimer(this);
//showHelpOnFirstLaunch();
}
這里我們調(diào)用了CameraManager類,是控制攝像頭的包里的類。我們需要把com.google.zxing.client.android.camera包導(dǎo)入我們建立的應(yīng)用程序,另外我們還需要用到PlanarYUVLuminanceSource類。
在使用調(diào)用Camera時(shí),需要修改項(xiàng)目的配置文件,在manifest.xml中添加如下代碼:<uses-feature android:name="android.hardware.camera"/>用來說明程序運(yùn)行特征,需要用到攝像頭。
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE"/>
接著我們覆蓋onResume方法初始化攝像頭,其中initCamera方法是用來初始化攝像頭,如果排除了所有的error ,surfaceHolder.addCallback(this);表示讓CaptureActivity實(shí)現(xiàn)其callback接口。
解碼:
上面的步驟都是對(duì)攝像頭的控制,而解碼真正的工作入口是CaptureActivityHandler里面的。CaptureActivityHandler類中用到解碼線程DecodeThread類。這里我們調(diào)用handleDecodeInternally方法來實(shí)現(xiàn)。
private void handleDecodeInternally(Result rawResult, Bitmap barcode) {
statusView.setVisibility(View.GONE);
viewfinderView.setVisibility(View.GONE);
resultView.setVisibility(View.VISIBLE);
ImageView barcodeImageView = (ImageView) findViewById(R.id.barcode_image_view);
if (barcode == null) {
barcodeImageView.setImageBitmap(decodeResource(getResources(),
R.drawable.launcher_icon));
} else {
barcodeImageView.setImageBitmap(barcode);
}
TextView formatTextView = (TextView) findViewById(R.id.format_text_view);
formatTextView.setText(rawResult.getBarcodeFormat().toString());
ResultHandler resultHandler = ResultHandlerFactory.makeResultHandler(this, rawResult);
TextView typeTextView = (TextView) findViewById(R.id.type_text_view);
typeTextView.setText(resultHandler.getType().toString());
DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
String formattedTime = formatter.format(new Date(rawResult.getTimestamp()));
TextView timeTextView = (TextView) findViewById(R.id.time_text_view);
timeTextView.setText(formattedTime);
后返回結(jié)果,解碼之后會(huì)自動(dòng)將掃描的結(jié)果放進(jìn)rawResult結(jié)果集里面[12]。
掃描后結(jié)果會(huì)顯示在屏幕上。
查看掃描歷史記錄功能實(shí)現(xiàn)
查看歷史記錄的功能就是從數(shù)據(jù)庫歷史記錄表history中讀取記錄。在點(diǎn)擊歷史記錄選項(xiàng)時(shí),查詢出內(nèi)容的界面中,
實(shí)現(xiàn)過程:首先將歷史記錄選項(xiàng)添加到Menu菜單中,當(dāng)歷史記錄選項(xiàng)被選擇時(shí),添加事件處理函數(shù),系統(tǒng)會(huì)調(diào)用HistoryActivity類,里面包括數(shù)據(jù)庫的創(chuàng)建,歷史記錄的插入,查詢等操作。其實(shí)現(xiàn)界面如圖5-3所示:

圖5-3 查詢歷史記錄界面
分享功能實(shí)現(xiàn)
分享功能就是通過將手機(jī)中的書簽、應(yīng)用程序、聯(lián)系人和剪切板生成二維碼顯示在手機(jī)上,然后其他人可以通過掃描二維碼的方法來分享自己手機(jī)中的內(nèi)容。在分享功能的界面中,當(dāng)點(diǎn)擊分享按鈕后,就會(huì)出現(xiàn)分享的選項(xiàng)供用戶選擇。分享的二維碼。
實(shí)現(xiàn)過程:首先在onCreateMenu()函數(shù)中添加分享選項(xiàng)。然后在創(chuàng)建的添加選項(xiàng)onOptionsItemSelected()函數(shù)當(dāng)中添加處理函數(shù)。當(dāng)分享按鈕被點(diǎn)擊時(shí),就會(huì)調(diào)用ShareActivity,然后在ShareActivity類中添加按鈕點(diǎn)擊事件,根據(jù)用戶不同的選擇來調(diào)用不同的函數(shù)。其實(shí)現(xiàn)界面如圖5-4所示:
圖5-4 分享功能界面
本章小結(jié)
至此系統(tǒng)的編碼與實(shí)現(xiàn)階段已經(jīng)結(jié)束,系統(tǒng)的基本功能已經(jīng)實(shí)現(xiàn),接下來是系統(tǒng)的運(yùn)行于測(cè)試。
系統(tǒng)測(cè)試與運(yùn)行
測(cè)試目的
每個(gè)軟件的編程,都會(huì)出現(xiàn)一些問題和Bug,系統(tǒng)測(cè)試的目的,就是要找出該軟件可能存在的一些問題和Bug。測(cè)試也是軟件開發(fā)過程的重要部分,用來確認(rèn)一個(gè)程序的品質(zhì)和性能是否符合開發(fā)之前所提出的一些要求。軟件測(cè)試就是在軟件投入運(yùn)行之前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說明和編碼的最后總復(fù)審,也是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程??梢哉f,軟件測(cè)試的最終目的就是保證軟件產(chǎn)品的最終質(zhì)量。
對(duì)于該課題測(cè)試主要就是測(cè)試以下幾方面:
(1)界面是否正常顯示
(2)功能是否可以正常的實(shí)現(xiàn)
(3)操作過程中是否會(huì)有一些Bug出現(xiàn)
(4)系統(tǒng)的后臺(tái)是否會(huì)出現(xiàn)異常的信息
(5)其他方面明顯的錯(cuò)誤測(cè)試環(huán)境
本課題的測(cè)試主要是基于Android平臺(tái)。主要也就是在Windows下搭建的環(huán)境通過Android模擬器進(jìn)行測(cè)試和在移動(dòng)設(shè)備上測(cè)試,如表6-1所示:
表6-1 測(cè)試環(huán)境
需求名稱需求說明操作系統(tǒng)Windows xp以上操作系統(tǒng)、Android系統(tǒng)測(cè)試方法黑盒測(cè)試(功能測(cè)試)測(cè)試工具Eclipse IDE、Android SDK、Android移動(dòng)設(shè)備
測(cè)試的流程和測(cè)試
基于Android模擬器的運(yùn)行測(cè)試
Google公司對(duì)于Android的模擬器的開發(fā),讓Android的開發(fā)有了空前的發(fā)展。Android SDK提供的手機(jī)模擬器的功能也是十分的強(qiáng)大,操作起來也是十分的方便。所以在Android平臺(tái)下開發(fā)的一些應(yīng)用程序可以很好的在該模擬器上運(yùn)行。
當(dāng)然該模擬器也設(shè)置了手機(jī)移動(dòng)設(shè)備上的許多功能,如鍵盤的操作、SD卡的操作、瀏覽器的操作、短信的發(fā)送、手機(jī)的設(shè)置等等。
最主要的應(yīng)該是對(duì)手機(jī)移動(dòng)設(shè)備的屏幕的模擬,通過鼠標(biāo)來進(jìn)行觸屏操作,用起來十分的方便和舒服。所以,在模擬器上可以真實(shí)的模擬出在手機(jī)上的運(yùn)行效果。
(1)啟動(dòng)模擬器。
(2)右鍵程序,點(diǎn)擊“run as”,然后點(diǎn)擊“Android application”,程序就運(yùn)行在Android模擬器中,然后進(jìn)行測(cè)試,如圖6-1所示:
(3) 根據(jù)課題所實(shí)現(xiàn)的功能,然后按照需求分析里面的界面設(shè)計(jì)和功能模塊進(jìn)行分析,首先是程序界面設(shè)計(jì)是否符合要求。其次,進(jìn)行功能模塊的測(cè)試,本課題主要包括三個(gè)主要功能的測(cè)試:二維碼識(shí)別功能測(cè)試、二維碼分享功能測(cè)試和查看掃描紀(jì)錄功能測(cè)試。最后得出測(cè)試結(jié)果。
圖6-1 程序啟動(dòng)主界面
本課題在Eclipse中編碼,因?yàn)锳ndroid虛擬機(jī)目前還不支持Camera,所以在Android虛擬機(jī)中只能測(cè)試到預(yù)計(jì)的界面效果和其他一些不需要Camera的功能。
基于Android移動(dòng)設(shè)備的運(yùn)行測(cè)試
Android模擬器功能雖然強(qiáng)大,但是和真正的android移動(dòng)設(shè)備有一定的差距,還有一些缺點(diǎn),所以,android程序的測(cè)試還必須要在android移動(dòng)設(shè)備上進(jìn)行測(cè)試。測(cè)試步驟如下:
(1)設(shè)置android移動(dòng)設(shè)備,打擊應(yīng)用程序,將USB調(diào)試打上勾,這樣運(yùn)行,eclipse會(huì)自動(dòng)識(shí)別android移動(dòng)設(shè)備,這樣程序就可以在android移送設(shè)備上進(jìn)行測(cè)試。如圖6-2所示:
圖6-2 調(diào)試界面
(2)右鍵應(yīng)用程序,點(diǎn)擊“run AS”,點(diǎn)擊android application,會(huì)出現(xiàn)下圖界面,我們選著移動(dòng)設(shè)備,軟件就會(huì)自動(dòng)安裝到移動(dòng)設(shè)備,結(jié)果如圖6-3所示:
圖6-3 選擇移動(dòng)設(shè)備調(diào)試界面
然后系統(tǒng)會(huì)自動(dòng)啟動(dòng)移動(dòng)手機(jī)調(diào)試,將程序安裝到移動(dòng)設(shè)備,然后進(jìn)行真機(jī)測(cè)試如圖6-4所示:
圖6-4 真機(jī)測(cè)試界面
由于Android模擬器功能的一些局限性,該軟件的測(cè)試主要是運(yùn)行在Android移動(dòng)設(shè)備上進(jìn)行的。下面是針對(duì)真機(jī)進(jìn)行的黑盒測(cè)試(功能測(cè)試)。
(1)條形碼二位碼識(shí)別功能測(cè)試,測(cè)試結(jié)果如表6-2所示:
表6-2 二維碼識(shí)別功能測(cè)試表
測(cè)試目的測(cè)試功能是否實(shí)現(xiàn)測(cè)試輸入1.產(chǎn)品條形碼2.二維碼圖片測(cè)試步驟將手機(jī)攝像頭對(duì)準(zhǔn)要識(shí)別的條形碼二維碼圖片預(yù)期結(jié)果掃描結(jié)果結(jié)果顯示在手機(jī)屏幕上
(2)分享功能測(cè)試,測(cè)試結(jié)果如表6-3所示:
表6-3 分享功能測(cè)試表
測(cè)試目的測(cè)試分享功能是否實(shí)現(xiàn)測(cè)試輸入已掃描的條碼二維碼測(cè)試步驟掃描后按menu菜單會(huì)出現(xiàn)分享按鈕預(yù)期結(jié)果可以將條碼二維碼通過短信微博分享
(3)歷史記錄功能測(cè)試,測(cè)試結(jié)果如表6-4所示:
表6-4 歷史記錄功能實(shí)現(xiàn)
測(cè)試目的測(cè)試查看歷史記錄功能是否實(shí)現(xiàn)測(cè)試輸入已掃描的條碼二維碼測(cè)試步驟掃描后按menu菜單會(huì)出現(xiàn)分享按鈕預(yù)期結(jié)果歷史記錄里面存放有之前掃描過的二維碼結(jié)果
Android系統(tǒng)不僅給開發(fā)人員提供了模擬器測(cè)試,而且還可以聯(lián)機(jī)使用真機(jī)測(cè)試,這就大大減輕了開發(fā)人員的工作,提高軟件開發(fā)的效率。雖然模擬器提供了真機(jī)大部分的功能,但是也有很多不支持的功能,我相信以后的模擬器將會(huì)更加接近真機(jī)。
本章小結(jié)
該軟件在移動(dòng)設(shè)備上運(yùn)行時(shí),基本上達(dá)到了很好的效果,與預(yù)想的結(jié)果基本上一致,所以可以確認(rèn)該系統(tǒng)對(duì)實(shí)機(jī)是可以運(yùn)行的。同時(shí)對(duì)系統(tǒng)的功能的測(cè)試也是比較理想的??傮w來說,在手機(jī)移動(dòng)設(shè)備上沒有出現(xiàn)排斥和不兼容的問題。
結(jié)束語
經(jīng)過數(shù)個(gè)月的努力,基于Android的二維碼識(shí)別軟件終于完成了。由于Android 軟件的開源和流行引發(fā)了我對(duì)Android的強(qiáng)大的好奇心,因此選題時(shí)我選擇了Android軟件的開發(fā),從java基礎(chǔ)開始到對(duì)Android系統(tǒng)的了解和學(xué)習(xí),才有了這次畢業(yè)設(shè)計(jì)的完成,同時(shí)也感覺收獲頗多。
在這個(gè)過程中,我學(xué)會(huì)了很多Android的相關(guān)知識(shí),從Android的系統(tǒng)架構(gòu)、環(huán)境的搭建、Intent、Activity、Service、ContentProvider、SQLite等基礎(chǔ)知識(shí)到Android游戲開發(fā),都讓我感覺到了Android的奇妙所在。此次的學(xué)習(xí),我也體會(huì)到了網(wǎng)絡(luò)資源的巨大,利用現(xiàn)有的資源去解決問題,在學(xué)校圖書館就是學(xué)校的最大財(cái)富,從圖書館和網(wǎng)絡(luò)中能尋求到答案,也能幫助我們快速解決問題。
雖然基于Android的二維碼掃描系統(tǒng)已經(jīng)完成,但是程序還有很多的不足之處,需要來完善和修改。還有很多東西需要學(xué)習(xí),所以在此對(duì)此次畢業(yè)設(shè)計(jì)的做一個(gè)工作總結(jié)。
工作總結(jié):
此次畢業(yè)設(shè)計(jì)針對(duì)google推出的手機(jī)系統(tǒng)平臺(tái)開發(fā)的二位碼掃描系統(tǒng),研究ZXing項(xiàng)目中二維碼編碼技術(shù)和解碼實(shí)現(xiàn)。
整個(gè)系統(tǒng)是基于Google有關(guān)二維碼Zxing項(xiàng)目為核心建立起來的,主要用到Zxing核心代碼庫core.jar。Zxing項(xiàng)目支持對(duì)一維條碼、QR二維碼、DM矩陣碼等大部分普及的條碼二維碼掃描功能。我主要著力于用戶頁面的設(shè)計(jì),盡量使頁面布局均勻,更加人性化,方便用戶操作,并對(duì)二維碼的編碼技術(shù)有了大概的了解并通過對(duì)核心庫代碼的研究和調(diào)用實(shí)現(xiàn)二維碼識(shí)別功能。
未來展望:
由于多方面因素,本系統(tǒng)還存在許多不足之處,如果有機(jī)會(huì)我想給這款軟件做一些完善,添加一些功能。我會(huì)從以下一些幾個(gè)方面下手:
首先,提高掃描效率,二維碼掃描存在的一個(gè)很大的問題就是掃描效率很低,提高掃描效率,能節(jié)省用戶的時(shí)間,能讓用戶有更好的體驗(yàn)。
其次,優(yōu)化二維碼存儲(chǔ)容量,二維碼之所以能夠得到廣泛的使用,最主要的就是它比一維條碼能夠存儲(chǔ)更多的信息。隨著時(shí)代的發(fā)展,二維碼存儲(chǔ)信息的容量還需要增加,才能能更好的滿足用戶的需求。
最后,優(yōu)化代碼和界面,讓用戶能體會(huì)到更加人性化的界面。
參考文獻(xiàn)
楊豐盛. Android應(yīng)用開發(fā)揭秘[M] 北京:機(jī)械工業(yè)出版社.2010.1.1
郭宏志. Android應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社.2010.6
劉東,高西全.QRCode碼圖像處理及識(shí)別算法的研究[J].電子技術(shù),2003年22期
陸磊. 基于Android嵌入式平臺(tái)的QR碼識(shí)別系統(tǒng)[J]. 電子科技,2004年01期
賈世樓. 信息論理論基礎(chǔ)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2001
岳欣,解建輝,忻展紅.我國(guó)二維碼業(yè)務(wù)發(fā)展趨勢(shì)[C].2009年信息通信網(wǎng)技術(shù)業(yè)務(wù)發(fā)展研討會(huì).2009
林均清.模式識(shí)別[M].長(zhǎng)沙:國(guó)防科技大學(xué)出版社,1998
劉柯言.中國(guó)電信手機(jī)二維碼業(yè)務(wù)市場(chǎng)擴(kuò)展研究[D].北京:北京郵電大學(xué).2009
希創(chuàng)科技.手機(jī)二維碼現(xiàn)狀趨勢(shì)[EB/OL].http://www.systron.com.cn/2barcode/shouji10.htm,2010.9.2
王水,張曉民.軟件工程素質(zhì)導(dǎo)論[M].鄭州:河南科技出版社,2011
Android開發(fā)文檔.Android類庫使用文檔[EB/OL].?http://developer.android.com/index.html.android developers, 2009.4
Android二維碼研究.基于Android的二維碼處理類庫[EB/OL].http://code.google.com/p/zxing/,2010.11
附錄
Android模擬器Android SDK自帶一個(gè)移動(dòng)模擬器。它是一個(gè)可以運(yùn)行在你電腦上的虛擬設(shè)備。 Android模擬器可以讓你不需使用物理設(shè)備即可預(yù)覽、開發(fā)和測(cè)試Android應(yīng)用程序。
Android模擬器能夠模擬除了接聽和撥打電話外的所有移動(dòng)設(shè)備上的典型功能和行為。Android模擬器提供了大量的導(dǎo)航和控制鍵,你可以通過鼠標(biāo)或鍵盤點(diǎn)擊這些按鍵來為你的應(yīng)用程序產(chǎn)生事件。同時(shí)它還有一個(gè)屏幕用于顯示Android自帶應(yīng)用程序和你自己的應(yīng)用程序。為了便于模擬和測(cè)試應(yīng)用程序,Android模擬器允許你的應(yīng)用程序通過Android平臺(tái)服務(wù)調(diào)用其他程序、訪問網(wǎng)絡(luò)、播放音頻和視頻、保存和傳輸數(shù)據(jù)、通知用戶、渲染圖像過渡和場(chǎng)景。Android模擬器同樣具有強(qiáng)大的調(diào)試能力,例如能夠記錄內(nèi)核輸出的控制臺(tái)、模擬程序中斷(比如接受 短信或打入電話)、模擬數(shù)據(jù)通道中的延時(shí)效果和遺失。
1.同時(shí)Android模擬器和真機(jī)也有很多的不同之處:不支持呼叫和接聽實(shí)際來電,但可以通過控制臺(tái)模擬電話呼叫(呼入和呼出)。
(2)不支持USB連接。
(3)不支持相機(jī)/視頻捕捉。
(4)不支持音頻輸入(捕捉),但支持輸出(重放)。
(5)不支持?jǐn)U展耳機(jī)。
(6)不能確定連接狀態(tài)。
(7)不能確定電池電量水平和交流充電狀態(tài)。
(8)不能確定SD卡的插入/彈出。
2.android模擬器使用注意:
平時(shí)使用emulator測(cè)試開發(fā)的網(wǎng)友注意應(yīng)該定期清理下C:\Documents and Settings\sh\Local Settings\Temp\AndroidEmulator文件夾,由于Android模擬器每次運(yùn)行時(shí)會(huì)臨時(shí)生成幾個(gè).tmp后綴的臨時(shí)文件,沒有幾個(gè)月功夫簡(jiǎn)單一看竟然占用磁盤空間高達(dá)5GB之多。這些文件網(wǎng)友可以安全的刪除。
致謝
這次畢業(yè)設(shè)計(jì)之所以能夠順利的完成,需要感謝老師、朋友和同學(xué)的幫助。
首先,我要感謝給我?guī)椭畲蟮牡闹笇?dǎo)老師X老師,X老師從畢業(yè)設(shè)計(jì)開始的選題、開題報(bào)告寫作、工作日志的批注、畢業(yè)論文的修改等這一系列的過程中都給了我很大的幫助。在選擇課題時(shí),張老師就提供給了我許多的課題讓我選擇,這能讓我們自己找到擅長(zhǎng)和喜歡的課題來做。也正是對(duì)現(xiàn)在二維碼的流行,我選擇了這個(gè)課題。在寫開題報(bào)告的時(shí)候,張老師給予了很多開題時(shí)的建議和幫助。在自己每周的工作日志中,X老師也給予了很多好的建議和參考,也提供了基本相關(guān)書籍來學(xué)習(xí)。剛開始從最基本的做起,然后通過查看很多的android書籍和查詢二維碼相關(guān)研究的課題以及二維碼的編碼和解碼技術(shù),完成了此次畢業(yè)設(shè)計(jì)的完成。后來,X老師又給我一些開發(fā)項(xiàng)目的重要建議,程序的完成與實(shí)現(xiàn)是要能夠在別人一做的項(xiàng)目上創(chuàng)新、完善,這樣不僅能節(jié)省開發(fā)時(shí)間,也提高了開發(fā)的效率。在完成課題開發(fā)的時(shí)候,張老師給予我的程序整體上的點(diǎn)評(píng)和不足。最后是張老師在百忙之中對(duì)我的設(shè)計(jì)、論文的進(jìn)行了修改和完善??傊?,在我做畢業(yè)設(shè)計(jì)的過程中,X老師的建議和幫助對(duì)我的畢業(yè)設(shè)計(jì)的完成,起到了很大的作用。
其次,我要感謝我在學(xué)校的傳授知識(shí)的大學(xué)老師。感謝老師們?cè)诖髮W(xué)這四年來對(duì)我的諄諄教導(dǎo),是你們的辛勤工作為我的專業(yè)學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ),為我以后的職業(yè)生涯之路發(fā)揮了重要的作用。同時(shí),老師也教會(huì)了我怎樣面對(duì)自己的人生、規(guī)劃自己的人生、讓你給自己的人生發(fā)光等等。我想這一切的一切,都會(huì)對(duì)我以后的人生產(chǎn)生良好的影響。
最后,我要感謝我的同學(xué)和朋友。感謝他們對(duì)我的支持和幫助,他們?cè)谏詈蛯W(xué)習(xí)的幫助是我努力前進(jìn)的動(dòng)力。在我遇到困難時(shí),幫助我、安慰我。此時(shí),我最想對(duì)你們說:謝謝你們。
發(fā)布于 2022-12-13 23:44?IP 屬地安徽