2017-10-23 1 views
-1

me.dm7.barcodescanner : zxing : 1.9 라이브러리에서 대량 스캔 모드를 구현하려고합니다. 이건 내 스 니펫 코드입니다. 메신저 지금은 각 messagedialogue에 스캔 결과를 표시하려고 코드에서 여러 스캔을하려고. 그러나 첫 번째 스캔 결과 핸들러 다음에 두 번째 시간 스캔은 자동으로 활동을 중지합니다.처리 결과에서 ZXingScannerView 스캔 대량 모드

private ZXingScannerView mScannerView; 
private boolean mFlash; 
private boolean mAutoFocus; 
private int mCameraId = -1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_scanner); 

ViewGroup contentFrame = (ViewGroup) findViewById(R.id.content_frame); 
mScannerView = new ZXingScannerView(this); 
setupFormats(); 
contentFrame.addView(mScannerView); 
} 

//i want to make my scanner able to keep scanning getting the result. 
//however after the first scan, the second scan will automatically close the activity 
@Override 
public void handleResult(Result result) { 
try { 
    if(!result.getText().equals("")){ 
    //In message dialogue will have 1 button handle on onDialogPositiveClick 
      showMessageDialog("Contents = " + result.getText() + ", Format = 
      " + result.getBarcodeFormat().toString()); 
    } 
} catch (Exception e) { 

} finally { 

} 
} 

public void showMessageDialog(String message) { 
    DialogFragment fragment = MessageDialogFragment.newInstance("Scan 
    Results", message, this); 
    fragment.show(getSupportFragmentManager(), "scan_results"); 
} 

@Override 
public void onDialogPositiveClick(DialogFragment dialog) { 
    mScannerView.resumeCameraPreview(this); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    mScannerView.stopCamera(); 
    closeMessageDialog(); 
    closeFormatsDialog(); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mScannerView.setResultHandler(this); 
    mScannerView.startCamera(mCameraId); 
    mScannerView.setFlash(mFlash); 
    mScannerView.setAutoFocus(mAutoFocus); 
} 

답변

0

당신이 일부 지연 후 스캔을 다시 시작해야 핸들러 또는 TimerTask를 handleResult 먼저 검사 결과를 얻을 수 secondTime Scan.after에 대한 추가해야 onActivityResult를

/*Here is where we come back after the Barcode Scanner is done*/ 
public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 
if (requestCode == 0) { 
    if (resultCode == RESULT_OK) { 
     // contents contains whatever the code was 
     String contents = intent.getStringExtra("SCAN_RESULT"); 
     // Format contains the type of code i.e. UPC, EAN, QRCode etc... 
     String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 

     Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
     intent.putExtra("SCAN_FORMATS", "PRODUCT_MODE,CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF"); 
     startActivityForResult(intent, 0); // start the next scan 
    } else if (resultCode == RESULT_CANCELED) { 

     //do whatever else you want. 
    } 
    } 
} 
0

그것을 시도, 당신이 원하는 지연 어떤 핸들러에 추가하십시오.

@Override 
    public void handleResult(final Result rawResult) { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       handleDecode(rawResult); 
      } 
     }); 
     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       mScannerView.resumeCameraPreview(CaptureActivity.this); 
      } 
     }, 4000);// 4 sec delay to restart scan again. 
    } 
관련 문제