Send through EAN extension with metadata

git-svn-id: https://zxing.googlecode.com/svn/trunk@2186 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2012-02-15 10:23:06 +00:00
parent f1dc6c6dcd
commit 7eb6e8437a
6 changed files with 24 additions and 2 deletions

View file

@ -23,6 +23,7 @@ David Albert (Bug Labs)
David Olivier
David Walker (Google)
Diego Pierotto
Dion Hardy
drejc83
Eduardo Castillejo (University of Deusto)
Emanuele Aina

View file

@ -629,6 +629,10 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal
}
Map<ResultMetadataType,?> metadata = rawResult.getResultMetadata();
if (metadata != null) {
if (metadata.containsKey(ResultMetadataType.UPC_EAN_EXTENSION)) {
intent.putExtra(Intents.Scan.RESULT_UPC_EAN_EXTENSION,
metadata.get(ResultMetadataType.UPC_EAN_EXTENSION).toString());
}
Integer orientation = (Integer) metadata.get(ResultMetadataType.ORIENTATION);
if (orientation != null) {
intent.putExtra(Intents.Scan.RESULT_ORIENTATION, orientation.intValue());

View file

@ -116,6 +116,11 @@ public final class Intents {
*/
public static final String RESULT_FORMAT = "SCAN_RESULT_FORMAT";
/**
* Call intent.getStringExtra(RESULT_UPC_EAN_EXTENSION) to return any scanned additional barcode
*/
public static final String RESULT_UPC_EAN_EXTENSION = "SCAN_RESULT_UPC_EAN_EXTENSION";
/**
* Call intent.getByteArrayExtra(RESULT_BYTES) to get a {@code byte[]} of raw bytes in the
* barcode, if available.

View file

@ -70,6 +70,11 @@ public enum ResultMetadataType {
* For some products, the possible country of manufacture as a {@link String} denoting the
* ISO country code. Some map to multiple possible countries, like "US/CA".
*/
POSSIBLE_COUNTRY
POSSIBLE_COUNTRY,
/**
* For some products, the extension text
*/
UPC_EAN_EXTENSION,
}

View file

@ -98,7 +98,13 @@ public final class MultiFormatUPCEANReader extends OneDReader {
boolean canReturnUPCA = possibleFormats == null || possibleFormats.contains(BarcodeFormat.UPC_A);
if (ean13MayBeUPCA && canReturnUPCA) {
return new Result(result.getText().substring(1), null, result.getResultPoints(), BarcodeFormat.UPC_A);
// Transfer the metdata across
Result resultUPCA = new Result(result.getText().substring(1),
result.getRawBytes(),
result.getResultPoints(),
BarcodeFormat.UPC_A);
resultUPCA.putAllMetadata(result.getResultMetadata());
return resultUPCA;
}
return result;
}

View file

@ -192,6 +192,7 @@ public abstract class UPCEANReader extends OneDReader {
try {
Result extensionResult = extensionReader.decodeRow(rowNumber, row, endRange[1]);
decodeResult.putMetadata(ResultMetadataType.UPC_EAN_EXTENSION, extensionResult.getText());
decodeResult.putAllMetadata(extensionResult.getResultMetadata());
decodeResult.addResultPoints(extensionResult.getResultPoints());
} catch (ReaderException re) {