Saltar al contenido

¿Cómo integrar Zxing Barcode Scanner sin instalar la aplicación zxing real (no se puede resolver el símbolo: .android.CaptureActivity)?

Ya no necesitas buscar más por todo internet porque has llegado al espacio perfecto, contamos con la respuesta que necesitas recibir y sin problemas.

Solución:

Aunque ya se ha respondido, me siento como una solución en profundidad para aquellos que quieran usar ZXing como una biblioteca sin usar ningún método de instalación automática como ANT.

ZXing es un proyecto de código abierto que le permite (como se describe en el sitio web de ZXing) usar sus funciones como una biblioteca de proyectos en lugar de forzar la instalación de aplicaciones de terceros en el dispositivo del usuario, en mi opinión, esta es la opción preferida para la mayoría de los proyectos.

Es importante señalar que esta forma es aceptable por los creadores y no violará ninguno de sus términos de uso, ya que no vamos a copiar su código sino simplemente a usarlo como biblioteca de nuestro proyecto.

El proceso general es este:

  1. Descargando el código fuente y el archivo central de ZXing.
  2. Importar el proyecto ZXing a cualquier entorno que desee (Eclipse / Studio)
  3. Definir el proyecto ZXing para que actúe como una biblioteca y corregir el código para cumplir con estos requisitos.
  4. Agregar ZXing a la ruta de construcción de su propio proyecto
  5. Agregar métodos ZXing según lo requiera su aplicación.

Aquí hay un procedimiento completamente detallado para aquellos que usan Eclipse (que también se puede implementar muy fácilmente para Studio):

