• Android快速实现二维码扫描--Zbar


       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

  • 相关阅读:
    java入门-使用idea创建web项目
    java入门-gitlab
    linux基础:source和sh的区别
    github基本使用
    docker-compose
    k8s学习笔记之六:flannel网络配置
    计算机网络
    python自学之路--python面试题
    ASP.NET前后端分离框架(转载)
    ASP.NET Core初步使用Quartz.NET(转载)
  • 原文地址:https://www.cnblogs.com/xch-yang/p/9540392.html
Copyright © 2020-2023  润新知