软件编程
位置:首页>> 软件编程>> Android编程>> Android编程实现二维码的生成与解析

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

作者:lee0oo0  发布时间:2021-12-08 23:13:15 

标签:Android,二维码

本文实例讲述了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程序设计有所帮助。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com