Uso de ZXing para crear una aplicación de escaneo de códigos de barras Android

He estado buscando cómo agregar un escáner de código de barras a mi aplicación. ¿Alguien sabe de ejemplos o sabe cómo hacerlo fácilmente? Cualquier ayuda es muy apreciada.

El proyecto ZXing proporciona una aplicación autónoma de lectura de código de barras que, a través del mecanismo de intenciones de Android, puede ser llamada por otras aplicaciones que desean integrar el escaneado de códigos de barras.

La forma más sencilla de hacerlo es llamar al ZXing SCAN Intent de su aplicación, de la siguiente manera :

 public Button.OnClickListener mScan = new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0); } }; public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 0) { if (resultCode == RESULT_OK) { String contents = intent.getStringExtra("SCAN_RESULT"); String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); // Handle successful scan } else if (resultCode == RESULT_CANCELED) { // Handle cancel } } } 

Al presionar el botón vinculado a mScan se lanzaría directamente a la pantalla del escáner de códigos de barras ZXing (o se bloquearía si ZXing no está instalado). Una vez que un código de barras ha sido reconocido, recibirá el resultado en su Activity , aquí en la variable de contents .

Para evitar la caída y simplificar las cosas para usted, ZXing ha proporcionado una clase de utilidad que puede integrar en su aplicación para hacer la instalación de ZXing más suave, redirigiendo al usuario al Android Market si no lo tienen instalado ya.

Por último, si desea integrar el escaneado de códigos de barras directamente en su aplicación sin depender de tener instalada la aplicación ZXing independiente, ¡entonces es un proyecto de código abierto y puede hacerlo! 🙂


Edit: Alguien editó esta guía en esta respuesta (suena un poco extraño, no puedo dar fe de su precisión, y no estoy seguro de por qué están usando Eclipse en 2015):

Paso a paso para configurar zxing 3.2.1 en eclipse

  1. Descargar zxing-master.zip desde " https://github.com/zxing/zxing "
  2. Descomprimir zxing-master.zip, Usar eclipse para importar el proyecto "android" en zxing-master
  3. Descargar core-3.2.1.jar desde " http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ "
  4. Crear carpeta "libs" en el proyecto "android" y pegar cor-3.2.1.jar en la carpeta libs
  5. Haga clic en proyecto: elija "propiedades" -> "Java Compiler" para cambiar el nivel a 1.7. A continuación, haga clic en "Android" cambiar "Project build target" a android 4.4.2+, porque el uso de 1.7 requiere la compilación con Android 4.4
  6. Si "CameraConfigurationUtils.java" no existe en "zxing-master / android / app / src / main / java / com / google / zxing / client / android / camera /". Puede copiarlo desde "zxing-master / android-core / src / main / java / com / google / zxing / client / android / camera /" y pegar en su proyecto.
  7. Limpie y construya el proyecto. Si su proyecto muestra error acerca de "switch – case", debe cambiarlos a "if – else".
  8. Terminado. Limpie y construya el proyecto. Puede hacer clic en "Proprties"> "Android"> haga clic en "Is Libraries" para usar en su proyecto.

Tuve un problema con implimenting el código hasta que encontré un sitio web (no lo puedo encontrar de nuevo ahora) que explicó que es necesario incluir el nombre del paquete en el nombre de la intent.putExtra.

Sería tirar de la aplicación, pero no reconocería ningún código de barras, y cuando lo cambié de.

 intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 

a

 intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE"); 

Funcionó muy bien. Sólo un consejo para cualquier otro programador andorid novato.

Usar el IntentInegrator proporcionado es mejor. Le permite pedir a su usuario que instale el escáner de código de barras si no lo tiene. También le permite personalizar los mensajes. La constante IntentIntegrator.REQUEST_CODE contiene el valor del código de solicitud para el onActivityResult para comprobar en el bloque anterior si.

 IntentIntegrator intentIntegrator = new IntentIntegrator(this); // where this is activity intentIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES); // or QR_CODE_TYPES if you need to scan QR 

IntentIntegrator.java

Si desea incluir en su código y no utilizar el IntentIntegrator que la biblioteca de Zxing recomienda que pueda utilizar algunos de estos puertos

http://code.google.com/p/android-zxinglib/

http://code.google.com/p/android-quick-response-code/

Yo uso el primero y funciona perfecto! Tiene un proyecto de muestra para probarlo

El uso de Zxing de esta manera requiere que un usuario también instale la aplicación de escáner de código de barras, que no es ideal. Lo que probablemente desee es agrupar Zxing en su aplicación directamente.

Recomiendo encarecidamente el uso de esta biblioteca: https://github.com/dm77/barcodescanner

Toma todos los problemas locos de la construcción que usted va a funcionar en intentar integrar Xzing o Zbar directamente. Utiliza esas bibliotecas bajo las portadas, pero las envuelve en una API muy simple de usar.

La detección de códigos de barras ya está disponible en los servicios de Google Play . Código de laboratorio del proceso de instalación, aquí están los documentos de api , y un proyecto de ejemplo .

Puede utilizar esta guía de inicio rápido http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ con el proyecto de ejemplo simple para construir la aplicación de Android sin IntentIntegrator.

  • Crear un código QR y mostrarlo en ImageView
  • Cómo integrar Zxing Barcode Scanner sin instalar la aplicación real zxing (no se puede resolver el símbolo: .android.CaptureActivity)?
  • 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: ClassNotFoundException mientras incluye ZXing
  • ¿Cómo abrir la pantalla de escaneo "zxing Barcode" en una pequeña ventana?
  • Android ZXing Obtener imagen de código de barras
  • Zxing onActivityResult no se llama en Fragmento sólo en Actividad
  • Si hay cualquier tutorial para android zxing biblioteca con Fragmentos
  • Escaneo de código QR desde un archivo de imagen
  • ¿Puedo controlar la linterna sin usar android.hardware.Camera?
  • Cómo reiniciar la cámara de manera eficiente en un fragmento - Barcode Scanner
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.