Android Vision Api - 条码检测如何获取条码类型?

Posted

技术标签:

【中文标题】Android Vision Api - 条码检测如何获取条码类型?【英文标题】:Android Vision Api - Barcode detection how to get type of barcode? 【发布时间】:2018-01-26 07:21:51 【问题描述】:

我正在使用 android Google Vision API,并创建了一个标准条形码阅读器,但我想检测 读取的条形码类型/格式,即 CODE 39CODE 128QR Code....等 反正有返回类型吗?

谢谢

【问题讨论】:

【参考方案1】:

因为我没有找到任何内置函数来将格式整数值解码为文本值 我使用了以下自定义方法

private String decodeFormat(int format) 
    switch (format)
        case Barcode.CODE_128:
            return "CODE_128";
        case Barcode.CODE_39:
            return "CODE_39";
        case Barcode.CODE_93:
            return "CODE_93";
        case Barcode.CODABAR:
            return "CODABAR";
        case Barcode.DATA_MATRIX:
            return "DATA_MATRIX";
        case Barcode.EAN_13:
            return "EAN_13";
        case Barcode.EAN_8:
            return "EAN_8";
        case Barcode.ITF:
            return "ITF";
        case Barcode.QR_CODE:
            return "QR_CODE";
        case Barcode.UPC_A:
            return "UPC_A";
        case Barcode.UPC_E:
            return "UPC_E";
        case Barcode.PDF417:
            return "PDF417";
        case Barcode.AZTEC:
            return "AZTEC";
        default:
            return "";
    

【讨论】:

【参考方案2】:

在文档中找到它(之前错过了)。 https://developers.google.com/android/reference/com/google/android/gms/vision/barcode/Barcode

使用

格式

你可以得到条形码类型,它被重新调整为一个整数。

【讨论】:

【参考方案3】:

valueFormat返回类型,可以匹配API的静态变量。 示例:

    final SparseArray <Barcode> barcodes = detections.getDetectedItems ();
    if (barcodes.size ()! = 0) 
                    txtBarcodeValue.post (new Runnable () 
                        @Override
                        public void run () 
                            System.out.println ("barcodes");
                            System.out.println (barcodes.valueAt (0) .format); // 256
                            System.out.println (barcodes.valueAt (0) .valueFormat); // 1 or 2 or 3 ....
......
.

以及您可以在 Barcode.class 类中找到它们的代码

public static final int CONTACT_INFO = 1;
    public static final int EMAIL = 2;
    public static final int ISBN = 3;
    public static final int PHONE = 4;
    public static final int PRODUCT = 5;
    public static final int SMS = 6;
    public static final int TEXT = 7;
    public static final int URL = 8;
    public static final int WIFI = 9;
    public static final int GEO = 10;

【讨论】:

以上是关于Android Vision Api - 条码检测如何获取条码类型?的主要内容,如果未能解决你的问题,请参考以下文章

条码扫描不适用于视觉 API

android mobile vision api自定义检测器未检测到人脸

未找到 Android Google Play Service Vision 条码扫描器库

Mobile Vision API (TEXT) 未检测到单个数字?

Mobile Vision API 检测不到二维码

如何使用 google vision api 从图像中进行文本检测?