Cómo detener la exploración continua mediante zxing-android-embedded en Android

Estoy utilizando Zxing-android-embedded ( https://github.com/journeyapps/zxing-android-embedded ) para escanear códigos QR. He importado la biblioteca de github. Cuando se inicia la aplicación, la cámara está escaneando el código repetidamente siempre y cuando la cámara se coloque en un código de barras. Quiero detener el escaneado (pero no la vista previa de la cámara) una vez que se detecta el código de barras y mostrar un cuadro de diálogo con el botón "Confirmar", el botón "Cancelar" y un cuadro de entrada. Cuando el usuario presione el botón "Confirmar" o "Cancelar", debería comenzar a escanear de nuevo.

He llamado barcodeView.pause(); Al principio del método decode () que hace una pausa en la vista previa de la cámara. Además, agregó barcodeView.resume(); Dentro del método onClick de "dialogConfirmClick" y "dialogCancelClick". Pero barcodeView.pause(); Interrumpe el escaneado y la vista previa de la cámara.

Aquí está mi clase-

 public class MyScanActivity extends Activity { private static final String TAG = MyScanActivity.class.getSimpleName(); private CompoundBarcodeView barcodeView; private BeepManager beepManager; private DialogInterface.OnClickListener dialogCanselClick; private AlertDialog dialog; private BarcodeCallback callback = new BarcodeCallback() { @Override public void barcodeResult(BarcodeResult result) { if (result.getText() != null) { handleDecode(result); } } @Override public void possibleResultPoints(List<ResultPoint> resultPoints) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.continuous_scan); barcodeView = (CompoundBarcodeView) findViewById(R.id.barcode_scanner); barcodeView.decodeContinuous(callback); beepManager = new BeepManager(this); dialogCancelClick = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { barcodeView.resume();//Resume scanning dialog.dismiss(); } }; } public void handleDecode(BarcodeResult rawResult) { barcodeView.pause();//Pause preview String result = rawResult.getText(); beepManager.playBeepSoundAndVibrate(); DialogInterface.OnClickListener dialogOkClick = new DialogInterface.OnClickListener() { // OK // button @Override public void onClick(DialogInterface dialog, int which) { if (writeNote) { EditText txtNote = (EditText) promptsView.findViewById(R.id.txt_dialog_note); //code to merge value of txtNote with result } dialog.dismiss(); barcodeView.resume();//Resume scanning after pressing confirm button Toast.makeText(MyScanActivity.this, R.string.dialog_save_qr_alert, Toast.LENGTH_SHORT).show(); } }; AlertDialog dialog = DialogHelper.CreateDialog(this, DialogHelper.SAVE_QR_CODE, result, dialogOkClick, dialogCancelClick, promptsView); dialog.show(); } @Override protected void onResume() { super.onResume(); barcodeView.resume(); } @Override protected void onPause() { super.onPause(); barcodeView.pause(); } public void pause(View view) { barcodeView.pause(); } public void resume(View view) { barcodeView.resume(); } public void triggerScan(View view) { barcodeView.decodeSingle(callback); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return barcodeView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); } } 

Tengo la solución. Estoy publicando esto para que esto pueda ayudar a otros que pueden tener las mismas dudas.

En lugar de usar barcodeView.decodeContinuous(callback); Dentro del método onCreate use barcodeView.decodeSingle(callback); . Una vez que se encuentra un código QR, dejará de escanear. Llamar barcodeView.decodeSingle(callback); Dentro del botón Confirmar y Cancelar para activar el escaneo de nuevo.

  • Android Genera código QR y código de barras usando Zxing
  • Incorporación de ZXing en la aplicación de Android
  • Alternativa a la biblioteca de lectores QR de zxing para Java / Android?
  • ¿Cómo mostrar un código de barras 1-D de cadena en Android?
  • Introducción a ZXing en Android
  • Actualizar sdk tiene NoClassDefFoundError para zxing
  • Invertir imagen en Nexus 5x en modo vertical
  • Escáner de código de barras ZXing en diseño personalizado en fragmento
  • ZXing doble imagen / superposición después de escanear
  • Cómo obtener un error de cámara en la aplicación de código de barras de Zxing
  • Android Zxing cambia la orientación al retrato
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.