2015-03-16 6 views
1

настраиваю сканер с помощью следующих использовать параметрыZbar и чтения 2D штрих-код не работает

 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(); 


     } 

    } 
}; 

, но я не могу читать штрих-кодов 2D я проверить с помощью следующих образцы

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

любая идея, как сделать это работает

+0

Вы могли бы найти решение для этого? –

ответ

0

поставил перерыв в цикл

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(); 


    } 

} 

};

+0

Зачем ломать ?! это не будет извлекать все данные – AMH

+0

sym.getData() предоставит ваши данные, поэтому не нужно снова зацикливаться –

+0

Проблема с обнаружением не манипулирования данными – AMH