我发布这篇文章来回答自己的问题(在此宣传一下,以防其他人也遇到了这个问题)。
我正在使用ZXing的Android库生成QR码。QR码可以正常生成,我也能够显示它(手动呈现出来使用
此外,每当我为
我使用以下代码生成QR码:
我正在使用ZXing的Android库生成QR码。QR码可以正常生成,我也能够显示它(手动呈现出来使用
QRCode.getMatrix().getArray()
)。然而,生成的QR码不能被市面上大部分的QR码读取器扫描,包括ZXing的扫描器本身!此外,每当我为
Encoder
设置错误校正级别时,它都会忽略它并使用某个随机级别进行编码(通常是级别Q)。我使用以下代码生成QR码:
QRCode code;然后,在获得
try { code = Encoder.encode("...QRCODEDATA...", ErrorCorrectionLevel.L); } catch(WriterException ex) { log("无法获取QR码"); return null; }
QRCode
对象之后,我像这样绘制位图:
byte[][] bitArray = qrCode.getMatrix().getArray();
if(bitArray == null || bitArray.length < 1)
return null;
for(int x = 0;x < bitArray.length;x++)
{
for(int y = 0;y < bitArray[x].length;y++)
{
if(bitArray[x][y] == 0)
bitmapDrawCell(x,y,WHITE);
else
bitmapDrawCell(x,y,BLACK);
}
}
这就是我最终得到的结果。
看起来没问题,但无法扫描。少数QR码扫描器仍然可以扫描它,但大多数不能。发生了什么事?