Android 之 二维码扫描 以及 二维码生成

前言:现在大部分人开发二维码扫描都是使用Zxing来集成开发,但是总是感觉有点小麻烦,刚刚好最近在开发一个类似的功能,也找到一个比较方便的库,只需直接添加依赖就可以。

 

源码:

github链接   https://github.com/yuzhiqiang1993/zxing

demo链接    https://github.com/ljtlcj/Zxing

效果图:

这里我只介绍直接依赖的使用方法。 
 

1.添加依赖

在根build.gradle中添加maven { url 'https://jitpack.io' }

allprojects {
    repositories {
        maven { url "https://maven.google.com" }
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}

在你的app的build.gradle中添加依赖implementation 'com.github.yuzhiqiang1993:zxing:2.1.6'

2.依赖添加完之后就可以使用了 
首先记得申请权限,本来我是把权限给集成到库里的,但是这样的话会导致首次跳转到扫描页面申请权限时会阻塞,直到给权限为止,想了想还是把权限放开,在跳转扫描界面之前自己去处理权限比较好。

下面是需要动态申请的权限

Manifest.permission.CAMERA
Manifest.permission.READ_EXTERNAL_STORAGE

跳转到扫描界面

如下面代码所示,直接使用intent即可,也可以传一个ZxingConfig类,这个类可以控制是否显示底部的布局,是否播放提示音等,也可不传。

 Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
         /*ZxingConfig是配置类  可以设置是否显示底部布局,闪光灯,相册,是否播放提示音  震动等动能
         * 也可以不传这个参数
         * 不传的话  默认都为默认不震动  其他都为true
         * */

        //ZxingConfig config = new ZxingConfig();
        //config.setShowbottomLayout(true);//底部布局(包括闪光灯和相册)
        //config.setPlayBeep(true);//是否播放提示音
        //config.setShake(true);//是否震动
       //config.setShowAlbum(true);//是否显示相册
        //config.setShowFlashLight(true);//是否显示闪光灯
        //intent.putExtra(Constant.INTENT_ZXING_CONFIG, config);
        startActivityForResult(intent, REQUEST_CODE_SCAN);

在onActivityResult中接收解析的结果

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // 扫描二维码/条码回传
        if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) {
            if (data != null) {

                String content = data.getStringExtra(Constant.CODED_CONTENT);
                result.setText("扫描结果为:" + content);
            }
        }
    }

好了,实现一个基本的扫一扫就是如此的简单

生成二维码

如果你有生成二维码的需求,可以直接通过CodeCreator.createQRCode(contentEtString, 400, 400, null);即可。

                try {
                    /*
                    * contentEtString:字符串内容
                    * w:图片的宽
                    * h:图片的高
                    * logo:不需要logo的话直接传null
                    * */

                    Bitmap logo = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
                    bitmap = CodeCreator.createQRCode(contentEtString, 400, 400, logo);
                } catch (WriterException e) {
                    e.printStackTrace();
                }

如果想继续修改扫描的样式你可以选择把项目当做moudle导入的你的项目中直接修改里面的源码即可 谢谢

猜你喜欢

转载自blog.csdn.net/weixin_39460667/article/details/82108610