我在使用 ML Kit Barcode Scanner 时遇到问题。当我尝试解码示例二维码时,
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: ""
如何解决这个问题?
最佳答案
根据API Reference , getUrl()
是:
set iff getValueType() is 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
}
}
您可能会在前两行之一中找到所需的输出。第三行告诉您扫描的条码是什么类型。
关于android - ML Kit Barcode Scanner 给出空输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284036/