Zxing ITF条码不在自定义应用中扫描

时间:2013-06-18 23:15:29

标签: android zxing barcode-scanner

我正在尝试在我的应用程序中使用zxing条形码来扫描条形码。我曾经意图在按钮上启动条形码扫描仪。

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
startActivityForResult(intent, 0);

我发现大多数条形码可以扫描正常,但是当我尝试在我的应用程序中扫描ITF(Interleaved 2 of 5)条形码时它不起作用,但如果我只是使用zxing条形码扫描仪,它工作正常。

现在我已经搜索了一段时间,并且读过我可以使用ALLOWED_LENGTH。我找不到有关如何将此信息传递给扫描仪的大量信息。我试过以下但是它并没有真正有任何区别。

**int[] item = new int []{6, 7, 8, 9, 10, 11, 12, 13};**
**intent.putExtra("ALLOWED_LENGTHS", item);**

我在上面的代码中加了两行。有人可以告诉我,请问这是什么正确的方法。

提前致谢

1 个答案:

答案 0 :(得分:1)

<强>解决方案

intent.putExtra("SCAN_MODE", Intents.Scan.ONE_D_MODE);

注意:您应该使用提供的意图,而不是硬编码extras字符串

<强>解释

这与允许的长度无关。 ITF不是PRODUCT_MODE格式之一

PRODUCT_FORMATS = EnumSet.of(BarcodeFormat.UPC_A,
                             BarcodeFormat.UPC_E,
                             BarcodeFormat.EAN_13,
                             BarcodeFormat.EAN_8,
                             BarcodeFormat.RSS_14,
                             BarcodeFormat.RSS_EXPANDED);

它包含在1D格式列表中

ONE_D_FORMATS = EnumSet.of(BarcodeFormat.CODE_39,
                           BarcodeFormat.CODE_93,
                           BarcodeFormat.CODE_128,
                           BarcodeFormat.ITF,
                           BarcodeFormat.CODABAR);
ONE_D_FORMATS.addAll(PRODUCT_FORMATS);

更改您的额外意图将启用ITF支持,但可能会产生其他后果(例如产品搜索功能)