項目需要用到掃描條形碼,所以找了下zxing,太久沒用,重新過了一遍集成,
github:zxing 地址
進入github,我是直接download整個項目,然後完整目錄,再在工程中,以module的形式導入目錄下的android工程,
導入之後,android這個有幾個地方需要注意修改的,也可以根據提示修改:
1、將gradle中的各種sdk與主工程保持一致
2、修改gradle中的apply plugin爲com.android.library
3、將applicationId屏蔽或者刪除
4、添加代碼依賴
dependencies{
api 'com.google.zxing:android-core:3.3.0'
api 'com.google.zxing:core:3.3.2'
}
5、manifest配置文件中注意將application中的icon,logo,lable等去掉,同時找到CaptureActivity,屏蔽去除其中的代碼
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN"/>-->
<!-- <category android:name="android.intent.category.LAUNCHER"/>-->
<!-- </intent-filter>-->
因爲此activity是android工程的入口,現在作爲一個庫,不需要此代碼
6、代碼內的switch case 代碼需要替換成if else,從git下載時,如果還沒修改這個,可能會在調用的地方報錯,case R.id.XXX之類
7、我導入zxing這個項目時,有個類(HistoryItemAdapter)報構造函數錯誤,也給改了下,可以注意下,修改後代碼如下:
public HistoryItemAdapter(Context activity, int resource, List<HistoryItem> objects) {
super(activity, R.layout.history_list_item, new ArrayList<HistoryItem>());
this.activity = activity;
}
調用的地方也需要對應修改下:
adapter = new HistoryItemAdapter(this,0,null);
自此,配置上基本時修改完成了,可以調用了,但是這個源庫中,界面有一些不必要的,以及業務可以屏蔽去除,目前android源程序是打開後就是掃描界面,掃描後顯示結果在同一個activity上,結果view是默認隱藏的,
我現在的需求是app內調用CaptureActivity掃描,返回掃描條形碼結果給app內的activity,所以我將源程序中的界面,回調進行了一些更改屏蔽,更改後的調用如下:
public void toScan(View view){
//打開掃描界面掃描條形碼或二維碼
Intent intent = new Intent(this, CaptureActivity.class);
startActivityForResult(intent, 9);
}
結果處理:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 9) {
if (data != null) {
String string=data.getStringExtra(Intents.Scan.RESULT);//條形碼
Log.e("返回掃描結果",string);
}
}
}
修改後的源程序已經上傳到csdn,審覈中,有需要的可以下載看看,少花一些時間,然後再根據自己需求做更改。