Android 之 二维码生成(ZXing)

1.在buid.gradle(Module:app)中添加引用库

dependencies {
    //引入ZXing库用于生成二维码(QRCode)
    implementation 'com.google.zxing:core:3.3.0
}

其实ZXing库的体积比较庞大,但是由于个人水平有限,只能引用库进行使用,ZXing库是Google的开源库,这个开源库还是比较出名

2.建立QRCodeUtil工具类

由于代码的体积并不庞大,我就不分块讲解,直接在代码中解说,不懂单例模式的可以去我的一篇叫《Android 之 串口通信》的博客里面看,哪里有比较详细的介绍

public class QRCodeUtil {
    //单例模式:懒汉模式
    private static QRCodeUtil INSTANCE = null;

    private QRCodeUtil(){

    }

    public static QRCodeUtil getInstance(){

        if (INSTANCE == null){

            INSTANCE = new QRCodeUtil();
        }

        return INSTANCE;
    }

    /**
    *String transactionString //要生成二维码的字符串
    *int QRCode_SIZE //二维码的大小[生成二维码是一个正方形的二维码,长宽同一]
    */
    public Bitmap encodeTransactionString(String transactionString,int QRCode_SIZE){

        boolean transactionString_Status = transactionString.isEmpty();

        if(!transactionString_Status){

            try {

                Hashtable<EncodeHintType,String> hints = new Hashtable<>();
                hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");
                BitMatrix bitMatrix = new QRCodeWriter().encode(transactionString, BarcodeFormat.QR_CODE,QRCode_SIZE,QRCode_SIZE,hints);
                int[] pixels = new int[QRCode_SIZE * QRCode_SIZE];

                for (int y=0;y<QRCode_SIZE;y++){
                    for (int x=0;x<QRCode_SIZE;x++){

                        if (bitMatrix.get(x,y)){
                            pixels[y*QRCode_SIZE+x] = 0xff000000;
                        }else {
                            pixels[y*QRCode_SIZE+x] = 0xffffffff;
                        }
                    }
                }

                Bitmap bitmap = Bitmap.createBitmap(QRCode_SIZE,QRCode_SIZE, Bitmap.Config.ARGB_8888);
                bitmap.setPixels(pixels,0,QRCode_SIZE,0,0,QRCode_SIZE,QRCode_SIZE);
                return bitmap;

            }catch (WriterException e){

                e.printStackTrace();
                return null;
            }

        }else {

            return null;
        }

    }


}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值