我是靠谱客的博主 聪慧鸡,最近开发中收集的这篇文章主要介绍android使用zxing实现二维码扫描,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参考(作者源码比较完善):https://blog.csdn.net/ahuyangdong/article/details/76405557

参考(这个也是参考上面大佬的):https://blog.csdn.net/qq_34261214/article/details/80428722

结合上述两个博文,其中有一些问题需要自己去调试,不能全套拿来就用,要理解才行。

 

补充一下zxing二维码的整合步骤,结合上面参考的两个大佬的资料调整整合出来

本人android studio版本3.2.1

1、引入zxing依赖

implementation 'com.google.zxing:core:3.3.3' //引入zxing包

2、把涉及到二维码扫描的源码都挪到项目中

(1)java文件,并且把包依赖修改正确,R文件引用也改成自己项目的包名

(2)界面布局文件xml

其中activity_scanner.xml中的ViewfinderView要修改包名为当前项目的包名,不然没办法正确调用到ViewfinderView.java

(3)raw文件、mipmap文件、values文件、drawable文件等等也要拷贝,都有用到这些的

 

3、在调用二维码的界面中,添加调用二维码的触发事件,以及二维码扫描成功后的返回处理事件

/**
     * 扫描按钮单击事件
     * @param view
     */
    public void startQRCodeHandler(View view) {
        startQrCode();
    }

    /**
     * 启动二维码扫描
     */
    private void startQrCode() {
        // 摄像机申请权限
        if (ContextCompat.checkSelfPermission(HomeActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            // android 6.0以上需要动态申请权限
            ActivityCompat.requestPermissions(HomeActivity.this, new String[]{Manifest.permission.CAMERA}, Constants.REQ_PERM_CAMERA);
            return;
        }
        // 访问手机存储申请权限
        if (ContextCompat.checkSelfPermission(HomeActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            // android 6.0以上需要动态申请权限
            ActivityCompat.requestPermissions(HomeActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, Constants.REQ_PERM_CAMERA);
            return;
        }
        // 二维码扫码
        Intent intent = new Intent(HomeActivity.this, CaptureActivity.class);
        startActivityForResult(intent, Constants.REQ_QR_CODE);
    }

    /**
     * 重载扫描页activity返回函数(接受扫描码)
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //扫描结果回调
        if (resultCode == Activity.RESULT_OK){
            if(requestCode == Constants.REQ_QR_CODE || requestCode == Constants.REQUEST_CODE_SCAN_GALLERY){
                //扫描二维码或者扫描相册成功
                Bundle bundle = data.getExtras();
                String scanResult = bundle.getString(Constants.INTENT_EXTRA_KEY_QR_SCAN);
                Toast.makeText(HomeActivity.this,"扫描成功",Toast.LENGTH_SHORT).show();
                //将扫描出的信息显示出来
                //textView.setText(scanResult);
                showRemindDialog("温馨提示",scanResult);
            }
        } else {
            Toast.makeText(HomeActivity.this,"取消扫描",Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 重载请求权限结果函数
     * @param requestCode
     * @param permissions
     * @param grantResults
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case Constants.REQ_PERM_CAMERA:
                // 摄像头权限申请
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // 获得授权
                    startQrCode();
                } else {
                    // 被禁止授权
                    Toast.makeText(HomeActivity.this, "请至权限中心打开本应用的相机访问权限", Toast.LENGTH_LONG).show();
                }
                break;
        }
    }

因为高版本安卓摄像头,读取存储等权限需要动态申请,所以发起二维码扫描是,动态申请权限

 

4、manifests.xml文件中添加权限配置

    <uses-permission android:name="android.permission.INTERNET" /> <!-- 网络权限 -->
    <uses-permission android:name="android.permission.VIBRATE" /> <!-- 震动权限 -->
    <uses-permission android:name="android.permission.CAMERA" /> <!-- 摄像头权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 读取手机存储权限 -->
    <uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 自动聚焦权限 -->

 

大概就这样,我参考上面链接的两个大佬的源码自己做了,做了闪光灯和相册功能,调试代码后,使用一切正常

项目demo已上传csdn:https://download.csdn.net/download/fuck487/10847073

最后

以上就是聪慧鸡为你收集整理的android使用zxing实现二维码扫描的全部内容,希望文章能够帮你解决android使用zxing实现二维码扫描所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部