Android 应用集成 Zxing 扫描QRCode -- 调用外部库模式

集成二维码扫描功能的简易指南
  • 到 https://code.google.com/p/zxing/ 下载 com.google.zxing.integration.android.IntentIntegrator com.google.zxing.integration.android.IntentResult 两个类的源码放到自己工程中
  • 集成

    • 在 Activity 类的要调用扫描程序的地方添加以下代码

           
      1. IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
      2. integrator.initiateScan();
    • Activity 类实现 onActivityResult 方法

    • public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    • IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    • if (scanResult != null) {
    • String contents = scanResult.getContents();
    • // 对扫描内容处理
    • } else {
    • textView.setText("error");
    • }
    • }



    • 二维码的应用是越来越广呢。我们会收到在手机上扫描二维码的需求,那么,我们尝试使用一种方法实现。

       

      前置: 

      需要第三方APK。名称是 “条码扫描器” ,该APK在 google play 和豌豆荚市场都能够下载到。

      过程:

      1,开始扫描二维码

      IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);//指定当前的activity

      integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES); //启动扫描

      2,注册扫描完成后的处理(回调)

       public void onActivityResult(int requestCode, int resultCode, Intent intent) {

      IntentResult result = IntentIntegrator.parseActivityResult(requestCode,
      resultCode, intent);
      if (result != null) {
      String contents = result.getContents();
      if (contents != null) {
      showDialog(R.string.result_succeeded, result.toString());
      } else {
      showDialog(R.string.result_failed,
      getString(R.string.result_failed_why));
      }
      }
      }

      3,完成。。。

      那么我们需要上面提到的类 IntentIntegrator  ,从哪里来的? 我是从 google开源的项目zxing里代码里找到的。并提取了一些代码来使用。我会在本文的末尾提供代码下载,可以从代码里获得这个类。

       

      ---------------------- 

      扩展阅读

       

      恩。那么 IntentIntegrator  这个类里到底干了什么?

      通过阅读代码,我们知道它做了两件事:

      1.查找目标APK 里 “是否有扫描二维码的程序”。如果不存在,那么提示,并使得指示用户 去市场下载。

      2.如果存在,发送intent。发送了,那么会有 相应的Activity来处理它,在activty关闭后 封装对应的返回参数。

       

       建议大家去读读zxing的代码。

       http://code.google.com/p/zxing/








  • public void onActivityResult(int requestCode, int resultCode, Intent intent) {
  • IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
  • if (scanResult != null) {
  • String contents = scanResult.getContents();
  • // 对扫描内容处理
  • } else {
  • textView.setText("error");
  • }
  • }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值