2017-06-15 29 views
0

我正嘗試在zxing的幫助下創建一個阿茲特克編碼,其載荷如下。但是,將這些數據送入阿茲臺克發生器後,掃描條形碼後我無法讀取此有效負載。鏈接到zxing的reader解碼完全不同的條形碼有效載荷。無法正確編碼阿茲特克編碼

有其他人看過這個問題嗎?或者我不正確地生成阿茲臺克人代碼?

感謝您的幫助

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; 
} 

回答

0

的解決方案是簡單的,而不是獲取默認的UTF-8字符集,我不得不使用ISO-8859-1,ISO拉丁字母1號,又名ISO-LATIN-1