我正在尝试在我的应用程序之一中使用 zxing 条形码来扫描条形码。我已经使用 Intent 在单击按钮时启动条形码扫描仪。
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);**
我将上面的两行添加到我的代码中。有人可以告诉我实现此目标的正确方法是什么吗?
提前致谢
最佳答案
解决方案
intent.putExtra("SCAN_MODE", Intents.Scan.ONE_D_MODE);
注意:您可能应该使用提供的 Intent ,而不是硬编码附加字符串
说明
这与允许的长度无关。 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);
它包含在一维格式列表中
ONE_D_FORMATS = EnumSet.of(BarcodeFormat.CODE_39,
BarcodeFormat.CODE_93,
BarcodeFormat.CODE_128,
BarcodeFormat.ITF,
BarcodeFormat.CODABAR);
ONE_D_FORMATS.addAll(PRODUCT_FORMATS);
额外更改您的 Intent 将启用 ITF 支持,但可能会产生其他后果(例如产品搜索功能)
关于android - Zxing ITF 条形码无法在自定义应用程序中扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17180555/