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

He estado buscando cómo agregar un escáner de código de barras a mi aplicación. ¿Alguien sabe de algún ejemplo o sabe cómo hacer esto fácilmente?

El proyecto ZXing proporciona una aplicación de lector de códigos de barras independiente que, a través del mecanismo de intención de Android, puede ser invocada por otras aplicaciones que deseen integrar el escaneo de códigos de barras.

La forma más sencilla de hacerlo es llamar el ZXing SCAN Intent desde su aplicación, así :

 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 mScan directamente en la pantalla del escáner de código de barras ZXing (o se bloqueará si ZXing no está instalado). Una vez que se haya reconocido un código de barras, recibirá el resultado en su Activity , aquí en la variable de contents .

Para evitar colisiones y simplificar las cosas para usted, ZXing ha proporcionado una clase de utilidad que puede integrar en su aplicación para facilitar la instalación de ZXing, al redirigir al usuario al Android Market si no lo tiene instalado ya.

Finalmente, si desea integrar el escaneo de código de barras directamente en su aplicación sin tener que instalar la aplicación ZXing por separado, entonces es un proyecto de código abierto y ¡puede hacerlo! 🙂


Editar: Alguien editó esta guía en esta respuesta (suena un poco raro, no puedo garantizar 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. Descargue zxing-master.zip de ” https://github.com/zxing/zxing
  2. Descomprime zxing-master.zip, usa eclipse para importar el proyecto “android” en zxing-master
  3. Descargue core-3.2.1.jar de ” http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/
  4. Crea la carpeta “libs” en el proyecto “android” y pega cor-3.2.1.jar en la carpeta libs
  5. Haga clic en proyecto: elija “propiedades” -> “Comstackdor de Java” para cambiar el nivel a 1.7. A continuación, haga clic en “Android” para cambiar el “objective de comstackción del proyecto” a Android 4.4.2+, ya que el uso de 1.7 requiere la comstackció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 de “zxing-master / android-core / src / main / java / com / google / zxing / client / android / camera /” y pegarlo en su proyecto.
  7. Limpiar y construir proyecto. Si su proyecto muestra un error sobre “switch – case”, debe cambiarlo a “if – else”.
  8. Terminado. Limpiar y construir proyecto. Puede hacer clic en “Propriedades”> “Android”> hacer clic en “Es Bibliotecas” para usar en su proyecto.

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

Retiraría la aplicación pero no reconocería ningún código de barras, y cuando lo cambie.

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

a

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

Funcionó muy bien. Solo un consejo para cualquier otro progtwigdor andorid novato.

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

 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 usar el IntentIntegrator que la biblioteca Zxing recomienda, puede utilizar algunos de estos puertos.

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

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

¡Uso el primero y funciona perfecto! Tiene un proyecto de muestra para probarlo

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

Recomiendo usar esta biblioteca: https://github.com/dm77/barcodescanner

Se necesitan todos los problemas de comstackción con los que te vas a encontrar tratando de integrar Xzing o Zbar directamente. Utiliza esas bibliotecas debajo de las cubiertas, pero las envuelve en una API muy simple de usar.

Barcode Detection ya está disponible en los servicios de Google Play . Laboratorio de código del proceso de configuración, aquí están los documentos de API y un proyecto de muestra .

Puede usar esta guía de inicio rápido http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ con un proyecto de ejemplo simple para crear aplicaciones de Android sin IntentIntegrator.