无法正确编码aztec代码

时间:2017-06-15 14:07:03

标签: android barcode zxing aztec-barcode

我正试图在zxing的帮助下为android app创建一个带有以下有效负载的aztec代码。然而,在将其送入aztec发生器后,我无法在扫描条形码后读取此有效负载。与zxing链接的reader解码完全不同的条形码有效负载。

还有其他人看过这个问题吗?或者我是否错误地生成了Aztec代码?

感谢您的帮助

barcode_payload:

i¼\u0000\u0003\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000)X“}ôZv\u0002ô\u0000\u0000˜\u0012\u0012äNMGX†Ô\u0000\u0001Zv\u0002ô05\u0002\u0018T 64\u0011k\u0007m[\u000f瓉¿RÙƒ¨<úýá‹M\u0002\u0019\u0000 ɼÏØ\u0010Ë¢\u0003d·ã Í\u000bÚæ? Ÿ#+\u0017˜\u0000

代码:

public static Bitmap createAztec(String str, int mQrWidth, int mQrHeight, String timestampStr) { 
    String aztecStr; 
    if (!TextUtils.isEmpty(timestampStr)) { 
        aztecStr = str + "|" + timestampStr; 
    } else { 
        aztecStr = str; 
    } 
    AztecCode aztecCode = com.google.zxing.aztec.encoder.Encoder.encode(aztecStr.getBytes()); 
    BitMatrix matrix = aztecCode.getMatrix(); 
    if (matrix != null) { 
        int width = matrix.getWidth(); 
        int height = matrix.getHeight(); 
        int[] pixels = new int[width * height]; 
        for (int y = 0; y < height; y++) { 
            int offset = y * width; 
            for (int x = 0; x < width; x++) { 
                pixels[offset + x] = matrix.get(x, y) ? Color.BLACK : Color.WHITE; 
            } 
        } 
        Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height); 
        return Bitmap.createScaledBitmap(bitmap, mQrWidth, mQrHeight, false); 
    } 
    return null; 
}

1 个答案:

答案 0 :(得分:0)

解决方案很简单,我不得不使用默认的UTF-8字符集,而是使用ISO-8859-1,ISO拉丁字母1号,a.k.a. ISO-LATIN-1