Search in sources :

Example 1 with BarcodeFormat

use of com.google.zxing.BarcodeFormat in project titanium-barcode by mwaylabs.

the class TitaniumBarcodeActivity method parseDecodeFormats.

private static Vector<BarcodeFormat> parseDecodeFormats(Intent intent) {
    String scanFormats = intent.getStringExtra(Intents.Scan.SCAN_FORMATS);
    if (scanFormats != null) {
        Vector<BarcodeFormat> formats = new Vector<BarcodeFormat>();
        try {
            for (String format : COMMA_PATTERN.split(scanFormats)) {
                formats.add(BarcodeFormat.valueOf(format));
            }
        } catch (IllegalArgumentException iae) {
            // ignore it then
            Log.d(TAG, iae.toString());
        }
    }
    String decodeMode = intent.getStringExtra(Intents.Scan.MODE);
    if (decodeMode != null) {
        if (Intents.Scan.PRODUCT_MODE.equals(decodeMode)) {
            return PRODUCT_FORMATS;
        }
        if (Intents.Scan.QR_CODE_MODE.equals(decodeMode)) {
            return QR_CODE_FORMATS;
        }
        if (Intents.Scan.ONE_D_MODE.equals(decodeMode)) {
            return ONE_D_FORMATS;
        }
    }
    return null;
}
Also used : BarcodeFormat(com.google.zxing.BarcodeFormat) BarcodeString(com.mwaysolutions.barcode.constants.BarcodeString) Vector(java.util.Vector)

Example 2 with BarcodeFormat

use of com.google.zxing.BarcodeFormat in project android-zxingLibrary by yipianfengye.

the class CodeUtils method analyzeBitmap.

/**
     * 解析二维码图片工具类
     * @param analyzeCallback
     */
public static void analyzeBitmap(String path, AnalyzeCallback analyzeCallback) {
    /**
         * 首先判断图片的大小,若图片过大,则执行图片的裁剪操作,防止OOM
         */
    BitmapFactory.Options options = new BitmapFactory.Options();
    // 先获取原大小
    options.inJustDecodeBounds = true;
    Bitmap mBitmap = BitmapFactory.decodeFile(path, options);
    // 获取新的大小
    options.inJustDecodeBounds = false;
    int sampleSize = (int) (options.outHeight / (float) 400);
    if (sampleSize <= 0)
        sampleSize = 1;
    options.inSampleSize = sampleSize;
    mBitmap = BitmapFactory.decodeFile(path, options);
    MultiFormatReader multiFormatReader = new MultiFormatReader();
    // 解码的参数
    Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>(2);
    // 可以解析的编码类型
    Vector<BarcodeFormat> decodeFormats = new Vector<BarcodeFormat>();
    if (decodeFormats == null || decodeFormats.isEmpty()) {
        decodeFormats = new Vector<BarcodeFormat>();
        // 这里设置可扫描的类型,我这里选择了都支持
        decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS);
        decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS);
        decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);
    }
    hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats);
    // 设置继续的字符编码格式为UTF8
    // hints.put(DecodeHintType.CHARACTER_SET, "UTF8");
    // 设置解析配置参数
    multiFormatReader.setHints(hints);
    // 开始对图像资源解码
    Result rawResult = null;
    try {
        rawResult = multiFormatReader.decodeWithState(new BinaryBitmap(new HybridBinarizer(new BitmapLuminanceSource(mBitmap))));
    } catch (Exception e) {
        e.printStackTrace();
    }
    if (rawResult != null) {
        if (analyzeCallback != null) {
            analyzeCallback.onAnalyzeSuccess(mBitmap, rawResult.getText());
        }
    } else {
        if (analyzeCallback != null) {
            analyzeCallback.onAnalyzeFailed();
        }
    }
}
Also used : MultiFormatReader(com.google.zxing.MultiFormatReader) DecodeHintType(com.google.zxing.DecodeHintType) Hashtable(java.util.Hashtable) BarcodeFormat(com.google.zxing.BarcodeFormat) HybridBinarizer(com.google.zxing.common.HybridBinarizer) WriterException(com.google.zxing.WriterException) Result(com.google.zxing.Result) Bitmap(android.graphics.Bitmap) BinaryBitmap(com.google.zxing.BinaryBitmap) BitmapLuminanceSource(com.uuzuche.lib_zxing.camera.BitmapLuminanceSource) BitmapFactory(android.graphics.BitmapFactory) BinaryBitmap(com.google.zxing.BinaryBitmap) Vector(java.util.Vector)

