【问题标题】:ML Kit Barcode Scanner gives empty outputML Kit Barcode Scanner 提供空输出
【发布时间】:2018-05-11 02:14:11
【问题描述】:

我在使用 ML Kit Barcode Scanner 时遇到问题。当我尝试解码示例 QR 码时,

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.qr_code_sample);
        FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
        FirebaseVisionBarcodeDetector detector = FirebaseVision.getInstance().getVisionBarcodeDetector();
        Task<List<FirebaseVisionBarcode>> result = detector.detectInImage(image)
                .addOnSuccessListener(new OnSuccessListener<List<FirebaseVisionBarcode>>() {
                    @Override
                    public void onSuccess(List<FirebaseVisionBarcode> barcodes) {
                        for (FirebaseVisionBarcode barcode:barcodes) {
                            Log.e("Log", "QR Code: "+barcode.getUrl().getUrl());
                        }
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.e("Log", "Decode QR Code failed");
                    }
                });

输出是这样的:

QR Code: ""

如何解决这个问题?

【问题讨论】:

  • 我遇到了同样的问题。即使它是 url,从 displayValue 中获取它,当试图从 getUrl().getUrl() 中获取它时,我把它弄空了。你找到解决办法了吗?
  • 我也有同样的问题,对我来说,onsuccess 列表带有空的条形码列表

标签: android firebase firebase-mlkit


【解决方案1】:

根据API ReferencegetUrl() 是:

设置 iff getValueType()TYPE_URL

因此您的条形码可能不是 URL/书签,或者 ML Kit 无法识别它。

我建议打印这 3 个值:

@Override
    public void onSuccess(List<FirebaseVisionBarcode> barcodes) {
        for (FirebaseVisionBarcode barcode:barcodes) {
            Log.e("Log", "QR Code: "+barcode.getDisplayValue()); //Returns barcode value in a user-friendly format.
            Log.e("Log", "Raw Value: "+barcode.getRawValue());//Returns barcode value as it was encoded in the barcode. 
            Log.e("Log", "Code Type: "+barcode.getValueType()); //This will tell you the type of your barcode
        }
    }

您可能会在前 2 行之一中找到所需的输出。第三行告诉你扫描的条形码是什么类型。

【讨论】:

    【解决方案2】:

    要从条形码中提取标题和网址,您需要在条形码中添加 Url Bookmark,而不仅仅是 Url。

    包含 url 书签的条形码的原始数据如下所示:MEBKM:TITLE:MyBookmark;URL:www.google.com;;

    当您使用 ML KIT 扫描仅包含 url 的条形码时,您会得到如下原始数据:www.google.com

    因此,为了能够从 FirebaseVisionBarcode.UrlBookmark 类型的对象中提取标题和 url 数据,您需要在该对象中包含这些数据。

    尝试在此处生成二维码:https://www.montreallisting.ca/article/qr-code-quick-response-scan-mobile-android-iphone-blackberry/ 然后使用该图片提取您想要的数据,您将看到不同之处。

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 2018-10-24
      • 2023-03-30
      • 2021-01-23
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多