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

3 Solutions collect form web for “ZXing doble imagen / superposición después de escanear”

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> 
  • Cómo activar el modo de escaneo masivo utilizando la biblioteca Zxing en mi aplicación para escanear códigos de barras múltiples y qrcodes sin mostrar una pantalla de vista previa
  • Android Zxing cambia la orientación al retrato
  • Recursos para Android de Xamarin NotFoundException ZXingNetMobile
  • ¿Cómo mostrar un código de barras 1-D de cadena en Android?
  • Escáner de código QR
  • Si hay cualquier tutorial para android zxing biblioteca con Fragmentos
  • Zxing - Cambio de la vista de la cámara -90 grados
  • Android: El código QR generado que usa Zxing tiene márgenes (no es apropiado para el área)
  • Cámara Zxing en modo vertical en Android
  • Android: ClassNotFoundException mientras incluye ZXing
  • Cómo leer varios códigos qr de una imagen usando la biblioteca zxing
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.