Example 3 with BarcodeFormat

use of com.google.zxing.BarcodeFormat in project weex-example by KalicyZhou.

the class ExpandedProductResultParser method parse.

@Override
public ExpandedProductParsedResult parse(Result result) {
    BarcodeFormat format = result.getBarcodeFormat();
    if (format != BarcodeFormat.RSS_EXPANDED) {
        // ExtendedProductParsedResult NOT created. Not a RSS Expanded barcode
        return null;
    }
    String rawText = getMassagedText(result);
    String productID = null;
    String sscc = null;
    String lotNumber = null;
    String productionDate = null;
    String packagingDate = null;
    String bestBeforeDate = null;
    String expirationDate = null;
    String weight = null;
    String weightType = null;
    String weightIncrement = null;
    String price = null;
    String priceIncrement = null;
    String priceCurrency = null;
    Map<String, String> uncommonAIs = new HashMap<>();
    int i = 0;
    while (i < rawText.length()) {
        String ai = findAIvalue(i, rawText);
        if (ai == null) {
            // ExtendedProductParsedResult NOT created. Not match with RSS Expanded pattern
            return null;
        }
        i += ai.length() + 2;
        String value = findValue(i, rawText);
        i += value.length();
        switch(ai) {
            case "00":
                sscc = value;
                break;
            case "01":
                productID = value;
                break;
            case "10":
                lotNumber = value;
                break;
            case "11":
                productionDate = value;
                break;
            case "13":
                packagingDate = value;
                break;
            case "15":
                bestBeforeDate = value;
                break;
            case "17":
                expirationDate = value;
                break;
            case "3100":
            case "3101":
            case "3102":
            case "3103":
            case "3104":
            case "3105":
            case "3106":
            case "3107":
            case "3108":
            case "3109":
                weight = value;
                weightType = ExpandedProductParsedResult.KILOGRAM;
                weightIncrement = ai.substring(3);
                break;
            case "3200":
            case "3201":
            case "3202":
            case "3203":
            case "3204":
            case "3205":
            case "3206":
            case "3207":
            case "3208":
            case "3209":
                weight = value;
                weightType = ExpandedProductParsedResult.POUND;
                weightIncrement = ai.substring(3);
                break;
            case "3920":
            case "3921":
            case "3922":
            case "3923":
                price = value;
                priceIncrement = ai.substring(3);
                break;
            case "3930":
            case "3931":
            case "3932":
            case "3933":
                if (value.length() < 4) {
                    // ExtendedProductParsedResult NOT created. Not match with RSS Expanded pattern
                    return null;
                }
                price = value.substring(3);
                priceCurrency = value.substring(0, 3);
                priceIncrement = ai.substring(3);
                break;
            default:
                // No match with common AIs
                uncommonAIs.put(ai, value);
                break;
        }
    }
    return new ExpandedProductParsedResult(rawText, productID, sscc, lotNumber, productionDate, packagingDate, bestBeforeDate, expirationDate, weight, weightType, weightIncrement, price, priceIncrement, priceCurrency, uncommonAIs);
}
Also used : HashMap(java.util.HashMap) BarcodeFormat(com.google.zxing.BarcodeFormat)

Example 4 with BarcodeFormat

use of com.google.zxing.BarcodeFormat in project weex-example by KalicyZhou.

the class ISBNResultParser method parse.

/**
   * See <a href="http://www.bisg.org/isbn-13/for.dummies.html">ISBN-13 For Dummies</a>
   */
