我使用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个字节的数据:
QR Codes - raw binary data是相关的,但它并没有解决我的问题。
答案 0 :(得分:1)
我认为您需要自己编写一些实现。我可以在API中清楚地看到rawData由String保存,但这并不能确保二进制数据类型的完整性。
我将使用自己的BarCode对象编写自己的BarcodeDetector,其中byte []作为来自QR-Code的rawData的数据类型,并覆盖detect()方法以将rawData分配给我的BarCode实现。由于您的案例非常具体,因此您应该毫不犹豫地编写自己的实现。也可以在github上为其他人分享。
答案 1 :(得分:1)
我一直在通过this library module阅读包含二进制内容的QR码。旧的ZXing没有提供开箱即用的二进制有效载荷,但是新的确实提供了二进制有效载荷 - 但据我记忆,只是作为已知格式的一部分。