与zxing整合的扫码示例


先看一下效果图

barcode-scanner-scan

点击scan按钮,弹出摄像头界面,最后返回并得到扫码结果。

这里的技术要点是zxing的整合。所谓zxing的整合即通过intent启动zxing,即图标是条形码扫描名字是barcode scanner的那个应用(我这个示例应用标题也是barcode scanner,但是包名和zxing的那个的不同),最后得到扫描结果。
通过intentqidongzxing扫描的好处是不用设置专门的权限,其次实现起来也很简单。实际案例有google authenticator等。

整合的步骤如下:

  1. 这里下载zxing的android-integration
  2. 把两个代码文件IntentIntegrator和IntentResult放入你的工程
  3. 查看IntentIntegrator了解如何使用

因为zxing的github库首页Readme上没专门写如何使用IntentIntegrator,所以我就只能自己看IntentIntegrator的类注释。如果后期这个整合类有修改的话,看类注释也是最准的。

具体讲一下我是如何使用的。启动扫描的代码如何,其中第一句可以在类初始化的时候做,实际调用第二句即可。

IntentIntegrator zxingIntegrator = new IntentIntegrator(this);
zxingIntegrator.initiateScan();

接收结果:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  IntentResult scanResult =
    IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
  if (scanResult != null && scanResult.getContents() != null) {
    mTvContent.setText(scanResult.toString());
  }
}

mTvContent是上面文本框的ID。

注意如果你的手机上没有装barcode scanner这个应用的话,IntentIntegrator会提示你下载barcode scanner,按照提示下载就行。

另外提一下用整合方式生成二维码的方法,实际代码很简单:

zxingIntegrator.shareText(text);

text为你的文本。比如输入xnnyygn,运行结果如下:

barcode-scanner-generate

最后小结一下,用zxing方式处理条形码/二维码之类的还是挺简单的,不过用户需要安装barcode scanner。