二维码的生成和扫描

1.二维码的生成

private ImageView iv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    iv = ((ImageView) findViewById(R.id.iv));
}

public void btnClick(View view) {
    //1.数据源
    //2.生成的Bitmap的宽度
    //3.生成的Bitmap的高度
    Bitmap bitmap = getQRCodeBitmap("祝大家找到一个好工作!", 400, 400);
    iv.setImageBitmap(bitmap);
}

private Bitmap getQRCodeBitmap(String content, int width, int height) {
    QRCodeWriter writer = new QRCodeWriter();
    Map<EncodeHintType, String> hint = new HashMap<>();
    //文本的编码格式为UTF-8
    hint.put(EncodeHintType.CHARACTER_SET, "utf-8");
    //将文本信息转换为二维码
    //1.数据源
    //2.转换为二维码
    //3.4.生成的二维数据的宽高
    //5.文本的编码格式
    try {
        //encode的返回结果是一个二维数组,该数组中保存着转换后的数据信息
        BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, hint);
        int[] pixles = new int[width * height];
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++) {
                //该点如果有数据则返回true,否则返回false
                if (bitMatrix.get(j, i)) {
                    //如果该点有数据,则该点为黑色
                    pixles[i * width + j] = 0x00000000;
                } else {
                    pixles[i * width + j] = 0xffffffff;
                }
            }
        }
        //1.Bitmap中所有的像素点信息
        //2.偏移量
        //3.生成的Bitmap每行有多少个像素点
        //4.5.生成的Bitmap的宽高
        //6.色彩模式
        return Bitmap.createBitmap(pixles, 0, width, width, height, Bitmap.Config.RGB_565);
    } catch (WriterException e) {
        e.printStackTrace();
    }
    return null;
}

2.二维码的扫描

步骤:

第一步:下载并解压zxing-master.zip

第二步:将下面两个文件夹中的com文件夹添加到工程的java下

第三步:接下来都是android文件夹下,如下文件没有的直接拷贝,已有的进行合并

第四步:将错误的包名修改正确

第五步:MainActivity中代码

 public void go(View view) {
        startActivity(new Intent(this, CaptureActivity.class));
    }

 

原文地址:https://www.cnblogs.com/anni-qianqian/p/5466561.html