Vision api在某些设备上没有检测到QR码

时间:2017-10-04 14:38:18

标签: android google-play-services qr-code vision-api

我正在使用Vision api来检测QR码。它适用于三星设备,但不适用于LG设备。这两款设备都在6.0.1版本上运行,并且没有任何错误。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这里有一些 Zxing-Library Vision API 的示例,希望它能为您提供帮助。

示例项目基于 Zxing-Library

Zxing Code Sample1

Zxing Code Sample2

虽然QR条码的 Vision API 尝试此

Vision API Code Sample1enter image description here

Vision API Code Sample2

Vision API Code Sample3

答案 1 :(得分:0)

我遇到了同样的问题,即Redmi和Infinix设备上未检测到QR,这是我的解决方案:

Zxing库版本

implementation 'com.google.zxing:core:3.4.0'

只需在此函数中传递您的位图,这将返回字符串值:

public static String getQRDataFromBitmap(Bitmap bitmap) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    int[] intArray = new int[bitmap.getWidth() * bitmap.getHeight()];
    bitmap.getPixels(intArray, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
    LuminanceSource source = new RGBLuminanceSource(bitmap.getWidth(), bitmap.getHeight(), intArray);
    Reader reader = new MultiFormatReader();
    try {
        Result result = reader.decode(new BinaryBitmap(new HybridBinarizer(source)));
        return result.getText();
    } catch (NotFoundException e) {
        e.printStackTrace();
        return null;
    } catch (ChecksumException e) {
        e.printStackTrace();
        return null;
    } catch (FormatException e) {
        e.printStackTrace();
        return null;
    }
}