資源描述:
《基于android二維碼掃描系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、基于Android二維碼掃描系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn) 摘要:基于信息化水平的提高和二維碼應(yīng)用的飛速發(fā)展,本文對(duì)二維碼的解碼過程進(jìn)行了討論,并在Android系統(tǒng)上設(shè)計(jì)開發(fā)了一套二維碼掃描系統(tǒng)。對(duì)基于智能手機(jī)的二維碼掃描識(shí)別技術(shù)提供了思路和解決方案,具有一定的參考價(jià)值。關(guān)鍵詞:Android二維碼中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1007-9416(2013)12-0151-011引言隨著智能手機(jī)的普及和信息化水平的提高,二維碼在我國已經(jīng)為人們廣泛的認(rèn)識(shí)和接受,在美國和日本等發(fā)達(dá)國家,二維碼被應(yīng)用于物
2、流、電子憑證及工業(yè)管理等諸多領(lǐng)域??梢哉f,二維碼作為一種全新的信息存儲(chǔ)、傳遞和識(shí)別技術(shù),擁有廣泛的發(fā)展前景。但怎樣快速高效的解析出二維碼數(shù)據(jù)是其中的關(guān)鍵點(diǎn),本文著重討論了二維碼解析的核心步驟,并基于目前市場上占有率和使用率最高的Android系統(tǒng),設(shè)計(jì)并開發(fā)了二維碼掃描系統(tǒng),具有一定的應(yīng)用價(jià)值。2系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)2.1Android開發(fā)簡介5Android是一種基于Linux的開放源代碼的操作系統(tǒng),主要使用于智能手機(jī)和平板電腦等移動(dòng)設(shè)備上。Android系統(tǒng)采用分層的架構(gòu),分為應(yīng)用程序?qū)?、?yīng)用程序框架層、
3、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層。Android開發(fā)中最基本的四大組件分為為Activity、Service服務(wù)、ContentProvider內(nèi)容提供者及BroadcastReceiver廣播接收器。2.2二維碼解碼分析二維碼是用某種特定的幾何圖形按一定的規(guī)律在平面上分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的?;趫D像處理的二維碼解碼算法大體上分為五個(gè)步驟:圖像預(yù)處理、定位與校正、讀取數(shù)據(jù)、糾錯(cuò)以及譯碼。本系統(tǒng)設(shè)計(jì)時(shí)借助了Zxing開源類庫,ZXing是Google提供的一個(gè)開源Java類庫用于解析多種格式
4、的1D/2D條形碼,能夠?qū)R、DataMatrix二維碼以及條形碼進(jìn)行解碼。在開發(fā)程序時(shí),可以借助于Zxing里提供的類庫,調(diào)用適當(dāng)?shù)哪K或函數(shù),開發(fā)出屬于自己特定應(yīng)用的二維碼解碼軟件。2.3系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)本系統(tǒng)基于Android系統(tǒng)設(shè)計(jì)并開發(fā)。首先新建立工程,并從Zxing官方網(wǎng)站下載最新的解碼核心類庫,導(dǎo)入到新建的工程文件中。5本系統(tǒng)主要函數(shù)類包括:CaptureActivity:主類,程序的入口;PreviewCallback:攝像頭回調(diào)類;PlanarYUVLuminanceSource類:用
5、于原始數(shù)據(jù)的轉(zhuǎn)換;AutoFocusCallback:自動(dòng)對(duì)焦。CameraManager:攝像頭管理類,用于攝像頭的打開和關(guān)閉;DecodeHandler:數(shù)據(jù)傳輸中樞;DecodeFormatManager:配置解碼格式類;CaptureActivityHandler:用于解碼成功與否的數(shù)據(jù)傳輸中介;ViewfinderView:掃描框。本系統(tǒng)界面設(shè)計(jì)主要采用了Android布局文件中的Framelayout、Linearlayout組件,并自定義了ViewfinderView類用來布局掃碼的掃描框
6、。掃碼界面設(shè)計(jì)思路是整個(gè)界面由外邊半透明的部分和中間全透明部分組合而成,半透明部分由四個(gè)矩形組成,調(diào)用canvas.drawRect()函數(shù)繪制而成,canvas函數(shù)能夠?qū)崿F(xiàn)在界面上自由繪制自己想繪制的圖形,其中中間的全透明部分也有四個(gè)矩形組成,只不過每個(gè)矩形都很窄,為兩個(gè)像素寬,看著就像一條直線。整個(gè)界面如圖2所示。系統(tǒng)實(shí)施流程為首先啟用CaptureActivity,用于啟動(dòng)攝像頭CameraManager類對(duì)圖像進(jìn)行捕獲,然后利用CaptureActivityHandler類對(duì)圖像進(jìn)行解碼處理,負(fù)
7、責(zé)調(diào)用另外的線程進(jìn)行解碼,其次利用DecodeHander類對(duì)數(shù)據(jù)進(jìn)行處理和傳送,最后在handleDecode中得到并查看二維碼中的原始數(shù)據(jù)。二維碼譯碼過程如圖1所示,系統(tǒng)掃碼界面及掃碼結(jié)果如圖2所示。53測試根據(jù)實(shí)際需要,本系統(tǒng)選取了高低兩款不同配置的智能手機(jī)進(jìn)行測試工作。一款為低端配置的摩托羅拉ME525(800MHZ的TIOMA3610處理器、PowerVRSGX530顯卡和512MBRAM空間),另一款為高配置的三星galaxyS4(四核1.9GHz的高通驍龍600處理器、SGX544MP3顯
8、卡和2GBRAM空間)。使用這兩款機(jī)器對(duì)三種不同規(guī)格的二維碼進(jìn)行了50次測試,測試結(jié)果如表1所示。從測試結(jié)果來看,本系統(tǒng)掃碼時(shí)間和識(shí)別率均能達(dá)到較好水平。4結(jié)語本文對(duì)二維碼的解碼進(jìn)行了討論,并基于Android系統(tǒng)設(shè)計(jì)并開發(fā)了一套掃碼系統(tǒng),良好的運(yùn)行效果及測試結(jié)論證明了基于Android系統(tǒng)的二維碼掃碼系統(tǒng)的可行性及技術(shù)的成熟性,具有一定的應(yīng)用價(jià)值。參考文獻(xiàn)[1]曾健平,邵艷潔.Android系統(tǒng)架構(gòu)及應(yīng)用程序開發(fā)研究[J].微計(jì)算機(jī)信息,