關於提高掃描速度的改進方案(轉載)--Zxing與Zbar結合使用

本文轉載自Terry_erdong:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=332855&page=1&ordertype=1


最近公司需要實現二維碼掃描的功能,可能這個大家一看就覺得。論壇Demo一大把,隨便copy一個就可以使用了!起初我也是這麼認爲,隨便找了一個改改!!後來發現Bug太多,有太多不理想的東西。。索性自己來做。

首先說一下目前大家常用的方法的不足吧:

一、 使用開源Zxing掃描

1、原始代碼是橫屏模式,儘管可以改成豎屏,但是掃描界面的自定義和多屏幕適配不好做

2、有效掃描區域不好控制,可能是我自己技術不成熟,沒找到好方法

3、Zxing是Java寫的,對二維碼的解析效率不是很高

二、 使用iOS開發經常使用的Zbar掃描

1、 Zbar是c實現的二維碼解析,效率和Zxing不是一個層面的,但是貌似是日本人寫的,中文掃描會亂碼

2、 Zbar的掃描界面對相機的控制沒有Zxing封裝的好

基於以上一些原因,筆者決定何不將二者結合起來,用Zxing來控制攝像頭,用Zbar來解析掃描到的數據,說幹就幹。

三、 我的開發步驟

幹起來也不是那麼簡單,剝離Zxing的Camera控制代碼,得到掃描的原始數據,Zxing的ViewFindView個人感覺不是很好,索性我就把它去掉了,直接通過xml文件進行佈局,多屏幕的適配瞬間就解決了。並且對於掃描激光線的控制,橫豎屏的控制都只需要稍稍變換代碼即可實現。so good!

既然拿到了掃描的數據,那怎麼解析呢???Zbar的有效掃描區域的截取也是個難點。通過多天的嘗試也最終解決。

可是Zbar的中文亂碼應該怎麼解決呢?網上找了之後發現需要修改Zbar的qrcodetxt.c將裏面的編碼ISO-8859-1改成GBK就可以了,可是改了源碼就需要編譯生成.so文件才能使用啊!我了個去。。這不是讓我去使用ndk麼、、、幸好找到了這位大嬸的方法
http://www.blackdogfoundry.com/blog/zbar-bar-code-qr-code-reader-android/),一步步走,果斷編譯出了我想要的.so文件。。。哈哈

好了一切搞定,給出效果圖

1. 整個代碼結構
 


2. 修改Zbar有效掃描區域的關鍵代碼
 


3. 解碼的關鍵代碼
 


4. xml界面佈局效果圖
 


5. 最終的掃描效果圖
 



四、最後我比對了一下掃描效果

1. QQ的掃描用的也是Zxing的,解碼沒有我的這個快

2. 支付寶的掃描效率很迅速,但是他的灰色覆蓋層是假的,,將二維碼不放到取景框也可以掃描到結果

五、 掃描界面模仿的是QQ的效果,但是圖片和激光線都是我自己PS的,,爲了畫那個激光線,我們的美工教了我一招動感模糊。。哦也,我又掌握了一個新技能。。。最後感謝所有我參考過的博文博主,由於太多不一一列出,一併感謝。。


六、 源碼已託管至GitHub 以下是鏈接:https://github.com/SkillCollege/QrCodeScan
七、 Zbar編譯的庫源碼也已經push到github,有需要的可以fork修改。。。

發佈了105 篇原創文章 · 獲贊 18 · 訪問量 65萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章