前言:由於公司用的掃碼庫是ZXing,可是在使用的時候發現存在一些問題,因此就想分析一下源碼,搞清楚ZXing解析二維碼的原理和步驟,而後再進一步對ZXing進行一些優化。java
ZXing
庫是開源的,能夠直接在github下載源碼閱讀,源碼地址在這裏,能夠用git命令將源碼clone道本地,如圖 android
模塊 | 描述 |
---|---|
core | 圖像解碼庫和測試代碼 |
javase | JavaSE的客戶端代碼 |
android | Android客戶端的源碼 |
android-integration | 簡化Intent與Android客戶端集成 |
android-core | 配置Android攝像頭 |
zxingorg | 在線解析二維碼 |
zxing.appspot.com | 在線生成二維碼 |
docs | 介紹ZXing項目的文檔 |
源碼下載下來後的工做就是導入Android Studio中來跑下,看下源碼運行的效果,從下載下來的模塊來看,這裏與Android有關的代碼應該是在android
、androidcore
和core
模塊中,這裏的android
模塊Android客戶端的源碼,可是要想成功運行源碼,還須要將android
、androidcore
做爲其依賴庫。具體的操做方法以下git
android
模塊導入項目。AndroidLibrary
,修更名稱後點擊Finish
便可生成一個ModlueLibrary
,而後,將生成的Library
中Java目錄下的文件刪除,將Zxing中的core文件夾下的Java目錄下的文件拷貝過來,最後,將此模塊設爲android
模塊的依賴。androidcore
模塊。以上操做完成後,項目的結構應該以下圖所示 github
這時還須要解決幾個問題,代碼才能運行起來,步驟以下 app
android
模塊下的AndroidManifest.xml
中的<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22"/>
複製代碼
這行代碼刪除。測試
HistoryItemAdapter.java
的構造方法中的代碼修改成HistoryItemAdapter(Context activity) {
super(activity, R.layout.history_list_item, new ArrayList<HistoryItem>());
this.activity = activity;
}
複製代碼
RSSExpandedReader.java
中的這句代碼ps = checkRows(new ArrayList<>(), 0);
複製代碼
修改成優化
ps = checkRows(new ArrayList<ExpandedRow>(), 0);
複製代碼
將上面幾處修改完成,此時項目就能跑起來了,不過這時跑起來的項目是橫屏的,只要在AndroidManifest.xml
修改如下Acticity的配置就能將橫屏切換成豎屏了。this
本篇主要講述了怎樣下載及運行項目,只有將項目運行起來,才能方便的調試,經過調試才能很好的理解其中的原理及解析源碼的步驟。能夠發現如今運行的項目其中有好多功能對咱們來講都是多餘的,下篇咱們將刪除多餘的功能並開始分析源碼,瞭解整個解碼的步驟。spa
本文已由公衆號「AndroidShared」首發調試