android - ML Kit Barcode Scanner 给出空输出

标签 android firebase firebase-mlkit

我在使用 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/

相关文章:

javascript - 我无法将我的 Vuejs 应用连接到 Firebase

android - Google MLKit 能识别同一张脸吗?

android - 如何在Android中完成OCR身份证?

android - 用于点对点内容分发网络的 Git

android - 如何在 map 初始化之前询问是否启用了位置?

java - Android Id 及其可靠性

android - 从 FirebaseJobDispatcher 迁移到 AndroidX Workmanager 时 : How do I return a ListenableFuture in startWork?

angularjs - 允许 undefined variable 作为 null 传递到 Firebase

firebase - Cordova 插件 firebase 在 ionis 3 中突然出错

ios - 如何使用Firebase-CloudVision(ML)获取图像的具体信息