Android Vision条形码API - 使用二进制数据读取自定义QR码

时间:2016-11-24 14:52:44

标签: java android barcode qr-code android-vision

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

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

我在"Unknown encoding"rawValue属性中收到displayValue条消息。

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

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

修改

这是一个绝对有效的QR码,Vision API无法读取,但它包含1024个字节的数据:

enter image description here

QR Codes - raw binary data是相关的,但它并没有解决我的问题。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我一直在通过this library module阅读包含二进制内容的QR码。旧的ZXing没有提供开箱即用的二进制有效载荷,但是新的确实提供了二进制有效载荷 - 但据我记忆,只是作为已知格式的一部分。