我使用ZXing库进行条形码扫描。
我在项目中使用了两类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();
}
}
现在,我的问题是如何获取条形码的类型,如文本,网址,地址簿,电话号码,电子邮件地址。
我需要你的帮助,请帮忙!
先谢谢。
答案 0 :(得分:3)
这不是条形码本身的属性,而是您选择解析内容的方式。 IntentResult
对象没有此信息,因为它会向您解析。
您也可以包含core.jar
库,然后使用内容上的ResultParser
类来解析它,就像应用程序一样。然后你得到一个很好的整洁对象,表示解析的类型和内容。
答案 1 :(得分: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上工作