在android中使用zxing库生成qr代码时是否可以设置版本?

时间:2014-06-30 06:55:51

标签: android qr-code zxing

使用zxing库生成android的qr代码时,可以设置版本号,如版本4或任何其他版本。 任何指导或链接都是可观的。 谢谢。

2 个答案:

答案 0 :(得分:0)

没有。对此没有实际意义。版本不能低于编码数据所需的版本,将其设置得更高只会使更密集的QR码更难以阅读。

答案 1 :(得分:0)

是的,请检查EncodedHintType映射:

private Bitmap stringToQRCode(String text, int width, int height) {
    BitMatrix bitMatrix;
    try {
        HashMap<EncodeHintType, Object> map = new HashMap<>();
        map.put(EncodeHintType.CHARACTER_SET, "utf-8");
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); 
        map.put(EncodeHintType.QR_VERSION, 9);  // (1-40)
        map.put(EncodeHintType.MARGIN, 2); // pixels
        bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, map);

        int bitMatrixWidth = bitMatrix.getWidth();
        int bitMatrixHeight = bitMatrix.getHeight();
        int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];

        int colorWhite = 0xFFFFFFFF;
        int colorBlack = 0xFF000000;

        for (int y = 0; y < bitMatrixHeight; y++) {
            int offset = y * bitMatrixWidth;
            for (int x = 0; x < bitMatrixWidth; x++) {
                pixels[offset + x] = bitMatrix.get(x, y) ? colorBlack : colorWhite;
            }
        }

        Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);
        bitmap.setPixels(pixels, 0, width, 0, 0, bitMatrixWidth, bitMatrixHeight);
        return bitmap;
    } catch (Exception i) {
        i.printStackTrace();
        return null;
    }
}