1. 程式人生 > >Android(4):Android Studio zxing掃碼

Android(4):Android Studio zxing掃碼

zxing私人定製之一 初試掃碼

引:第一次接觸二維碼,當然二維碼原理懂得不多!那又何妨?有強大的zxing!
zxing程式碼真的寫的很不錯!支援各種平臺,程式碼架構清晰…大神之作!

結構目錄介紹

這裡寫圖片描述

當然第一時間把整專案下載回來.很大!整個專案幾乎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預覽/相片解析度等諸多問題