ZXing doble imagen / superposición después de escanear

Estoy usando la biblioteca de ZXing, completamente integrada con los archivos jar, en mi aplicación de Android y tengo el siguiente problema:

Problema:

Después de escanear un código de barras, la imagen escaneada permanece en la parte superior de la alimentación de la cámara en vivo con una transparencia de aproximadamente el 50% durante aproximadamente 1-2 segundos.

Pregunta:

¿Hay alguna forma de que la imagen escaneada aparezca al 0% de transparencia, en lugar de la superposición extraña? O, mejor aún, ¿puede mostrar un fragmento personalizado?

Gracias.

Código: [w / o partes no relacionadas]

public static void initiateScan(Fragment fragment) { IntentIntegrator ii = new IntentIntegrator(fragment); DisplayMetrics dm = fragment.getResources().getDisplayMetrics(); ii.addExtra("SCAN_WIDTH", dm.heightPixels); ii.addExtra("SCAN_HEIGHT", dm.widthPixels / 4); ii.addExtra("SCAN_MODE", "ONE_D_MODE"); List<String> c = new ArrayList<String>(); c.add("CODE_39"); ii.initiateScan(c, -1); } public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==IntentIntegrator.REQUEST_CODE) { // scan from ZXing String raw_vin=null; String vin = null; boolean success=false; IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result!=null) { String content = result.getContents(); if(content!=null) { raw_vin=content; vin=raw_vin; success=true; } } } } 

Ejemplo:

Ejemplo de imagen doble

Esto es lo que tengo en el archivo build.gradle para las dependencias:

 compile 'com.google.zxing:core:3.2.1' compile 'com.journeyapps:zxing-android-embedded:3.0.3@aar' 

Intente esto en el método initiateScan :

 public static void initiateScan(Fragment fragment) { IntentIntegrator ii = IntentIntegrator.forSupportFragment(fragment); DisplayMetrics dm = fragment.getResources().getDisplayMetrics(); ii.addExtra("SCAN_WIDTH", dm.heightPixels); ii.addExtra("SCAN_HEIGHT", dm.widthPixels / 4); ii.addExtra("SCAN_MODE", "ONE_D_MODE"); ii.initiateScan(Collections.singletonList("CODE_39")); } 

Déjame saber cómo funciona para usted.

No soy capaz de explicar por qué ocurre este problema, pero estoy usando ZXing para mi aplicación de escáner de código de barras sin 50% de transparencia. La siguiente es mi solución:

Diseño:

 <com.journeyapps.barcodescanner.CompoundBarcodeView android:id="@+id/barcode_scanner" android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="2dp"> </com.journeyapps.barcodescanner.CompoundBarcodeView> 

En el fragmento:

 private CompoundBarcodeView barcodeView; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { return null; } View v = inflater.inflate(R.layout.webservice_layout, container, false); barcodeView = (CompoundBarcodeView) v.findViewById(R.id.barcode_scanner); barcodeView.decodeContinuous(callback); ...... } 

Función de devolución de llamada:

 private BarcodeCallback callback = new BarcodeCallback() { @Override public void barcodeResult(BarcodeResult result) { if (SOAP_ACTION.equals("") || SOAP_METHOD.equals("") || soapProperty.equals("")) { barcodeView.pause(); } else { if (result.getText() != null) { barcodeView.setStatusText(result.getText()); barcodeView.pause(); new Handler().postDelayed(new Runnable() { @Override public void run() { barcodeView.resume(); } }, 1000); } } } }; 

¡Espero que esto ayude!

Mi enfoque es el siguiente:

 //start the scanning public void startQRCodeScanning() { IntentIntegrator integrator = IntentIntegrator.forFragment(this); integrator.setCaptureActivity(ScanActivity); integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setBeepEnabled(false); integrator.setOrientationLocked(true); integrator.initiateScan(); } //onActivityResult: @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (result != null) { if (result.getContents() == null) { Log.d(TAG, "Cancelled scan"); //we want to finish the current activity //as it does not make sense to do anything else finishActivity(); } else { Log.d(TAG, "Scanned " + result.getContents()); setConnectionString(result.getContents()); } } else { super.onActivityResult(requestCode, resultCode, data); } } //next I have the QRCodeScanningActivity public class QRCodeScannerActivity extends Activity { private CaptureManager capture; private CompoundBarcodeView barcodeScannerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_scanner); if (getResources().getBoolean(R.bool.portrait_only)) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP); } barcodeScannerView = (CompoundBarcodeView)findViewById(R.id.zxing_barcode_scanner); capture = new CaptureManager(this, barcodeScannerView); capture.initializeFromIntent(getIntent(), savedInstanceState); capture.decode(); } @Override protected void onResume() { super.onResume(); capture.onResume(); } @Override protected void onPause() { super.onPause(); capture.onPause(); } @Override protected void onDestroy() { super.onDestroy(); capture.onDestroy(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); capture.onSaveInstanceState(outState); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); } } //Next you need to define the layouts and everything. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black"> <com.journeyapps.barcodescanner.CompoundBarcodeView android:id="@+id/zxing_barcode_scanner" android:layout_width="match_parent" android:layout_height="match_parent" app:zxing_scanner_layout="@layout/barcode_scanner_layout"/> </FrameLayout> </RelativeLayout> 
  • ¿Por qué la vista previa de la cámara gira 90 grados en el emulador de Android?
  • Escáner QR con ZXing y ZBar no lee códigos de baja calidad en las tarjetas
  • Integración de la biblioteca de ZXing directamente en mi aplicación de Android
  • Zxing - Cambio de la vista de la cámara -90 grados
  • Vista de cámara personalizada y rotación en Zxing para el código QR?
  • Android Zxing cambia la orientación al retrato
  • ¿Cómo usar Zxing para el escáner de código qr sin usar la cámara?
  • Cómo usar la biblioteca de ZXing sin instalar la aplicación barcodescanner
  • Escáner de código de barras ZXing para Webapps
  • Lanzamiento de un fragmento después de ZXing 2.0 QR-Code Scan
  • Escaneo de códigos QR sin cámara de pantalla completa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.