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

     

  • 相关阅读:
    洛谷 1850 NOIP2016提高组 换教室
    2018牛客多校第三场 C.Shuffle Cards
    2018牛客多校第一场 B.Symmetric Matrix
    2018牛客多校第一场 A.Monotonic Matrix
    2018牛客多校第一场 D.Two Graphs
    2018宁夏邀请赛L Continuous Intervals
    2018宁夏邀请赛K Vertex Covers
    BZOJ
    HDU
    ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5466561.html
Copyright © 2011-2022 走看看