我正在使用 zxing QR 码 API,并且正在尝试从 android 设备上的 QR 码中提取二进制数据。但是,在 android 上,Result.getResultMetadata() 没有通过 Intent 传递给我,所以我尝试使用 Result.getRawBytes() 来检索我的字节数组。但是, getRawBytes() 似乎没有返回相同的内容。
Result.getRawBytes() 究竟是什么,有谁知道如何正确地从 zxing QR 码中提取字节数组?
谢谢
所以我认为你想要的是字节数组中的原始解码数据。zxing 为您提供的意图源缺少元数据,但仍将其发送到意图过滤器。
在 IntentIntegrator.java 的 parseActivityResult 中,您可以添加:
byte[] dataBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTE_SEGMENTS_0");
return new IntentResult(contents,
formatName,
rawBytes,
orientation,
errorCorrectionLevel,
dataBytes);
我修改了 IntentResult 类,以便能够获取这个额外的部分:
private final byte[] dataBytes;
IntentResult() {
this(null, null, null, null, null, null);
}
IntentResult(String contents,
String formatName,
byte[] rawBytes,
Integer orientation,
String errorCorrectionLevel,
byte[] dataBytes) {
this.contents = contents;
this.formatName = formatName;
this.rawBytes = rawBytes;
this.orientation = orientation;
this.errorCorrectionLevel = errorCorrectionLevel;
this.dataBytes = dataBytes;
}
/**
* @return raw content of barcode in bytes
*/
public byte [] getDataBytes() {
return dataBytes;
}
此字节数组存储元数据的第一个数组,也就是数据的原始内容(以字节为单位)。
为什么不从javadoc开始?
它是二维码中的原始码字。它不是单独的已解析字节段。