Descarga del código fuente y el archivo principal de ZXing

  1. Vaya a la página del proyecto GitHub de ZXing (https://github.com/zxing/zxing) y haga clic en “Descargar zip”.
  2. Extraiga los archivos (recomiendo usar en algún lugar donde se encuentren la mayoría de las otras fuentes de su biblioteca)

Importando el proyecto ZXing a Eclipse

  1. Abra Eclipse.
  2. Haga clic en Archivo> Importar,> Android> “Código de Android existente en el espacio de trabajo”, desde la ventana de selección navegue hasta la carpeta donde extrajo el archivo zip ZXing y seleccione la carpeta “Android”. Eclipse ahora debería detectar que la carpeta contiene un proyecto llamado “captureActivity”, importe ese proyecto.
  3. Ahora debería ver la actividad de captura en su espacio de trabajo. Dependiendo de la versión de ZXing que tenga, es posible que deba asignar el archivo core.jar al proyecto ZXing, para verificar si este es el caso de su versión, abra la carpeta libs del proyecto captureActivity y verifique si el archivo core.jar existe, si no de lo que tiene que agregarlo usted mismo; de lo contrario, pase al siguiente capítulo.

    5.1. Para agregar el archivo core.jar, haga clic con el botón derecho en el proyecto captureActivity en el espacio de trabajo de Eclipse y seleccione Build path> configure build path

    5.2. En el menú lateral, seleccione Java Build Path y haga clic en la pestaña Bibliotecas.

    5.3.Haga clic en “Agregar archivos JAR externos” y navegue hasta donde exportó originalmente el zip ZXing.

    5.4. Ingrese a la carpeta principal y seleccione core.jar (el nombre puede diferir según la versión de ZXing) y haga clic en abrir

    5.5. Ahora debería ver core.jar en su lista de rutas de compilación, haga clic en la pestaña “Ordenar y exportar” y marque core.jar

Definiendo ZXing como una biblioteca y arreglando el código

  1. Si aún no está en la ventana de ruta de compilación, haga clic con el botón derecho en el proyecto captureActivity y seleccione Ruta de compilación> configurar ruta de compilación.
  2. En el menú lateral, seleccione Android y marque Es biblioteca, haga clic en Aceptar para salir de la ventana
  3. Ahora, dependiendo de la versión de ZXing que tenga, es posible que vea que Eclipse marca algunos de los archivos java que contienen errores, si este es el caso, tendrá que corregir el código para que coincida con la versión java de Android; de lo contrario, simplemente pase al siguiente capítulo.

    8.1. Abra cada archivo java roto en el editor y reemplace las declaraciones Switch rotas con una cadena de declaraciones If Else, esta es una parte molesta que conozco.

Agregue ZXing como biblioteca de su propio proyecto

  1. Si todo está bien ahora, captureActivity debería aparecer como cualquier carpeta de proyecto normal en su espacio de trabajo, ¡sin errores o en rojo! firmar. Para definir ZXing como una biblioteca en su propio proyecto, haga clic con el botón derecho en su proyecto en el espacio de trabajo y seleccione Ruta de construcción> Configurar ruta de construcción.
  2. En el menú lateral, seleccione Android. Haga clic en el botón Agregar en la parte inferior derecha de la ventana y desde la ventana seleccione captureActivity.
  3. Eso es todo, su proyecto ahora puede usar ZXing como una biblioteca independiente sin la necesidad de ninguna instalación de terceros.

Agregar los métodos de ZXing requeridos por su aplicación

Esta parte no es realmente una guía, sino simplemente lo que encontré útil para mis propias necesidades hasta ahora, los dos métodos que utilizo principalmente son estos:

Ejecutando el escáner y capturando un código QR:

Intent intent = new Intent(getApplicationContext(),CaptureActivity.class);
intent.setAction("com.google.zxing.client.android.SCAN");
intent.putExtra("SAVE_HISTORY", false);
startActivityForResult(intent, 0);

Recuperando los resultados del análisis en onActivityResult ():

if (requestCode == 0) 
if (resultCode == RESULT_OK) 
String contents = data.getStringExtra("SCAN_RESULT");
Log.d(TAG, "contents: " + contents);
 else if (resultCode == RESULT_CANCELED) 
// Handle cancel
Log.d(TAG, "RESULT_CANCELED");


Tenga en cuenta que, al igual que cualquier otra actividad en la actividad de captura de Android, también debe definirse en el manifiesto del proyecto, también tenga en cuenta que debe otorgarle permiso al proyecto para usar la cámara de esta manera:




Espero que esto ayude a otros a ahorrar unas buenas horas de investigación.

Como bono adicional, recomiendo leer: https://biocram.wordpress.com/2013/06/11/integrate-zxing-as-a-library-inside-an-android-project/

Como todas las respuestas que encontré hasta ahora se basan en Eclipse y están bastante anticuadas a partir de ahora, agrego mi respuesta para agregar ZXing como una biblioteca independiente en Android Studio (2.1.2).

Puse el proyecto compilado en Github https://github.com/tarun0/ZXing-Standalone-library Simplemente agregue el zxing_standalone módulo en su proyecto y estará listo para comenzar. Para obtener detalles o compilarlo para las versiones más recientes, continúe leyendo.

Puede parecer un procedimiento largo, pero una vez que lo hagas, lo encontrarás bastante fácil y corto.

  1. Descargue el código fuente de la biblioteca ZXing de https://github.com/zxing/zxing/ Solo necesitaremos el android directorio de este. Entonces, si ya tiene esta carpeta, no necesita descargar toda la rama, que tiene un tamaño de aproximadamente 126 MB.
  2. Descarga la última core-x.x.x.jar de http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/
  3. Agregue el proyecto de Android en su propio proyecto. Para hacer esto, primero, elija el Project desde el Project Explorer(refiérase a la imagen)

ingrese la descripción de la imagen aquí

  1. Ahora haga clic en su proyecto y luego haga clic derecho y seleccione New>Module>Import Gradle Project. Ahora, en seleccione el android directorio del código fuente descargado (en el paso 1). (Imagen de referencia a continuación para el novato absoluto). Opcionalmente, cambie el nombre y deje la configuración predeterminada para la importación.
    ingrese la descripción de la imagen aquí
  2. En este proyecto importado, crea una carpeta libs y poner el core.jar archivo descargado en el paso 2 en esta carpeta. Entonces abre Project Structure en el menú de archivo y agregue esto core.jar archivo como una dependencia.

ingrese la descripción de la imagen aquíEn el paso 2, seleccione <code>Add file dependency</code>“src =” https://i.stack.imgur.com/Dn1rc.png “/></p>
<ol start=

  • Descarga CameraConfigurationalUtils.java y pégalo en el proyecto.
    ingrese la descripción de la imagen aquí

  • Ahora realice algunas modificaciones en el archivo gradle del proyecto importado. Cambiar el apply plugin: 'com.android.application' para apply plugin: 'com.android.library' para decirle al sistema que es una biblioteca. Y quita el applicationId ... declaración.

  • En el proyecto importado Manifest.xml archivo, realice las siguientes modificaciones. En el etiqueta, quitar la android:icon... y android:logo...y quita esto del filtro de intención, ya que ahora es una biblioteca y no se supone que esté en el lanzador (si no elimina esto, terminará teniendo dos actividades del lanzador).

  • En tu proyecto build.gradle archivo, en el dependencies bloquear, agregar esta línea compile project (':android') Aquí, reemplace el android con el nombre que eligió al importar el proyecto en el paso 4. Sincronice y limpie el proyecto. Verás algunos errores en switch declaraciones. Haga clic en esos casos de interruptor y seleccione la opción replace with if opción proporcionada por Android Studio.

  • Eso es todo. Ahora puede usar la biblioteca ZXing en su propia aplicación. 🙂

    Para usar la biblioteca agregada, simplemente use el Intents como se indica en la primera respuesta anterior (copiando solo los mismos códigos):

    Mientras escanea (como al hacer clic en un botón), envíe Intent:

    Intent intent = new Intent(getApplicationContext(),CaptureActivity.class);
    intent.setAction("com.google.zxing.client.android.SCAN");
    intent.putExtra("SAVE_HISTORY", false);
    startActivityForResult(intent, 0);
    

    Entonces, en OnActivityResult:

    if (requestCode == 0) 
    if (resultCode == RESULT_OK) 
    String contents = data.getStringExtra("SCAN_RESULT");
    Log.d(TAG, "contents: " + contents);
     else if (resultCode == RESULT_CANCELED) 
    // Handle cancel
    Log.d(TAG, "RESULT_CANCELED");
    
    
    

    Intenté ser lo más descriptivo posible. Espero que la gente lo encuentre útil.

    Lea esta respuesta de uno de los autores del código con respecto a la copia del código en su propia aplicación: https://stackoverflow.com/a/9942761

    Referencias: https://stackoverflow.com/a/29818279 https://stackoverflow.com/a/29960361 Y algunos otros blogs / respuestas SO.

    No sé por qué sucedió, pero finalmente utilizo otra biblioteca. Utilizo Zxing-android-minimal y un tutorial de aquí y aquí. Ahora funciona.

    valoraciones y reseñas

    Si piensas que ha sido de provecho este artículo, sería de mucha ayuda si lo compartieras con más juniors y nos ayudes a extender esta información.

    ¡Haz clic para puntuar esta entrada!
    (Votos: 0 Promedio: 0)



    Utiliza Nuestro Buscador

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *