[英]ML Kit Barcode Scanner gives empty output
我在使用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: ""
如何解决这个问题呢?
设置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
}
}
您可能会在前两行中找到所需的输出。 第三行告诉您扫描的条形码的类型。
要从条形码中提取标题和网址,您需要在条形码中包含Url Bookmark,而不仅仅是Url。
包含url书签的条形码原始数据如下所示:MEBKM:TITLE:MyBookmark; URL:www.google.com ;;
当您使用ML KIT扫描仅包含URL的条形码时,您将获得如下的原始数据:www.google.com
因此,为了能够从FirebaseVisionBarcode.UrlBookmark类型的对象中提取标题和url数据,您需要在该对象中包含这些数据。
尝试在此处生成QR码: https : //www.montreallisting.ca/article/qr-code-quick-response-scan-mobile-android-iphone-blackberry/然后使用该图片提取您想要的数据,您将看得有点不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.