版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
android條碼識別軟件開發(fā)全解析android條碼識別軟件開發(fā)全解析android的有一大特色就是可以識別條形碼得到URL可以直接訪問地址并下載,這個功能無疑為用戶提供了很大的方便。于是在android上開發(fā)條碼識別軟件肯定是很有必要的!我在網(wǎng)上GOOGLE了一下發(fā)現(xiàn)這類的資料特別少,而且又有很多人在問如何開發(fā)。這里我就分享一下自己的經(jīng)驗(yàn)。這里我們會用到一個開源組件zxing,大體上所有流行的條碼都支持(一維碼,二維碼),并且識別是最好的在所有開源里面。我將詳細(xì)講解ZXing的使用官網(wǎng)地址:http://code.google.eom/p/zxing/這個開源組件支持的條碼有如下:UPC-AandUPC-EEAN-8andEAN-13Code39Code93Code128QRCodeITFCodabarRSS-14(allvariants)DataMatrixPDF417('alpha'quality)下面我會詳細(xì)講解zxing的使用,將在我下幾篇博客中詳細(xì)講解。今天又很晚了,時間總是過的很快啊,尤其是晚上!呵呵,這里先貼出一些效果圖吧!下幾篇我的博客文章再詳細(xì)講解,大致有如下幾個方面:zxing的編譯打包zxing的簡單調(diào)用zxing生成自定義二維碼識別圖片中的條碼效果如圖:自定義二維條碼tank123FakeStSanFrancisco,CA94102
888-888-88
blcgs,cotn/
tankaixiong/識別圖片中的條碼:android條碼識別軟件開發(fā)全解析(續(xù)1詳解)前天我發(fā)了一篇關(guān)于android開發(fā)條碼識別軟件應(yīng)用程序的博客,沒想到竟很受關(guān)注。我也挺受鼓舞的,好吧,我接上次的博客繼續(xù)往下寫。前篇有人講我寫的沒有實(shí)質(zhì)內(nèi)容,我接受建議,這里我就帶大家體驗(yàn)一下最簡單最直接的完美體驗(yàn)。編寫你的第一個android條碼識別程序。zxing的簡單使用!第一步:下載zxing組件:我上篇也簡單介紹了一下這個組件,這里也不啰嗦了。下載兩個東東源碼和文檔說明:地址下如/p/zxing/downloads/detail?name=ZXing-1.6.zip&can=2&q=BarcodeScanner3.5.apk這個是編譯好的一個可安裝的apk程序!這個后面將用到。地址如下/p/zxing/downloads/detail?name=BarcodeScanner3.51b1.apk&can=2&q=第二步:模擬器已完全打開后安裝BarcodeScanner3.5.apkcmd中cd至Usdk目錄利用adb命令安裝BarcodeScanner3.5.apkadbinstallBarcodeScanner3.5.apk所在目錄,請確定安裝成功了。第三步:ok終于到編碼了!國|代碼對應(yīng)的xml如下01<?xmlversion="1.0"encoding="utf-8"?>02〈LinearLayoutxmlns:android二"/apk/res/android"0android:orientation="vertical"android:layout_width="fill_pare3nt"04android:layout_height="fill_parent">05<TextViewandroid:layout_width="fill_parent"0android:layout_height="wrap_content"android:text="@string6/hello"07android:id="@+id/mytxt"/>070808〈Buttonandroid:text二"點(diǎn)我開始掃描"android:id="@+id/mybtn"1android:layout_width="wrap_content"android:layout_height="w0rap_content"></Button>11</LinearLayout>第三步:0K我們趕快看看效果吧,運(yùn)行。你會看到如下:模擬器當(dāng)然沒有攝像頭設(shè)備是掃描不到結(jié)果的??偨Y(jié):這里只是做了一個簡單的調(diào)用,調(diào)用簡單但有一個很大的缺陷,這里我們要安裝兩個程序!在安裝BarcodeScanner3.5.apk為前題,這明顯不能接受!所以接下來我將在下篇博客繼續(xù)深入。敬請關(guān)注!android條碼識別軟件開發(fā)全解析(續(xù)2詳解絕殺?。╆P(guān)于andriod上實(shí)現(xiàn)條碼識別,我前面已經(jīng)講了一些簡單的應(yīng)用,上篇講過的應(yīng)用zxing時必需多安裝其組件這是不能接受的,我想大家都已經(jīng)想到解決的方法了吧,呵呵,其實(shí)正真學(xué)習(xí)一個東西,從其最基本的東東開始--大家都知道就是源碼了。0K,我們要深入條碼的識別的話自然就要去讀zxing的源碼,你讀完之后就不只是懂得其源碼了,你會發(fā)現(xiàn)你其實(shí)收獲到的不僅僅只有這點(diǎn),還有更多的東西,比如你更深入學(xué)習(xí)android的又一個應(yīng)用示例對Android的開發(fā)多了了解。
官網(wǎng)源碼提供免費(fèi)下載,但幫助文檔不是很全,最近有在讀它的源碼,去調(diào)試運(yùn)行它的源碼對你去理解了解其結(jié)構(gòu)是很有幫助的。官網(wǎng)上只提供源碼的下載,并沒有提供編譯好的開發(fā)包,也就是說你自己下過來后還要自己編譯,不然把下下來的源碼程序?qū)氲絤yeclipse中會報錯。importimportImportimportzLm^ort如圖:importimportImportimportzLm^ortcom.g-oogle.zxing.BinaryBitrnap;」n?5?n??E?.mr■皿mmumiArnww皿譏?f皿心卮coin?卬口ocrle?exinq?MultLFouinatRe對于新手可能有些不知下手,這里我就講下zxing的編譯,為后面的開發(fā)做好一個最基本的準(zhǔn)備!第一步:準(zhǔn)備包http://code.google.eom/p/zxing/下載編譯zxing下載ant地址/下載proguard地址/index.html#/downloads.html解壓:zxing-1.6目錄結(jié)構(gòu)下:pertiesbuild.xml第二步:配置環(huán)境變量。打開perties修改proguard為你下載的proguard下的lib文件夾下的proguard.jar指向android-home你的sdk目錄proguard-jar=../proguard4.5.1/lib/proguard.jar版本為4.4以上android-home=../Android/android-sdk-windows配置ant環(huán)境變量ANT_HOMEE:\MyLiB\java\ANT\apache-ant-1.8.1PATHE:\MyLiB\java\ANT\apache-ant-1.8.1\bincmd中ant回車出現(xiàn)Buildfile:build.xmldoesnotexist!Buildfailed表現(xiàn)成功!第三步:開始編譯
cd到core目錄然后ant!BUILDSUCCESSFULTotaltime:*second表示成功編譯!然后編譯androidcd../androidant好了!有了核心包后我們可以就可以導(dǎo)入到項(xiàng)目工程里去了,現(xiàn)在是不是就不報錯了!而且還可以直接運(yùn)行的!如圖:+國ViewfinderVisw.Java+J2aing:Tee七人匚七1」a^aAndroid2.2EgenAndroid2.2+5-三Referenced.Libraries?■區(qū)core,jar-${euternsl-lLbE-folder}assetsLiBsImportcoin?googl亡?SKing?BinaryBit-inap;Importcoin,goojl亡.Exinj.Mult-iFormat-R亡厲厲亡匸;jjnpDrtcom.google.zxing.ReaderExcept-ion;importcom.google.EKing.Result;unportcom.google.zx:mon.HybridBinarizer;■im>-tartai?1--arirl'rritrl廠bhVi&l--blire■ZXingTestActivity為其zxing運(yùn)用的例子,這是學(xué)習(xí)zxing的一個很好的幫助!這個例子運(yùn)行前提也是必需先安裝BarcodeScanner3.5.apkandroid目錄則是前篇我博客講調(diào)用時必需安裝的一個組件BarcodeScanner3.5.apk的源碼。呵呵,我想大家就知道了,對了,想不安裝我們可以直接在源碼上進(jìn)行修改并進(jìn)行編譯,就ok了。希望我的這幾篇文章可以給大家有些幫助,也算引個方向,最后更深入學(xué)習(xí)代碼,就只能看自己了!大家肯定比我聰明,會很快讀懂源碼并很快應(yīng)用起來,如有什么問題希望大家一起探討學(xué)習(xí),不斷進(jìn)步!下幾篇博客我想可以寫一些基于zxing條碼識別自己的運(yùn)用程序示例了!如果大家有興趣我會和大家一起分享!好了,今天就寫到這里了!另附編譯說明:官網(wǎng)引用詳細(xì)參見:DownloadandinstallthelatestpublicAndroidSDK.Epertiesatthetopleveloftheproject,andchangetheandroid-homepropertytopointtotheSDKinstalllocationDownloadProguard,version4.4minimum,andinstallitwhereyoulike.Epertiesandsetproguard-jartothefullpath(includingthefilename)oftheProGuardlibrary.Buildcore;NotethatcoremustbebuiltwithoutdebugsymbolstoavoidanincompatibilitybetweenproguardandtheAndroidtoolchain:cdcoreantcleanbuild-no-debugBuildandroid:cd../androidant另外我上傳已經(jīng)編譯我的jar包供大家下載:/tankaixiong/zxing%e6%a0%b8%e5%bf%83%e5%8c%85.rar條碼掃描二維碼掃描ZXingandroid源碼簡化刖言最近公司的Android項(xiàng)目需要用到攝像頭做條碼或二維碼的掃描,Google一下,發(fā)現(xiàn)一個以ApacheLicense2.0開源的ZXing項(xiàng)目。Zxing項(xiàng)目里的Android實(shí)現(xiàn)太過復(fù)雜多余東西太多,得對其進(jìn)行簡化。前提條件下載源代碼:點(diǎn)擊這里編譯核心庫:Zxing的主頁上有介紹具體步驟,大家也可以參照這篇博文android條碼導(dǎo)入軟件開發(fā)全目析(續(xù)丄詳解絕殺?。┐蜷_Eclipse導(dǎo)入源碼中的Android項(xiàng)目,然后右擊項(xiàng)目選擇“Buildpath”》"AddExternalArchives"把核心庫core.jar文件加入到項(xiàng)目中。此時編譯一下項(xiàng)目,會發(fā)現(xiàn)報錯,“Multiplesubstitutionsspecifiedinnon-positionalformat;didyoumeantoaddtheformatted="false"attribute"之類的。打開raw下的Values發(fā)現(xiàn)錯誤是在一個vString〉上。這里把“preferences_custom_product_search_summary”里的%s%f全部都改成%1$s%1$f(因?yàn)槲覀冇貌坏蕉鄧Z言,建議只保留默認(rèn)的Value,其他全部刪除)。原因:由于新的SDK采用了新版本的aapt(Android項(xiàng)目編譯器),這個版本的aapt編譯起來會比老版本更加的嚴(yán)格,然后在Android最新的開發(fā)文檔的描述String的部分,已經(jīng)說明如何去設(shè)置%s等符號
“IfyouneedtoformatyourstringsusingString.format(String,Object...),thenyoucandosobyputtingyourformatargumentsinthestringresource.Forexample,withthefollowingresource:<stringname="welcome_messages">Hello,%1$s!Youhave%2$dnewmessages.</string>Inthisexample,theformatstringhastwoarguments:%1$sisastringand%2$disadecimalnumber.Youcanformatthestringwitharguementsfromyourapplication...“經(jīng)過以上步驟后項(xiàng)目應(yīng)該就可以運(yùn)行了。但是ZXing的android項(xiàng)目東西太多了,有很多是我們不需要的,得新建另一個項(xiàng)目在開始前大致介紹一下簡化ZXing需要用到各個包、類的職責(zé)。CaptureActivity。這個是啟動Activity也就是掃描器(如果是第一安裝,它還會跳轉(zhuǎn)到幫助界面)。CaptureActivityHandler解碼處理類,負(fù)責(zé)調(diào)用另外的線程進(jìn)行解碼。DecodeThread解碼的線程。com.google.zxing.client.android.camera包,攝像頭控制包。新建另一個項(xiàng)目將啟動的Activity命名為CaptureActivity,并導(dǎo)入核心庫。項(xiàng)目新建完成后我們打開CaptureActivity的布局文件,我這里為main。把里面的XML修改為:1<FrameLayoutxmlns:android="/apk/res/android"2android:layout_width="fill_parent"android:layout_height="fill_parent">3<SurfaceViewandroid:id="@+id/preview_view"4android:layout_width="fill_parent"android:layout_height="fill_parent"5android:layout_centerInParent="true"/>67<com.Zxing.Demo.view.ViewfinderView8android:id="@+id/viewfinder_view"android:layout_width="fill_parent"9android:layout_height="fill_parent"android:background="@android:color/transparent"/>10<TextViewandroid:layout_width="wrap_content"11android:id="@+id/txtResult"12android:layout_height="wrap_content"android:text="@string/hello"/>
13</FrameLayout>可以看到在XML里面用到了ViewfinderView自定義view。所以新建一個View的包,然后把:ViewfinderView和ViewfinderResultPointCallback靠到里面(記得對應(yīng)修改XML里面的包)。打開CaptureActivity覆蓋onCreate方法:1@Override2publicvoidonCreate(BundlesavedInstanceState){3super.onCreate(savedInstanceState);4setContentView(R.layout.main);5//初始化CameraManagerCameraManager.init(getApplication());78viewfinderView=(ViewfinderView)findViewById(R.id.viewfinderview);9txtResult=(TextView)findViewById(R.id.txtResult);10hasSurface=false;11inactivityTimer=newInactivityTimer(this);12}這里調(diào)用到的CameraManager類是控制攝像頭的包里的類。新建一個camera包把:com.google.zxing.client.android.camera里面的類全部拷入,另外我把PlanarYUVLuminanceSource也拷入到這個包里面。根據(jù)錯誤的提示來修正代碼,主要是修改正包結(jié)構(gòu)。(整個簡化的流程都是如此:“根據(jù)錯誤提示,修改代碼”)。[JJAutoFocusCa11baclkijava匚曰meraConfigurationManager.javaQCameraMsrraaer.java國Fla5hIightMarfager.java[T|PlanarVUVLuminanceSource-寸衛(wèi)[T]Prev\ewCa11back.javs在修改的過程中,有很多是關(guān)于R資源的問題,在此我們需要將Values里面的兩個xml資源文件拷入項(xiàng)目中:colos.xml和ids.xml。ctrl+b—下看看error是不是少了很多。在CameraManager中有些地方需要用到項(xiàng)目的配置,這里需要把配置直接寫入代碼中://SharedPreferencesprefs=PreferenceManager.getDefaultSharedPreferences(context);/是否使用前燈//if(prefs.getBoolean(PreferencesActivity.KEY_FRONT_LIGHT,false)){//FlashlightManager.enableFlashlight();//}FlashlightManager.enableFlashlight();
使用攝像頭需要加入相應(yīng)的權(quán)限:<uses-permissionandroid:name="android.permission.CAMERA"></uses-permission><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-featureandroid:name="android.hardware.camera"/><uses-featureandroid:name="android.hardware.camera.autofocus"/><uses-permissionandroid:name="android.permission.VIBRATE"/><uses-permissionandroid:name="android.permission.FLASHLIGHT"/>當(dāng)View和camera包里的錯誤修正完成后,我們繼續(xù)來看CaptureActivity。覆蓋onResume方法初始化攝像頭:@OverrideprotectedvoidonResume(){super.onResume();SurfaceViewsurfaceView=(SurfaceView)findViewById(R.id.previewview);SurfaceHoldersurfaceHolder=surfaceView.getHolder();if(hasSurface){initCamera(surfaceHolder);else{surfaceHolder.addCallback(this);surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}decodeFormats=null;characterSet=null;playBeep=true;AudioManageraudioService=(AudioManager)getSystemService(AUDIO_SERVICE);if(audioService.getRingerMode()!=AudioManager.RINGER_MODE_NORMAL){playBeep=false;}initBeepSound();vibratetrue;}initCameraSurfaceHolder接口實(shí)現(xiàn)
initCamera()方法用于初始化攝像頭,如果排除了所有的error,運(yùn)行項(xiàng)目時就可以看到大致掃描界面了。surfaceHolder.addCallback(this);表示讓CaptureActivity實(shí)現(xiàn)其callback接口。handler=newCaptureActivityHandler(this,decodeFormats,characterSet)用于解碼碼處理。上面的步驟主要都是用于對攝像頭的控制,而解碼的真正工作入口是在CaptureActivityHandler里面的。新建一個Decoding包把以下文件拷入包中:CaptureActivityHandlerDecodeFormatManagerDecodeHandlerDecodeThreadFinishListenerInactivityTimerIntents由于我們的包結(jié)構(gòu)和Zxing項(xiàng)目的有所不同所以需要注意一下類的可訪問性同樣開始ctrl+B編譯一下,然后開始修正錯誤。在CaptureActivityHandler里把handleMessage里的部分方法先注釋掉如:
“decode_succeeded”分支,這是解碼成功時調(diào)用CaptureActivity展示解碼的結(jié)果。在DecodeThread類里,修改部分涉及Preference配置的代碼:DecodeThread(CaptureActivityactivity,Vector<BarcodeFormat>decodeFormats,StringcharacterSet,ResultPointCallbackresultPointCallback){this.activity=activity;handlerInitLatch=newCountDownLatch(1);hints=newHashtable<DecodeHintType,Object>(3);////Theprefscan'tchangewhilethethreadisrunning,sopickthemuponcehere.//if(decodeFormats==null||decodeFormats.isEmpty()){//SharedPreferencesprefs=PreferenceManager.getDefaultSharedPreferences(activity);//decodeFormats=newVector<BarcodeFormat>();//if(prefs.getBoolean(PreferencesActivity.KEY_DECODE_1D,true)){//decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS);//}//if(prefs.getBoolean(PreferencesActivity.KEYDECOD
E_QR,true)){//decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS);//}//if(prefs.getBoolean(PreferencesActivity.KEY_DECODE_DATA_MATRIX,true)){//decodeFormats.addAll(DecodeFormatManager.DATA_MATRIXFORMATS);//-}//}if(decodeFormats==null||decodeFormats.isEmpty()){decodeFormats=newVector<BarcodeFormat>();decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS);decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS);decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);}hints.put(DecodeHintType.POSSIBLE_FORMATS,decodeFormats);if(cha
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度班主任學(xué)生行為規(guī)范教育師徒輔導(dǎo)協(xié)議2篇
- 2024版冷鏈物流車租賃合同范本
- 2025版高效農(nóng)業(yè)雞糞采購合同條款及執(zhí)行策略3篇
- 2025版農(nóng)村居民生活用水保障合同范本3篇
- 2024年適用二手塔吊購銷協(xié)議樣本版
- 二零二五年體育場館廣告租賃服務(wù)協(xié)議3篇
- 2024年雨污分流工程承包細(xì)則標(biāo)準(zhǔn)協(xié)議版B版
- 2024木材購銷及倉儲物流服務(wù)合同范本3篇
- 2025版精裝電子產(chǎn)品店鋪?zhàn)赓U服務(wù)合同3篇
- 2024年蜜蜂生態(tài)養(yǎng)殖合作框架
- 醫(yī)院院長年終工作總結(jié)報告精編ppt
- 大連市小升初手冊
- 《自然辯證法》課后習(xí)題答案自然辯證法課后題答案
- 造價咨詢結(jié)算審核服務(wù)方案
- 中國人民財產(chǎn)保險股份有限公司機(jī)動車綜合商業(yè)保險條款
- 燃?xì)夤こ瘫O(jiān)理實(shí)施細(xì)則(通用版)
- E車E拍行車記錄儀說明書 - 圖文-
- 人才梯隊(duì)-繼任計劃-建設(shè)方案(珍貴)
- 《健身氣功》(選修)教學(xué)大綱
- 王家?guī)r隧道工程地質(zhì)勘察報告(總結(jié))
- 《昆明的雨》優(yōu)質(zhì)課一等獎(課堂PPT)
評論
0/150
提交評論