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> 
  • Zxing onActivityResult no se llama en Fragmento sólo en Actividad
  • Escáner de código QR
  • Lectura de códigos de barras Delphi xe7, evento después de la intención que no desencadena
  • Android + biblioteca de escaneo de códigos de barras ZXing - tamaño personalizado y orientación
  • Crear un código QR y mostrarlo en ImageView
  • Cómo usar Zxing en android
  • Zxing - Cambio de la vista de la cámara -90 grados
  • ¿Puedo controlar la linterna sin usar android.hardware.Camera?
  • Conflicto Android drawable de la identificación del recurso?
  • Android Zxing cambia la orientación al retrato
  • Recursos para Android de Xamarin NotFoundException ZXingNetMobile
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.