Android   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android zxing库生成的QR码不会扫描大多数QR码扫描仪大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我发布这个来回答我自己的问题(传播这个词以防其他人有这个问题.)

我正在使用ZXing的Android生成QR码. QR码生成正常,我能够显示它(使用QRCode.getMatrix().getArray()手动渲染后.)但是,生成的QR码不能扫描Android上的大多数QR码阅读器市场,包括ZXing的扫描仪本身!

此外,每当我将@L_874_6@修正级别设置为Encoder时,它会忽略它并编码一些随机级别(通常是级别Q).

我用这段代码生成QR码:


    QRCode code;

    try
    {
            code = Encoder.encode("...QRCODEDATA...", ErrorCorrectionLevel.L);
    }
    catch(WriterException eX)
    {
            log("Failed to obtain a QR code");
            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);
            }
        }

Here’s我最终得到了什么.

它看起来正确,但它不会扫描.少数QR码扫描仪仍会扫描它,但是
大多数人不会.这是怎么回事?

解决方法:

这个问题的答案:

QR码实际上是翻转的.然ZXing文档没有解释如何索引qrCode.getMatrix().getArray()返回的数组,但它假定你将它索引为[y] [x],然后在(x,y)处绘制该单元格).问题中发布的代码将数组索引为[x] [y],它沿Y = X线翻转图像.

由此产生的QR码似乎是合法的,但只有“智能”扫描仪才能检测到这种翻转并进行扫描.

纠错级别位也位于相反的角落,因此如果您要手动验证(查看图像右下角的几位),则表明库似乎忽略了纠错设置.

大佬总结

以上是大佬教程为你收集整理的Android zxing库生成的QR码不会扫描大多数QR码扫描仪全部内容,希望文章能够帮你解决Android zxing库生成的QR码不会扫描大多数QR码扫描仪所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: