Android 集成 zxing

項目需要用到掃描條形碼,所以找了下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,審覈中,有需要的可以下載看看,少花一些時間,然後再根據自己需求做更改。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章