先看一下效果图
点击scan按钮,弹出摄像头界面,最后返回并得到扫码结果。
这里的技术要点是zxing的整合。所谓zxing的整合即通过intent启动zxing,即图标是条形码扫描名字是barcode scanner的那个应用(我这个示例应用标题也是barcode scanner,但是包名和zxing的那个的不同),最后得到扫描结果。
通过intentqidongzxing扫描的好处是不用设置专门的权限,其次实现起来也很简单。实际案例有google authenticator等。
整合的步骤如下:
- 到这里下载zxing的android-integration
- 把两个代码文件IntentIntegrator和IntentResult放入你的工程
- 查看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,运行结果如下:
最后小结一下,用zxing方式处理条形码/二维码之类的还是挺简单的,不过用户需要安装barcode scanner。