Uso de ZXing para crear una aplicación de escaneo de códigos de barras android [duplicar]


Esta pregunta ya tiene una respuesta aquí:

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 hacerlo fácilmente?

Author: ROMANIA_engineer, 2010-01-12

7 answers

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 llamada por otras aplicaciones que deseen integrar el escaneo de códigos de barras.

La forma más fácil de hacer esto es llamar al ZXing SCAN Intent de su solicitud, 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 iniciaría directamente en la pantalla del escáner de código 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 contents.

Para evitar el bloqueo y simplificar las cosas para usted, ZXing ha proporcionado una clase de utilidad que podría 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.

Finalmente, si desea integrar el escaneo de códigos de barras directamente en su aplicación sin depender de tener el ZXing separado aplicación instalada, bueno, entonces es un proyecto de código abierto y usted puede hacerlo! :)


Edit: Alguien editó esta guía en esta respuesta (suena un poco extraño, no puedo responder en cuanto a 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 from " https://github.com/zxing/zxing "
  2. Descomprimir zxing-master.zip, Utilice eclipse para importar proyecto "android" en zxing-master
  3. Descargar core-3.2.1.jar from " http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
  4. Cree la carpeta "libs" en el proyecto "android" y pegue cor-3.2.1.jar en la carpeta libs
  5. Haga clic en proyecto: elija "propiedades" -> "Compilador Java" 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 compilar 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 pegarlo en su proyecto.
  7. Proyecto de limpieza y construcción. Si su proyecto muestra un error sobre "switch - case", debe cambiarlo a "if - else".
  8. Terminado. Proyecto de limpieza y construcción. Puede hacer clic en "Propiedades" > "Android" > haga clic en "Es Bibliotecas " para usar en tu proyecto.
 207
Author: Christopher Orr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-05 11:06:12

Tuve un problema con la implimentación del código hasta que encontré un sitio web (no puedo encontrarlo de nuevo en este momento) que explicaba que necesita incluir el nombre del paquete en el nombre de la intent.putExtra.

Se tire hacia arriba 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. Solo un consejo para cualquier otro programador andorid novato.

 41
Author: user496827,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-04 05:47:28

Usar el IntentInegrator proporcionado es mejor. Le permite solicitar a su usuario que instale el escáner de código de barras si no lo tienen. También le permite personalizar los mensajes. El IntentIntegrator.La constante REQUEST_CODE contiene el valor del código de solicitud para que el onActivityResult se compruebe 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

 22
Author: Yack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-04 19:40:31

Si desea incluir en su código y no utilizar 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 /

Utilizo el primero y funciona perfecto! Tiene un proyecto de ejemplo para probarlo

 11
Author: Aracem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-12 11:42:30

Usar Zxing de esta manera requiere que el usuario también instale la aplicación barcode scanner, lo cual no es ideal. Lo que probablemente quieras es agrupar Zxing en tu aplicación directamente.

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

Toma todos los problemas de compilación locos que te vas a encontrar tratando de integrar Xzing o Zbar directamente. Utiliza esas bibliotecas bajo las portadas, pero las envuelve en una API muy simple de usar.

 9
Author: Michael Peterson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-14 21:49:53

La detección de códigos de barras ya está disponible en Google Play services. Code labdel proceso de configuración, aquí están los documentos de la api y un proyecto de ejemplo .

 5
Author: Jim Baca,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-22 14:10:30

Puede utilizar 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 construir una aplicación Android sin IntentIntegrator.

 3
Author: shyyko.serhiy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-06 09:02:21