使用ZXing输出条形码控制代码?

时间:2013-12-31 16:12:52

标签: android zxing

在不更改任何 ZXing源代码的情况下,有没有办法在Android上使用ZXing输出条形码中的控制代码?

编辑:我不想编辑源代码的原因是因为我想使用"scan via intent"进程。如果我必须编辑源代码,那么我将不得不将整个项目嵌入到我的项目中。

例如,我有一个GS1-128条形码,当前输出文本21417341123。我希望看到类似[Start C][FNC1]21417341123[Stop]的内容。

如果我可以从扫描中获取原始数据,那也没关系。但“rawBytes”值仅适用于数据(21417341123部分),不包括控制代码。我看到了问题ZXing Result.getRawBytes(), what exactly is it?,但使用getByteArrayExtra("SCAN_RESULT_BYTE_SEGMENTS_0");的解决方案会返回null

如果在不更改代码的情况下无法执行此操作,则需要修改ZXing源。我只是试图看看我是否可以在不修改源代码的情况下做我想做的事。

2 个答案:

答案 0 :(得分:4)

通常当人们提出这个问题时,他们会以Code 128这样的格式讨论FNC代码。虽然FNC1被翻译为“] C1”或ASCII 29,但结果中没有可打印的表示。规范。其他的实际上并不对应输出中的任何内容,因此不要产生任何字符。

看起来你问的是“START C”代码。这实际上也不是条形码编码的字符串的一部分。它是一个内部标记,告诉它切换用于解析条形码其余部分的集合。

原始字节对于其他格式更有意义,其中明显存在基础字节表示,然后进一步转换。对于Code 128,它将为您提供条形码中找到的所有(非控制)代码,而不是解释的字符串。这不是你想要的。

出于您的目的,您必须修改代码。我认为这只适用于某些人工用例。

答案 1 :(得分:0)

结果中返回的原始字节是代码字索引。代码字的含义或控制代码取决于哪些代码集处于活动状态。

http://en.wikipedia.org/wiki/Code_128

但是由于缺少启动代码,缓冲区几乎没用。我已将其修改为包含适合我目的的起始角色。