在不更改任何ZXing源代码的情况下,有没有办法在Android上使用ZXing在条形码中输出控制代码?
编辑:我不想编辑源代码的原因是我想使用"通过意图扫描"过程。 如果我必须编辑源代码,那么我将不得不将整个项目嵌入到我的项目中。
例如,我有一个 GS1-128 条形码,当前输出文本21417341123
。 相反,我希望看到类似[Start C][FNC1]21417341123[Stop]
.
如果我能从扫描中获取原始数据,那也没关系。 但是"rawBytes"值仅适用于数据(21417341123部分),不包括控制代码。 我看到了问题ZXing Result.getRawBytes(),它到底是什么?,但是使用getByteArrayExtra("SCAN_RESULT_BYTE_SEGMENTS_0");
的解决方案返回null
。
如果不更改代码就无法做到这一点,那么我将需要修改 ZXing 源代码。 我只是想看看我是否可以在不修改源代码的情况下做我想做的事。
通常当人们问这个问题时,他们谈论的是 FNC 代码,格式类似于代码 128。这些在结果中没有可打印的表示形式,尽管根据规范,FNC1 被翻译为"]C1"或 ASCII 29。其他的实际上与输出中的任何内容都不对应,因此不会产生任何字符。
看起来您正在询问"START C"代码。这实际上也不是条形码编码的字符串的一部分。它是一个内部标记,告诉它切换集以解析条形码的其余部分。
原始字节对于其他格式更有意义,在这些格式中,显然有一个底层字节表示,然后进一步转换。对于代码 128,它将为您提供条形码中找到的所有(非控制)代码,而不是解释的字符串。这不是你想要的。
为了您的目的,您必须修改代码。我认为这只对某些人为用例有意义.
结果中返回的原始字节是代码字索引。代码字的含义取决于处于活动状态的代码集。
http://en.wikipedia.org/wiki/Code_128
但是由于缺少启动代码,缓冲区实际上是无用的。我已经修改了它以包含起始字符以满足我的目的。