@Override
public ISBNParsedResult parse(Result result) {
    BarcodeFormat format = result.getBarcodeFormat();
    if (format != BarcodeFormat.EAN_13) {
        return null;
    }
    String rawText = getMassagedText(result);
    int length = rawText.length();
    if (length != 13) {
        return null;
    }
    if (!rawText.startsWith("978") && !rawText.startsWith("979")) {
        return null;
    }
    return new ISBNParsedResult(rawText);
}
Also used : BarcodeFormat(com.google.zxing.BarcodeFormat)

Example 5 with BarcodeFormat

use of com.google.zxing.BarcodeFormat in project weex-example by KalicyZhou.

the class MultiFormatUPCEANReader method decodeRow.

@Override
public Result decodeRow(int rowNumber, BitArray row, Map<DecodeHintType, ?> hints) throws NotFoundException {
    // Compute this location once and reuse it on multiple implementations
    int[] startGuardPattern = UPCEANReader.findStartGuardPattern(row);
    for (UPCEANReader reader : readers) {
        Result result;
        try {
            result = reader.decodeRow(rowNumber, row, startGuardPattern, hints);
        } catch (ReaderException ignored) {
            continue;
        }
        // Special case: a 12-digit code encoded in UPC-A is identical to a "0"
        // followed by those 12 digits encoded as EAN-13. Each will recognize such a code,
        // UPC-A as a 12-digit string and EAN-13 as a 13-digit string starting with "0".
        // Individually these are correct and their readers will both read such a code
        // and correctly call it EAN-13, or UPC-A, respectively.
        //
        // In this case, if we've been looking for both types, we'd like to call it
        // a UPC-A code. But for efficiency we only run the EAN-13 decoder to also read
        // UPC-A. So we special case it here, and convert an EAN-13 result to a UPC-A
        // result if appropriate.
        //
        // But, don't return UPC-A if UPC-A was not a requested format!
        boolean ean13MayBeUPCA = result.getBarcodeFormat() == BarcodeFormat.EAN_13 && result.getText().charAt(0) == '0';
        @SuppressWarnings("unchecked") Collection<BarcodeFormat> possibleFormats = hints == null ? null : (Collection<BarcodeFormat>) hints.get(DecodeHintType.POSSIBLE_FORMATS);
        boolean canReturnUPCA = possibleFormats == null || possibleFormats.contains(BarcodeFormat.UPC_A);
        if (ean13MayBeUPCA && canReturnUPCA) {
            // 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;
    }
    throw NotFoundException.getNotFoundInstance();
}
Also used : BarcodeFormat(com.google.zxing.BarcodeFormat) Result(com.google.zxing.Result) ReaderException(com.google.zxing.ReaderException)

Aggregations

BarcodeFormat (com.google.zxing.BarcodeFormat)17 Result (com.google.zxing.Result)5 ResultPoint (com.google.zxing.ResultPoint)5 ReaderException (com.google.zxing.ReaderException)4 DecodeHintType (com.google.zxing.DecodeHintType)3 Paint (android.graphics.Paint)2 MultiFormatReader (com.google.zxing.MultiFormatReader)2 ResultPointCallback (com.google.zxing.ResultPointCallback)2 HashMap (java.util.HashMap)2 Vector (java.util.Vector)2 AlertDialog (android.app.AlertDialog)1 DialogInterface (android.content.DialogInterface)1 Bitmap (android.graphics.Bitmap)1 BitmapFactory (android.graphics.BitmapFactory)1 BinaryBitmap (com.google.zxing.BinaryBitmap)1 WriterException (com.google.zxing.WriterException)1 HybridBinarizer (com.google.zxing.common.HybridBinarizer)1 CameraSettings (com.journeyapps.barcodescanner.camera.CameraSettings)1 BarcodeString (com.mwaysolutions.barcode.constants.BarcodeString)1 BitmapLuminanceSource (com.uuzuche.lib_zxing.camera.BitmapLuminanceSource)1