如何在Android上使用zxing对字符串进行QR码编码?

5
我正在尝试在Android上使用Zxing生成QR码。由于Android中不包括java.awt.image.BufferedImage,因此我不确定如何在Android上创建QR码图像。
编辑: 我不希望我的应用程序需要互联网访问。
3个回答

8

我发现这篇文章对于使用ZXing生成二维码非常有帮助:http://codeisland.org/2013/generating-qr-codes-with-zxing/

通过上述资源,我创建了以下实用方法:

public static Bitmap encodeToQrCode(String text, int width, int height){
    QRCodeWriter writer = new QRCodeWriter();
    BitMatrix matrix = null;
    try {
        matrix = writer.encode(text, BarcodeFormat.QR_CODE, 100, 100);
    } catch (WriterException ex) {
        ex.printStackTrace();
    }
    Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    for (int x = 0; x < width; x++){
        for (int y = 0; y < height; y++){
            bmp.setPixel(x, y, matrix.get(x,y) ? Color.BLACK : Color.WHITE);
        }
    }
    return bmp;
}

@Steve Paul,它会创建所提供的用户字符串(例如123+ghnn-ggg)的位图吗? - Erum
嗨,Erum,是的,我已经在我的应用程序中使用过它。它应该可以工作。 - Stephen Paul

4
请查看android/下的zxing源代码。在.encode包中,您将看到一个关于如何在Android中编码QR码的示例。是的,您不能使用BufferedImage,也不需要使用它。

谢谢,现在我已经成功编码了QR码并将其发送到Android应用程序。然后它作为一个位图对象接收。现在我该如何解码它? - user477519
1
你可以查看.qrcode包的DetectorDecoder。但如果你只是为了将信息编码并发送到另一个活动中进行解码,为什么不直接发送原始数据呢? - Sean Owen
@SeanOwen 这对于任何文本都有效,但如果我想编码URL,那么我是否需要使用相同的intent.putExtra(Intents.Encode.TYPE,Contents.Type.TEXT); 因为没有URL类型。 - Erum
1
一个简短的例子会更有帮助,我个人认为。 - guerda

0

最简单的方法是使用Google Charts API。它是一个简单的REST API,可以为您提供PNG文件。如果您不希望您的应用程序需要互联网,那么您需要更多的工作,但这是可以完成的。com.google.zxing.qrcode.encoder是将为您生成QR的类。我从未确切地弄清楚如何使用它们,但我认为它会返回表示QR的矩阵,您需要找出如何将其绘制到画布或其他东西上。


谢谢Tim。但是我不希望我的应用程序需要互联网访问。所以你能否给我推荐一些有用的URL? - user477519

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接