欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程实现二维码的生成与解析

程序员文章站 2023-12-11 14:57:22
本文实例讲述了android编程实现二维码的生成与解析。分享给大家供大家参考,具体如下: 直接上代码,代码上面有具体的解析,并且提供jar供下载:二维码jar包.rar...

本文实例讲述了android编程实现二维码的生成与解析。分享给大家供大家参考,具体如下:

直接上代码,代码上面有具体的解析,并且提供jar供下载:二维码jar包.rar

根据文本生成对应的二维码:

// 生成qr图
private void createimage() {
  try {
   // 需要引入core包
   qrcodewriter writer = new qrcodewriter();
   string text = qr_text.gettext().tostring();
   log.i(tag, "生成的文本:" + text);
   if (text == null || "".equals(text) || text.length() < 1) {
    return;
   }
   // 把输入的文本转为二维码
   bitmatrix martix = writer.encode(text, barcodeformat.qr_code,
     qr_width, qr_height);
   system.out.println("w:" + martix.getwidth() + "h:"
     + martix.getheight());
   hashtable<encodehinttype, string> hints = new hashtable<encodehinttype, string>();
   hints.put(encodehinttype.character_set, "utf-8");
   bitmatrix bitmatrix = new qrcodewriter().encode(text,
     barcodeformat.qr_code, qr_width, qr_height, hints);
   int[] pixels = new int[qr_width * qr_height];
   for (int y = 0; y < qr_height; y++) {
    for (int x = 0; x < qr_width; x++) {
     if (bitmatrix.get(x, y)) {
      pixels[y * qr_width + x] = 0xff000000;
     } else {
      pixels[y * qr_width + x] = 0xffffffff;
     }
    }
   }
   bitmap bitmap = bitmap.createbitmap(qr_width, qr_height,
     bitmap.config.argb_8888);
   bitmap.setpixels(pixels, 0, qr_width, 0, 0, qr_width, qr_height);
   qr_image.setimagebitmap(bitmap);
  } catch (writerexception e) {
   e.printstacktrace();
  }
}

根据二维码图片读取内容:

// 解析qr图片
private void scanningimage() {
  map<decodehinttype, string> hints = new hashmap<decodehinttype, string>();
  hints.put(decodehinttype.character_set, "utf-8");
  // 获得待解析的图片
  bitmap bitmap = ((bitmapdrawable) qr_image.getdrawable()).getbitmap();
  rgbluminancesource source = new rgbluminancesource(bitmap);
  binarybitmap bitmap1 = new binarybitmap(new hybridbinarizer(source));
  qrcodereader reader = new qrcodereader();
  result result;
  try {
   result = reader.decode(bitmap1, hints);
   // 得到解析后的文字
   qr_result.settext(result.gettext());
  } catch (notfoundexception e) {
   e.printstacktrace();
  } catch (checksumexception e) {
   e.printstacktrace();
  } catch (formatexception e) {
   e.printstacktrace();
  }
}

希望本文所述对大家android程序设计有所帮助。

上一篇:

下一篇: