轉載請标明出處:
http://blog.csdn.net/zq2114522/article/details/51485680;
本文出自:【梁大盛的部落格】
zxing私人定制之一 初試掃碼
引:第一次接觸二維碼,當然二維碼原理懂得不多!那又何妨?有強大的zxing!
zxing代碼真的寫的很不錯!支援各種平台,代碼架構清晰…大神之作!
結構目錄介紹
zxing項目:https://github.com/zxing/zxing/tree/master
在寫此文章的時候Android app版本已經去到4.7.6了
當然第一時間把整項目下載下傳回來.很大!整個項目幾乎100+M.但是對于我們來說,用到的就幾M的東西.關注三個檔案夾!
看到目錄的結構基本都知道是使用eclipse建立的項目,畢竟現在已經是Android Studio的天下了.我們不可能還挂倒檔倒車吧?
接下來就是建立Android Studio項目!
建立Android Studio工程
目前采用是一邊導入項目一邊截圖的方式,這種方式是否沒效率?
Android Studio 版本:2.0Beta5
Jdk 版本: 1.8
項目名稱:zxing
預設MinmumSdk:10
預設Empty Activity
預設開發環境幫我們自動建立MainActivity,activity_main布局檔案.
Android Studio 2.0建立項目預設是采用gradle-2.0.x 建構項目,可以看到使用gradle-2.0.x導緻項目出錯.最簡單的辦法就是将版本改成1.5.0.當然我也是這樣幹的.修改完同步一次錯誤消除.
把zxing項目zxing-master\android\src\com\google\zxing\client\android目錄下存放的是和Android相關的代碼.拷貝到我們的項目裡面.
删除MainActivity.java,Android 幫我們建立的資源檔案(因為我們無需使用開發環境為我們建立的資源).
把zxing項目zxing-master\android\res目錄下所有檔案拷到我們項目的res目錄下
建立core子產品,裡面放置和android平台無關的代碼.zxing的核心解碼代碼.
(zxing項目,core子產品主要負責二維碼的解碼工作.全部使用java語言編寫,于平台無關.作為一個子產品引入.app子產品就是純粹的android代碼了.分别一個是通用代碼一個是android,很清晰的代碼結構.是以zxing移植到各種平台也不是一件難事!)
删除開發工具為自動建立的代碼
把zxing項目zxing-master\core\src\main\java目錄下的代碼拷到我們項目core子產品的相應目錄下.
app子產品依賴core子產品.給app添加子產品依賴.
AndroidManifest.xml檔案安裝zxing照搬即可,但是要注意package屬性不要弄錯.
到這裡嘗試編譯,發現還漏了一個類(CameraConfigurationUtils.java).然後發現報錯了.
zxing項目把CameraConfigurationUtils.java安置在android-core目錄下.因為都是和android相關的,把CameraConfigurationUtils.java拷到zxing.camera包下.
再編譯,發現很多import都是無效的.因為代碼都是在zxing項目拷貝過來,很多import引用的包名來到我們的項目就不對了.使用把包名替換一下即可.
zxing項目中原包名:com.google.zxing.client.android
現項目包名:com.dsliang.zxing
引來新的問題,因為我Jdk是1.8.但是發現使用Jdk 1.8編譯會報錯,嘗試換成Jdk 1.7通過編譯.
但是在在代碼中一下子找不到那裡的問題.這下子終于正确無誤的編譯過了!
那就嘗試真機運作看看效果吧!不知道你激動了沒,反正我現在很激動!
事實上是,閃退了!閃退!閃退!
還好隻有布局檔案有些許問題.出現類無法找到.修改類名即可(因包名沒改過來).
我保證在我電腦這是最後一個錯!哈哈,如無意外,人品好的話應該可看到想看的結果!
附上:
編譯工具版本
嘗試掃一掃
zxing項目運作起來應該是這樣子的.
或者是這樣的(掃描産品條形碼)
zxing很強大,支援很多種個格式的二維碼.
當然更多的細節隻有在代碼裡面才知道…有興趣的同學請去看源碼把!
總結
第一篇沒寫什麼有價值的東西,隻是簡單的把代碼跑一次.剔除掉一些沒相關的代碼,但是有個一問題!
發現zxing代碼預設是橫屏模式麼?(風景模式)橫屏模式!市面上沒多少二維碼掃描工具是橫屏模式的吧?
微信就是最典型的,單單從使用角度上豎屏才是實用性最強的吧?
那麼對于我來說,接下來的第二篇關于zxing的檔案就是實作豎屏了!因為豎屏牽涉到camera稍稍會複雜,并且會穿插zxing掃描的原理和整體運作流程,掃描結果處理,camera預覽/相片分辨率等諸多問題
因為網絡問題一直沒法上傳到github,附上下載下傳位址:
http://download.csdn.net/detail/zq2114522/9531339
github:
https://github.com/dsliang/simple-zxing