Android生成與解析二維碼

jopen 11年前發布 | 33K 次閱讀 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();
    }
}</pre></strong><strong>根據二維碼圖片讀取內容:<pre class="brush:java; toolbar: true; auto-links: false;">// 解析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();
    }
}</pre></strong>來自:http://www.cnblogs.com/lee0oo0/archive/2012/12/20/2826070.html
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!