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,审核中,有需要的可以下载看看,少花一些时间,然后再根据自己需求做更改。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值