Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

He estado buscando para ver cómo agregar un escáner de código de barras para mi aplicación. ¿Hay ejemplos o cómo pueden hacer esto fácilmente?

¿Fue útil?

Solución

El proyecto ZXing proporciona una aplicación de lector de código de barras independiente que - a través del mecanismo intención de Android -. Se puede llamar otras aplicaciones que desean integrar el escaneo de código de barras

La forma más sencilla de hacerlo es llamar al SCAN Intent ZXing desde la aplicación, como esto :

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 pulsar el botón vinculado a mScan lanzaría directamente en la pantalla del escáner de código de barras ZXing (o choque 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 romper y simplificar las cosas para usted, tiene ZXing proporcionó una clase de utilidad que se podría integrar en su aplicación para hacer la instalación de ZXing más suave, redirigiendo al usuario a la Android Market si don 't lo hayan instalado.

Por último, si desea integrar el escaneo de código de barras directamente en su aplicación sin depender de que tenga instalada la aplicación ZXing separada, bueno, entonces se trata de un proyecto de código abierto y se puede hacerlo! :)


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

Paso a paso para la configuración ZXing 3.2.1 en Eclipse

  1. Descargar zxing-master.zip de " https://github.com/zxing/zxing "
  2. Descomprimir zxing-master.zip, utilizar Eclipse para importar proyecto "android" en ZXing-master
  3. Descargar núcleo-3.2.1.jar de " http : //repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ "
  4. Crear "libs" carpeta de proyecto "androide" y pegar cor-3.2.1.jar en la carpeta libs
  5. Haga clic en proyecto: elija "Propiedades" -> "compilador de Java" para cambiar el nivel de 1,7. A continuación, haga clic en el cambio "Android" "tipo de generación de proyectos" a Android 4.4.2+, porque el uso de 1,7 requiere compilar con Android 4.4
  6. Si "CameraConfigurationUtils.java" no existen en "ZXing-master / android / app / src / main / java / com / google / ZXing / cliente / android / cámara /". Puede copiarlo de "ZXing-master / android-core / src / / java / com / google / ZXing / cliente / android / cámara principal /" y pegar a su proyecto.
  7. limpieza y construcción del proyecto. Si su proyecto de presentación de error como "interruptor - caso", debe cambiar a "si - los demás".
  8. Completado. Limpieza y construcción del proyecto. Puede hacer clic en "parámetros fisico"> "Android"> Haga clic en "es" Bibliotecas a utilizar para su proyecto.

Otros consejos

He tenido un problema con la implementación del código hasta que encontré un sitio web (no puedo encontrar de nuevo en este momento) 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 que no reconocería ningún códigos de barras, y cuando he cambiado de.

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

a

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

Se trabajó mucho. Sólo un consejo para otros programadores novatos Android.

Uso de la proporcionada IntentInegrator es mejor. Se le permite a su pronta usuario instalar el escáner de código de barras si no lo tienen. También le permite personalizar los mensajes. La constante IntentIntegrator.REQUEST_CODE mantiene el valor del código de solicitud de la onActivityResult para comprobar si en la anterior si el bloque.

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

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

Le recomiendo usar esta biblioteca: https://github.com/dm77/barcodescanner

Toma todas las cuestiones de construcción locos que vas a correr en tratar de integrar Xzing o Zbar directamente. Utiliza las bibliotecas bajo las sábanas, pero los envuelve de una manera muy simple de usar la API.

Si desea incluir en su código y no utilizar el IntentIntegrator que la biblioteca ZXing recomienda, puede utilizar algunos de estos puertos:

Yo uso la primera, y funciona perfectamente! Tiene un proyecto de ejemplo para probarlo.

La detección de códigos de barras ya está disponible en Google Play servicios . laboratorio Código del proceso de instalación, aquí están los docs 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 proyecto ejemplo sencillo de construir aplicación Android sin IntentIntegrator.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top