目前二維碼掃描功能在app上已經非常成熟了,而zxing項目也是目前可以說是最流行的二維碼掃描方面的開源項目了,今天介紹下,怎么把zxing移植到我們android工程項目,最近做這方面的工作,發現網上這方面的介紹比較少,今天整理一篇。 zxing github網址 github項目代碼很多,剛開始看的時候我看得有點懵逼,其實移植到android上只需要三個目錄
上面用紅色圈圈畫出的三部分有需要,android目錄是要導入到工程的源碼,android-core和core兩個目錄我們需要編譯成jar,因為里面的一些類在android中有用到。
我這里用的是Android studio,首先把zxing github的工程download下來,然后在自己的工程中選擇import module,選擇zxing項目里的android,module名字改成zxing,成功之后變這樣
運行之后發現各種紅色的Error,找不到類,這些找不到的類都在zxing項目中,我們分別對zxing項目里的android-core, core目錄里的源碼進行maven編譯,具體編譯方式看這里,然后我們就得到兩個jar包,放到libs目錄下,add as library,然后所有的error就消失了,這個時候會發現我們app的名稱跟圖標貌似被改了,這個小問題,要改動的話把zxing項目里的Androidmainfiest的appicon跟strings.xml里的app_name改成自己想要的。
雖然上面我們導入了zxing并且順利編譯通過,但我們還需要要把zxing改成一個lib的module,并在主工程引用改lib module。 先要修改下zxing的build.gradle,把第一行的apply plugin 改成
apply plugin: 'com.android.library'并刪除applicationId,然后gradle 同步下就發現zxing變lib module了,這個時候還會有些Error,提醒需要常量表達式 解決方法很簡單就是把switch改成if else。。。。
你可能還會遇到引入的zxing設置的minSdkVersion跟原來的項目不兼容,把zxing的minSdkVersion改成和主工程一樣即可。
在主工程的build.gradle里面增加dependecies
compile 并刪除zxing里面Androidmainfiest對CaptureActivity的啟動intent-filter。 到此為止,整個zxing項目就導入到我們的工程了,然后你可以針對自己的功能刪除不必要的代碼,我刪除了大部分代碼只留下的簡單的掃描功能,Demo地址。新聞熱點
疑難解答