Android生成与解析二维码

jopen 11年前

直接上代码,代码上面有具体的解析,并且提供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();          }      }
来自:http://www.cnblogs.com/lee0oo0/archive/2012/12/20/2826070.html