zoukankan      html  css  js  c++  java
  • 二维码的生成和扫描

    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));
        }

     

  • 相关阅读:
    .Spring事务管理
    什么叫事务;什么叫业务逻辑;什么叫持久化
    Hibernate基本应用01
    Maven整理
    责任链模式和观察者模式
    SpringBoot基础入门
    反射总结
    多线程
    IO流
    File类总结
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5466561.html
Copyright © 2011-2022 走看看