開發環境:Android Studio 1.4 Beta2
ZXing 3.2.1
SDK API22
一、簡介
ZXing是一個著名的二維碼開源項目,最近項目需要添加掃一掃功能,網上找實現方法后決定用ZXing,項目主頁:https://github.com/zxing/zxing。同步下來后,有幾個比較重要的目錄:
core與android core是項目的核心目錄以及android開發需要的核心,基本上需要二次開發的話需要引用這兩個目錄;
android 目錄:是一個叫做“條碼掃描器”(Barcode Scanner)的程序,是官方利用core與android core實現的一個掃碼程序;
android-integration:提供了一種簡單的讓你在你的app中調用Barcode Scanner(簡稱BS)的實現,用它的話有一個弊端,需要在手機上同時安裝你的app和BS,掃碼是你的app會調用BS這個app;
androidtest:就是一個利用android-integration調用BS的例子。
與android開發相關的基本上就這5個目錄,在實際開發中,考慮到integration的弊端,我們舍棄這種方式,而是將ZXing整合到我們的項目中去,而考慮到引入core與android core來進行二次開發的周期比較長,決定直接在項目用引用Barcode Scanner。
二、作為引用導入BS
在Android Studio中打開我們的項目A,將android文件夾拷貝到項目A目錄下,重命名為ZXing,依次點擊File->Project Structure->Project Setting->Modules ,點擊+添加module,選擇Import Module,選中目錄下的ZXing文件夾,點擊添加:
然后繼續在Modules設置中將主Module的Dependencies中加入ZXing,加入完畢。運行后出現錯誤:
Error:(84, 33) java: -source 1.6 中不支持 diamond 運算符
(請使用 -source 7 或更高版本以啟用 diamond 運算符)
修改ZXing下build.gradle中javaversion版本,將1.6改為1.7:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
同時將ZXing的language level 改為7:
完成后項目運行無錯誤。
最后,在相應按鈕的監聽中添加跳轉處理,即可開啟二維碼掃描功能:
Intent intent = new Intent(AppMainFrame.this, CaptureActivity.class);
startActivity(intent);
注意刪除掉ZXing下Manifest中的
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>