summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/java/com/google/zxing/common/DecoderResult.java27
-rw-r--r--core/src/main/java/com/google/zxing/qrcode/QRCodeReader.java7
-rw-r--r--core/src/main/java/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.java3
-rw-r--r--core/src/main/java/com/google/zxing/qrcode/decoder/Decoder.java13
4 files changed, 45 insertions, 5 deletions
diff --git a/core/src/main/java/com/google/zxing/common/DecoderResult.java b/core/src/main/java/com/google/zxing/common/DecoderResult.java
index db2e7e014..b0c3a66cb 100644
--- a/core/src/main/java/com/google/zxing/common/DecoderResult.java
+++ b/core/src/main/java/com/google/zxing/common/DecoderResult.java
@@ -38,12 +38,13 @@ public final class DecoderResult {
private final int structuredAppendParity;
private final int structuredAppendSequenceNumber;
private final int symbologyModifier;
+ private final int version; /* Добавлено: версия QR-кода */
public DecoderResult(byte[] rawBytes,
String text,
List<byte[]> byteSegments,
String ecLevel) {
- this(rawBytes, text, byteSegments, ecLevel, -1, -1, 0);
+ this(rawBytes, text, byteSegments, ecLevel, -1, -1, 0, -1);
}
public DecoderResult(byte[] rawBytes,
@@ -51,7 +52,7 @@ public final class DecoderResult {
List<byte[]> byteSegments,
String ecLevel,
int symbologyModifier) {
- this(rawBytes, text, byteSegments, ecLevel, -1, -1, symbologyModifier);
+ this(rawBytes, text, byteSegments, ecLevel, -1, -1, symbologyModifier, -1);
}
public DecoderResult(byte[] rawBytes,
@@ -60,7 +61,7 @@ public final class DecoderResult {
String ecLevel,
int saSequence,
int saParity) {
- this(rawBytes, text, byteSegments, ecLevel, saSequence, saParity, 0);
+ this(rawBytes, text, byteSegments, ecLevel, saSequence, saParity, 0, -1);
}
public DecoderResult(byte[] rawBytes,
@@ -70,6 +71,17 @@ public final class DecoderResult {
int saSequence,
int saParity,
int symbologyModifier) {
+ this(rawBytes, text, byteSegments, ecLevel, saSequence, saParity, symbologyModifier, -1);
+ }
+
+ public DecoderResult(byte[] rawBytes,
+ String text,
+ List<byte[]> byteSegments,
+ String ecLevel,
+ int saSequence,
+ int saParity,
+ int symbologyModifier,
+ int version) {
this.rawBytes = rawBytes;
this.numBits = rawBytes == null ? 0 : 8 * rawBytes.length;
this.text = text;
@@ -78,6 +90,7 @@ public final class DecoderResult {
this.structuredAppendParity = saParity;
this.structuredAppendSequenceNumber = saSequence;
this.symbologyModifier = symbologyModifier;
+ this.version = version;
}
/**
@@ -173,4 +186,12 @@ public final class DecoderResult {
return symbologyModifier;
}
+ /**
+ * @return QR code version (1-40), or -1 if not applicable
+ * @since 3.5.4-custom
+ */
+ public int getVersion() {
+ return version;
+ }
+
}
diff --git a/core/src/main/java/com/google/zxing/qrcode/QRCodeReader.java b/core/src/main/java/com/google/zxing/qrcode/QRCodeReader.java
index 9a2b649df..a66612bad 100644
--- a/core/src/main/java/com/google/zxing/qrcode/QRCodeReader.java
+++ b/core/src/main/java/com/google/zxing/qrcode/QRCodeReader.java
@@ -101,6 +101,13 @@ public class QRCodeReader implements Reader {
}
result.putMetadata(ResultMetadataType.ERRORS_CORRECTED, decoderResult.getErrorsCorrected());
result.putMetadata(ResultMetadataType.SYMBOLOGY_IDENTIFIER, "]Q" + decoderResult.getSymbologyModifier());
+
+ // KXLAB PATCH: Add QR code version to metadata
+ int qrVersion = decoderResult.getVersion();
+ if (qrVersion != -1) {
+ result.putMetadata(ResultMetadataType.OTHER, decoderResult); // full DecoderResult
+ }
+
return result;
}
diff --git a/core/src/main/java/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.java b/core/src/main/java/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.java
index e23ca545b..5f5ee02e5 100644
--- a/core/src/main/java/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.java
+++ b/core/src/main/java/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.java
@@ -166,7 +166,8 @@ final class DecodedBitStreamParser {
ecLevel == null ? null : ecLevel.toString(),
symbolSequence,
parityData,
- symbologyModifier);
+ symbologyModifier,
+ version.getVersionNumber()); // Добавляем версию
}
/**
diff --git a/core/src/main/java/com/google/zxing/qrcode/decoder/Decoder.java b/core/src/main/java/com/google/zxing/qrcode/decoder/Decoder.java
index 65c286853..f39336f5d 100644
--- a/core/src/main/java/com/google/zxing/qrcode/decoder/Decoder.java
+++ b/core/src/main/java/com/google/zxing/qrcode/decoder/Decoder.java
@@ -159,7 +159,18 @@ public final class Decoder {
// Decode the contents of that stream of bytes
DecoderResult result = DecodedBitStreamParser.decode(resultBytes, version, ecLevel, hints);
result.setErrorsCorrected(errorsCorrected);
- return result;
+
+ // Создаем новый DecoderResult с информацией о версии
+ return new DecoderResult(
+ resultBytes,
+ result.getText(),
+ result.getByteSegments(),
+ result.getECLevel(),
+ result.getStructuredAppendSequenceNumber(),
+ result.getStructuredAppendParity(),
+ result.getSymbologyModifier(),
+ version.getVersionNumber() // Добавляем версию
+ );
}
/**