9

我用com.google.android.gms.vision.barcode.BarcodeDetector它来读取二维码。问题是这些代码携带原始二进制数据;没有电话号码,没有 URL,没有地理点……我无法更改这些 QR 码,因为它们是在不同的应用程序中生成的。

当我使用 Android Barcode API 扫描这些二维码时,生成的Barcode对象不允许我访问原始数据,尽管它必须知道!

我得到的只是"Unknown encoding"消息rawValuedisplayValue属性。

拥有一个byte[]属性而不是两个String属性会更有意义,因为 QR 码可以携带一般数据。

我看不到向开发人员隐藏原始数据字节数组的意义。我可以以某种方式扩展BarcodeDetector课程或Barcode课程以获得我需要的东西吗?

编辑:

这是一个绝对有效的二维码,虽然它携带 1024 字节的数据,但 Vision API 无法读取:

在此处输入图像描述


QR 码 - 原始二进制数据是相关的,但它不能解决我的问题。

4

2 回答 2

1

我一直在通过这个库模块阅读带有二进制内容的二维码。旧的 ZXing 没有提供开箱即用的二进制有效负载,但是新的确实提供了二进制有效负载 - 但据我所知,只是作为已知格式的一部分。

于 2017-01-19T16:06:59.700 回答
1

我认为您需要自己编写一些实现。正如我在 API 中清楚地看到的那样,rawData 由 String 保存,这根本不能确保二进制数据类型的完整性。

我将使用我自己的 BarCode 对象编写我自己的 BarcodeDetector,其中 byte[] 作为来自 QR-Code 的 rawData 的数据类型,并覆盖 detect() 方法以将 rawData 分配给我的 BarCode 实现。由于您的情况非常具体,因此您应该毫不犹豫地编写自己的实现。也可以在 github 上分享给其他人。

于 2017-01-19T15:29:59.553 回答