当前位置:   article > 正文

Android快速实现二维码扫描--Zbar_zbar 有安卓版本?

zbar 有安卓版本?

转载自:[https://blog.csdn.net/xch_yang/article/details/81508379(https://blog.csdn.net/xch_yang/article/details/81508379)

   Android中二维码扫描的最常用库是zxing和zbar,上一篇《Android快速实现二维码扫描–Zxing》介绍了Zxing。这次说Zbar,Zbar速度极快,我就比较常用,项目地址:https://github.com/ZBar/ZBar
   同样你会发现官方库的东西太多,我们不是全部需要,照着官方demo改太耗时,所以分享一下我常用的集成方式。



 先上效果图
  


集成
1.引入jar包和so文件

  
  如果jar文件和so文件放在libs下,需在app build.gradle的android标签中加入如下代码并Sync Now

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

2.将zbar包copy到项目

  
  这里包名不一样肯定会报错,clean project并改掉包名就好。

3.导入相关资源文件

  drawable、drawable-hdpi、drawable-xhdpi和layout
  
  raw文件和values文件
  
 注:values中相关资源不要直接替换,否则会覆盖之前的,需要打开文件将内容加到自己项目对应文件中。

4.AndroidManifest.xml加入相关权限和扫描的Activity
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
  • 1
  • 2
  • 3
<activity android:name=".zbar.CaptureActivity" />
  • 1

5.调用扫描界面 获取扫描结果

在需要打开扫描界面的地方直接跳转至CaptureActivity(使用startActivityForResult)

/**
 * 跳转到扫码界面扫码
 */
private void goScan(){
    Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
    startActivityForResult(intent, REQUEST_CODE_SCAN);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在onActivityResult的回调中即可获取扫描内容,如下

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case REQUEST_CODE_SCAN:
            // 扫描二维码回传
            if (resultCode == RESULT_OK) {
               if (data != null) {
                    //获取扫描结果
                    Bundle bundle = data.getExtras();
                    String result = bundle.getString(CaptureActivity.EXTRA_STRING);
                }
            }
            break;
        default:
            break;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

动态权限申请

由于扫描需要调用相机,同样需要进行权限的动态申请,源码中我已加入,具体做法和上一篇一样。

分析

zbar包下主要类作用如下

CaptureActivity:为扫码界面的Activity;
AutoFocusManager:相机自动聚焦管理类 ;
CameraConfigurationManager:相机配置参数信息的操作类 ;
CameraManager:为自定义相机操作的封装,管理相机的打开,取景,参数,回收处理;
PreviewCallback:图像数据回调处理;
DecodeThread:解码子线程;
BeepManager:扫码操作声音处理;


源码地址:https://download.csdn.net/download/xch_yang/85600469


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/949554
推荐阅读
相关标签
  

闽ICP备14008679号