2

我正在尝试在我的一个应用程序中使用 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);**

我将上面的两行添加到我的代码中。有人可以让我知道实现这一目标的正确方法是什么。

提前致谢

4

1 回答 1

2

解决方案

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 支持,但可能会产生其他后果(例如产品搜索功能)

于 2013-06-26T18:22:59.413 回答