【问题标题】:zbar and reading 2D barcode doesn't workzbar 和读取二维条码不起作用
【发布时间】:2015-05-19 01:45:17
【问题描述】:

我使用以下参数调整扫描仪

        scanner.setConfig(0, Config.X_DENSITY, 400);
    scanner.setConfig(0, Config.Y_DENSITY, 400);


    scanner.setConfig(Symbol.CODABAR , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.EAN8 , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.PARTIAL , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.UPCE , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.ISBN10 , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.UPCA , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.EAN13 , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.ISBN13 , Config.ENABLE , 1) ;
    Scanner. setConfig (Symbol.I25, Config. ENABLE, 1);
    scanner.setConfig(Symbol.DATABAR , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.CODE39 , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.PDF417 , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.QRCODE , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.CODE93 , Config.ENABLE , 1) ;
    scanner.setConfig(Symbol.CODE128 , Config.ENABLE , 1) ;

并使用

读取数据
 PreviewCallback previewCb = new PreviewCallback() {
    public void onPreviewFrame(byte[] data, Camera camera) {
        Camera.Parameters parameters = camera.getParameters();
        Size size = parameters.getPreviewSize();

        Image barcode = new Image(size.width, size.height, "Y800");
        barcode.setData(data);


        int result = scanner.scanImage(barcode);
        String Output = "";
        if (result != 0) {
            previewing = false;
            mCamera.setPreviewCallback(null);
            mCamera.stopPreview();

            SymbolSet syms = scanner.getResults();

            for (Symbol sym : syms) {
                Output = Output + sym.getData();
                barcodeScanned = true;
            }
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setMessage(Output)
                    .setCancelable(false)
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            ReumePreview();
                        }
                    });
            AlertDialog alert = builder.create();
            alert.show();


        }

    }
};

但我无法读取使用以下示例测试的二维条码

http://www.datalogic.com/upload/marketlit/demo/R44-2686A.pdf

知道如何让它工作

【问题讨论】:

  • 您能找到解决方案吗?

标签: android zbar-sdk zbar


【解决方案1】:

在for循环中加入break

 PreviewCallback previewCb = new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
    Camera.Parameters parameters = camera.getParameters();
    Size size = parameters.getPreviewSize();

    Image barcode = new Image(size.width, size.height, "Y800");
    barcode.setData(data);


    int result = scanner.scanImage(barcode);
    String Output = "";
    if (result != 0) {
        previewing = false;
        mCamera.setPreviewCallback(null);
        mCamera.stopPreview();

        SymbolSet syms = scanner.getResults();

        for (Symbol sym : syms) {
            Output = Output + sym.getData();
            barcodeScanned = true;
            break;
        }
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setMessage(Output)
                .setCancelable(false)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        ReumePreview();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();


    }

}

};

【讨论】:

  • 为什么要破解?!这不会检索所有数据
  • sym.getData() 将提供您的数据,因此无需再次循环
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多