2

我使用 ZXing 库进行条码扫描。

我在我的项目中使用 2 类 ZXing,IntentIntegrator.java 和 IntentResult.java。

我可以很容易地从条形码图像中获取代码,并从下面的代码中获取条形码图像的格式,

public void onClick(View view)
{
    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.initiateScan();
}

public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{
      IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
      if (scanResult != null) 
      {

          String barcode;
          String format;

          barcode=scanResult.getContents();
          format=scanResult.getFormatName();

      }
}

现在,我的问题是如何获取条形码的类型,如文本、URL、地址簿、电话号码、电子邮件地址。

我需要你们的帮助,请帮助!

提前致谢。

4

2 回答 2

3

这不是条形码本身的属性,而是您选择解析内容的方式。该IntentResult对象没有此信息,因为它将解析留给您。

您也可以包含该core.jar库,然后使用ResultParser内容上的类来解析它,就像应用程序一样。然后你会得到一个漂亮整洁的对象,代表解析的类型和内容。

于 2013-09-23T12:04:50.533 回答
0

正如肖恩所说,您无法访问它。

但是您可以使用一种简单的方法来检索该条形码格式。

格式未声明为最终格式(尽管它们是常量)。所以你可能不会使用开关。但是用一个简单的 elseif :(导入后)

public static BarcodeFormat getBarCodeFormatWith(final String s) {

    if (s.equals(EAN_8.toString())){
        return EAN_8;
    } else if (s.equals(EAN_13.toString())) {
        return EAN_13;
    } else if (s.equals(UPC_A.toString())) {
        return UPC_A;
    } else if (s.equals(QR_CODE.toString())) {
        return QR_CODE;
    } else if (s.equals(CODE_39.toString())) {
        return CODE_39;
    } else if (s.equals(CODE_128.toString())) {
        return CODE_128;
    } else if (s.equals(ITF.toString())) {
        return ITF;
    } else if (s.equals(PDF_417.toString())) {
        return PDF_417;
    } else if (s.equals(CODABAR.toString())) {
        return CODABAR;
    } else if (s.equals(DATA_MATRIX.toString())) {
        return DATA_MATRIX;
    } else if (s.equals(AZTEC.toString())) {
        return AZTEC;
    } else if (s.equals(PDF_417.toString())) {
        return PDF_417;
    }  else if (s.equals(CODE_93.toString())) {
        return CODE_93;
    }  else if (s.equals(MAXICODE.toString())) {
        return MAXICODE;
    }  else if (s.equals(UPC_E.toString())) {
        return UPC_E;
    }  else if (s.equals(UPC_EAN_EXTENSION.toString())) {
        return UPC_EAN_EXTENSION;
    }  else if (s.equals(RSS_14.toString())) {
        return RSS_14;
    }  else {
        return null;
    }
}

完成,享受 :) 在 Zxing v3.4.0 上工作

于 2020-04-22T22:23:28.140 回答