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

 先上效果图 

    

源码已上传至Github:https://github.com/yangxch/ScanZbar 

集成

1.引入jar包和so文件

 

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

sourceSets {    main {        jniLibs.srcDirs = ['libs']    }}

 

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" />
<activity android:name=".zbar.CaptureActivity" />

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

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

/** * 跳转到扫码界面扫码 */private void goScan(){    Intent intent = new Intent(MainActivity.this, CaptureActivity.class);    startActivityForResult(intent, REQUEST_CODE_SCAN);}

在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;    }}

 

动态权限申请

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

分析

zbar包下主要类作用如下

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

 

 


 更多技术干货,欢迎关注我的公众号:ChaoYoung

 

更多相关文章

  1. Weex之Android端的浅析(一)
  2. android通过xml实现圆形头像
  3. 深入探索 Android(安卓)包体积优化(匠心制作二)
  4. Android图灵聊天机器人-薇尔莉特
  5. android 适配
  6. 为 Android(安卓)添加 Java 层服务(二)
  7. [置顶] android studio在svn中ignore的文件及文件夹
  8. 【Android】学习笔记(1)――基本控件一
  9. android 监听电话去电接通瞬间[非来电]

随机推荐

  1. Android启动过程深入解析
  2. Android中gravity与layout_gravity的区别
  3. 《Android开发从零开始》――13.Table La
  4. Android(安卓)界面编程
  5. Android(安卓)设置颜色的方法总结
  6. 2018年60个实用Android框架排行榜
  7. Android(安卓)RelativeLayout布局详解
  8. Android中Dialog样式的设置
  9. Android触摸事件分发机制
  10. Android上的Notification