Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Incorporar la biblioteca Zxing sin utilizar la aplicación Scanner de códigos de barras

¿Cuál es la forma preferida de integrar la biblioteca zxing para proporcionar escaneado sin tener instalada la aplicación Barcode Scanner? Estoy buscando para incrustarlo en Android sin tener que pedir al usuario para cualquier instalación adicional. (Similar a la forma en que funciona el iPhone src).

  • Java.util.zip.ZipException: entrada duplicada
  • EXCEPCIÓN INESPERADA DE SUPERIOR NIVEL: com.android.dex.DexException
  • Incorporación de ZXing en la aplicación de Android
  • Integre ZXing en Android Studio
  • Integración de la biblioteca de ZXing directamente en mi aplicación de Android
  • Actualizar sdk tiene NoClassDefFoundError para zxing
  • Uso de ZXing para crear una aplicación de escaneo de códigos de barras Android
  • ¿Cómo incluir la biblioteca Zxing en el proyecto android?
  • 7 Solutions collect form web for “Incorporar la biblioteca Zxing sin utilizar la aplicación Scanner de códigos de barras”

    Es realmente más fácil integrarse a través de Intent . Más fiable, y obtendrá actualizaciones automáticamente. Aunque no lo aconsejo …

    El código fuente completo está disponible en el proyecto ZXing . Desea crear core.jar desde core/ y ponerlo en su lib/ Android para incluir el decodificador core en su aplicación. Usted no quiere incluir javase . Usted puede mirar el código en android/ como es la fuente de Barcode Scanner, pero como los autores sugerimos que no sólo copiar y pegar.

    Es una licencia de Apache, lo que significa que puedes usarla libremente, siempre y cuando, esencialmente, otorgues al usuario acceso a los términos de la licencia.

    Android QR / Barcode / Multiformat Decoder.

    He hecho una aplicación de Android utilizando las API de ZXing e incrustado sólo el código de descodificación en mi aplicación. La entrada a este decodificador se dio a través de la tarjeta SD del emulador de Android.

    Estos son los pasos:

    1. Primero, creé una versión 4 de AVD (emulador) en mi Eclipse IDE con las funciones SDcard y Camera activadas.

    2. A continuación, he creado una tarjeta SD con los siguientes comandos en el símbolo del sistema:

       c:\>mksdcard 40M mysdcard.iso 

    Donde 40M es el tamaño de la tarjeta SD que he creado .. Esto se guardará en la unidad C :. Tenga en cuenta que la parte .iso es importante.

    1. A continuación, tenemos que montar la tarjeta SD en el emulador utilizando los siguientes comandos en el símbolo del sistema:

        c:\>emulator -sdcard "c:\mysdcard.iso" @myavd4 

    Aquí myavd4 es el nombre del emulador / dispositivo virtual android que he creado en el paso 1. El signo '@' antes del nombre avd también es importante.

    Mantenga el emulador funcionando todo el tiempo .. Si se cierra, tenemos que rehacer los 3 pasos anteriores.

    1. Podemos empujar el código QR u otras imágenes de código que tenemos a esta tarjeta SD montada en nuestro emulador usando los siguientes comandos en el símbolo del sistema:

       c:\>adb push "c:\myqrcode.png" /sdcard 
    2. A continuación, en el Eclipse IDE, inicie un nuevo proyecto android. El código siguiente debe ser pegado en el archivo QRDecoder.java de nuestro proyecto.

       package com.example.palani; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; import com.google.zxing.BarcodeFormat; import com.google.zxing.BinaryBitmap; import com.google.zxing.ChecksumException; import com.google.zxing.FormatException; import com.google.zxing.LuminanceSource; import com.google.zxing.MultiFormatReader; import com.google.zxing.NotFoundException; import com.google.zxing.Reader; import com.google.zxing.Result; import com.google.zxing.ResultPoint; import com.google.zxing.client.androidtest.RGBLuminanceSource; import com.google.zxing.common.HybridBinarizer; public class QRDecoder extends Activity implements OnClickListener { public static class Global { public static String text=null; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bitmap bMap = BitmapFactory.decodeFile("/sdcard/myqrcode.png"); TextView textv = (TextView) findViewById(R.id.mytext); View webbutton=findViewById(R.id.webbutton); LuminanceSource source = new RGBLuminanceSource(bMap); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Reader reader = new MultiFormatReader(); try { Result result = reader.decode(bitmap); Global.text = result.getText(); byte[] rawBytes = result.getRawBytes(); BarcodeFormat format = result.getBarcodeFormat(); ResultPoint[] points = result.getResultPoints(); textv.setText(Global.text); webbutton.setOnClickListener(this); } catch (NotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ChecksumException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void onClick(View v) { Uri uri = Uri.parse(Global.text); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } } 
    3. Luego descargé el código fuente de ZXing (ZXing-1.6.zip) del siguiente enlace.

       http://code.google.com/p/zxing/downloads/list 

    A continuación, extraiga esto y vaya a D: \ zxing-1.6 \ core \ src \ com

    Copie la carpeta com y péguela en nuestro paquete en Eclipse.

    (Nota, haga clic derecho en el paquete de nuestro proyecto y pegar … si pide la sustitución de la carpeta existente, seleccione Sí)

    1. A continuación, copie y pegue el siguiente código en el archivo res / layout / main.xml

       <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="20dip" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/mbackground1" android:gravity="center_horizontal" android:text="@string/decode_label" android:padding="20dip" /> <TextView android:id="@+id/mytext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:background="@color/mbackground2" android:textColor="@color/mytextcolor" android:padding="20dip" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/continue_label" android:gravity="center_horizontal" android:textColor="@color/mytextcolor" android:padding="20dip" /> <Button android:id="@+id/webbutton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/web_button" android:textColor="@color/mytextcolor" /> </LinearLayout> 
    2. A continuación, copie y pegue el siguiente código en el archivo res / values ​​/ strings.xml

       <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, QRDecoder!</string> <string name="app_name">QRDecoder</string> <string name="continue_label">Click below to load the URL!!</string> <string name="web_button">Load the URL!!</string> <string name="decode_label">Decoded URL</string> </resources> 
    3. A continuación, copie y pegue el siguiente código en el archivo res / values ​​/ color.xml, si no existe, cree uno.

       <?xml version="1.0" encoding="utf-8"?> <resources> <color name="mbackground1">#7cfc00</color> <color name="mbackground2">#ffff00</color> <color name="mytextcolor">#d2691e</color> </resources> 
    4. A continuación, copie y pegue el siguiente código en el archivo de manifiesto después de la etiqueta de apertura

       <manifest> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    5. Por lo tanto, estos pasos anteriores realizados … nuestra aplicación está lista. Ahora, u puede ejecutar la aplicación y le dará u el resultado decodificado de la imagen de entrada que hemos dado.

    6. Para cambiar la entrada, empuje otro archivo a la tarjeta SD utilizando el siguiente comando en el símbolo del sistema

       c:\>adb push "c:\image2.png" /sdcard 

    Y cambiar la entrada en nuestro QRDecoder.java para reflejar el mismo

      Bitmap bMap = BitmapFactory.decodeFile("/sdcard/image.png"); 

    Las entradas pueden ser cualquier formato como QRCode, código de barras, etc …. los tipos de imagen puede ser bmp, jpg o png.

    He utilizado el sitio web a continuación para generar los códigos QR para fines de prueba

    http://barcode.tec-it.com/

    Y http://qrcode.kaywa.com

    Gracias y me gustaría mencionar el punto de que soy sólo un principiante en Android y desarrollo de aplicaciones móviles y lo siento por cualquier error que podría haber hecho …

    Si están siguiendo Palani respuesta y sólo quieren importar zxing núcleo. Aquí es cómo puede utilizar RGBLuminanceSource sin importar zxing.androidtest .

     // import com.google.zxing.client.androidtest.RGBLuminanceSource; import com.google.zxing.RGBLuminanceSource; // Bitmap mBitmap; // some bitmap... int width = mBitmap.getWidth(); int height = mBitmap.getHeight(); int[] pixels = new int[width * height]; mBitmap.getPixels(pixels, 0, width, 0, 0, width, height); RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels); BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source)); try { Result result = zxingReader.decode(binaryBitmap); } catch (Exception e) { e.printStackTrace(); } 

    Ahora puedes usar la API de código de barras oficial de Google :

    La API de código de barras detecta los códigos de barras en tiempo real, en el dispositivo, en cualquier orientación. También puede detectar múltiples códigos de barras a la vez.

    Lee los siguientes formatos de código de barras:

    • Códigos de barras 1D: EAN-13, EAN-8, UPC-A, UPC-E, Code-39, Code-93, Code-128, ITF, Codabar
    • Códigos de barras 2D: Código QR, Data Matrix, PDF-417, AZTEC

    Analiza automáticamente los códigos QR, Data Matrix, PDF-417 y Aztec, para los siguientes formatos compatibles:

    • URL
    • Información de contacto (VCARD, etc.)
    • Evento del calendario
    • Email
    • Teléfono
    • SMS
    • ISBN
    • Wifi
    • Geo-ubicación (latitud y longitud)
    • Licencia de conducir AAMVA / ID

    Yo mismo probé este método y, sobre todo, parecía funcionar.

    Aunque tengo algunos puntos que hacer

    1. Se quejará del paquete com.google.zxing.client.androidtest que es necesario para la clase RGBLuminanceSource que se encuentra en el paquete y que se utiliza en la actividad QRDecoder Activity.So también el paquete zxing / androidtest.

    2. Si está agregando la biblioteca de Zxing fuera de su paquete entonces usted necesitará corregir todas las referencias de R.java puesto que no encontrará el archivo de R.java en su paquete.

    Por ejemplo:

    En lugar de

     mRunBenchmarkButton = (Button) findViewById(R.id.benchmark_run); 

    En el uso del archivo BenchmarkActivity.java

     mRunBenchmarkButton = (Button) findViewById(yourpackage.R.id.benchmark_run); 

    También podemos usar la interfaz DDMS de Eclipse para empujar el QRCode al dispositivo SDCard.

    Uso de DDMS

    https://github.com/dm77/barcodescanner

    Preferí esta librería sobre Google Play Services porque, como de costumbre, Google Play Services requiere la misma versión instalada en el dispositivo.

    Incorpora Zxing con el nuevo sistema de construcción y proporciona un aar. Realmente genial.

    Intenté incrustar ZXing (XZing) por un tiempo, hasta que descubrí Zbar. Tienen una forma más fácil de incrustar, menos código y ejemplos fáciles.

    http://sourceforge.net/projects/zbar/

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.