¿Cuál es la forma preferida de incrustar la biblioteca zxing para proporcionar escaneo sin tener instalada la aplicación Barcode Scanner? Estoy buscando incrustarlo en Android sin tener que solicitar al usuario ninguna instalación adicional. (Similar a la forma en que funciona el iPhone src).Incrustar biblioteca Zxing sin utilizar la aplicación Barcode Scanner
Respuesta
Es realmente más fácil integrar solo a través de Intent. Más confiable, y obtienes actualizaciones automáticamente. Si bien no lo aconsejo ...
El código fuente completo está disponible en el proyecto ZXing. Desea compilar core.jar
desde core/
y colocarlo en su carpeta Android lib/
para incluir el decodificador central en su aplicación. No desea incluir javase
. Puede consultar el código en android/
ya que es la fuente de Barcode Scanner, pero como autores le sugerimos que no solo copie y pegue.
Es Apache licensed lo que significa que puede usarlo libremente, siempre y cuando esencialmente le dé acceso al usuario a los términos de la licencia.
¿No tendría sentido tener una versión de la biblioteca de Android? A veces, pedirle a los usuarios que descarguen una aplicación de terceros simplemente no es una solución ... – MasterScrat
Ya existe una solución de biblioteca: 'core.jar'. Toda la aplicación de Android también está disponible para su reutilización (y algunas veces se copia sin ética). No estoy seguro de qué puede ser más fácil. –
Hay un * lote * de código específico de Android fuera de core.jar. Creo que MasterScrat estaba pidiendo un proyecto de biblioteca * Android *. Algo que le daría puntos de vista y soporte de cámara, etc., sin todo lo que necesita BarcodeScanner. – pforhan
Android QR/Barcode/Multiformat Decoder.
He creado una aplicación de Android utilizando las API de ZXing e incrustado solo el código de decodificació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:
En primer lugar, he creado un (emulador) AVD versión 4 en mi IDE Eclipse con la tarjeta SD y funciones de la cámara encendida.
A continuación, he creado una tarjeta SD usando 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 tengo created..This se guardarán en la C: unidad. Tenga en cuenta que la parte .iso es importante.
A continuación, se tiene que montar la tarjeta SD en el emulador usando los siguientes comandos en el símbolo del sistema:
c:\>emulator -sdcard "c:\mysdcard.iso" @myavd4
Aquí myavd4 es el nombre del dispositivo virtual emulador/android que creé 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 volver a hacer los 3 pasos anteriores.
Podemos empujar el código QR o resto de imágenes de código que tenemos que esta tarjeta SD montada en nuestro emulador mediante el uso de los siguientes comandos en el símbolo del sistema:
c:\>adb push "c:\myqrcode.png" /sdcard
A continuación, en el Eclipse IDE, inicia un nuevo proyecto de Android. El código siguiente debe pegarse 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); } }
A continuación he descargado el código fuente ZXing (ZXing-1.6.zip) desde el siguiente enlace.
http://code.google.com/p/zxing/downloads/list
A continuación, extraer este y vaya a D: \ ZXing-1.6 \ core \ src \ com
copiar la carpeta com y pegarlo en nuestro paquete en Eclipse.
(Nota, haga clic derecho sobre el paquete de nuestro proyecto y pegar ... si pide reemplazar la carpeta existente, seleccione sí)
A continuación, copia y pega el código de abajo en la res /layout/main.xml presentar
<?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>
a continuación, copia y pega el siguiente código en el archivo res/valores/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>
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>
A continuación, copia y pega 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" />
Por lo tanto, estos pasos anteriores realizados ... nuestra aplicación está lista. Ahora puede ejecutar la aplicación y le dará el resultado decodificado de la imagen de entrada que le hemos dado.
Para cambiar la entrada, empujar otro archivo en la tarjeta SD usando el siguiente comando en el símbolo del sistema
c:\>adb push "c:\image2.png" /sdcard
y cambie la entrada en nuestro QRDecoder.java para reflejar el mismo
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/image.png");
las entradas pueden ser de cualquier formato, como QRCode, Barcode, etc. ... los tipos de imagen pueden ser bmp, jpg o png.
he utilizado el sitio web a continuación para generar los códigos QR para el propósito de la prueba
Gracias y me gustaría mencionar el punto de que sólo soy un principiante en el androide y desarrollo de aplicaciones móviles y lo siento por cualquier error que podría haber hecho ...
Gran descripción. Realmente me ayudó a poner en funcionamiento mi lector de código de barras. ¡Gracias! – Betaminos
Yo mismo probé este método y, sobre todo, parecía funcionar.
Aunque tengo algunos puntos para hacer
Se quejan de la com.google.zxing.client.androidtest paquete que se necesita para la clase RGBLuminanceSource encuentra en el paquete y se utiliza en la QRDecoder Activity.So importa el paquete zxing/androidtest también.
Si está agregando la Biblioteca Zxing fuera de su paquete, deberá editar todas las referencias R.java, ya que no encontrará el archivo R.java en su paquete.
Por ejemplo:
En lugar de
mRunBenchmarkButton = (Button) findViewById(R.id.benchmark_run);
en el archivo de uso BenchmarkActivity.java
mRunBenchmarkButton = (Button) findViewById(yourpackage.R.id.benchmark_run);
También podemos utilizar la interfaz DDMS de Eclipse para empujar el Código QR a la tarjeta SD del dispositivo.
Me trataron de integrar ZXing (Xzing) por un tiempo, hasta que descubrí Zbar. Tienen una manera fácil de incorporar, menos código y ejemplos fáciles.
ZBar no se ha actualizado en más de un año. – CodyBugstein
ZBar no se ha actualizado desde febrero de 2013. –
Si están siguiendo respuesta Palani y sólo desea importar ZXing núcleo. Aquí se explica cómo puede usar 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();
}
Sí, eso es lo que mostré aquí en lugar de usar RGBLuminanceSource de com.google.zxing.client.androidtest, como en la respuesta de Palani, que tiene diferentes parámetros. –
Vaya, leí mal entonces. –
Now puede utilizar el official Barcode API from Google:
La API de código de barras detecta 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, Código-39, Código 93, Código 128, ITF, codabar
- códigos de barras 2D: Código QR, Data Matrix, PDF-417, azteca
Se analiza automáticamente los códigos QR, Data Matrix, PDF-417, y valores aztecas, para los siguientes formatos soportados:
- URL
- Información de contacto (VCARD, etc.)
- evento de calendario
- correo electrónico
- Teléfono
- SMS
- ISBN
- WiFi
- Geo-localización (latitud y longitud)
- licencia de conducir AAMVA/Identificación
¡Solo si su usuario tiene una conexión a Internet activa, no es adecuado para nuestro almacén! – dave
para usar esta aplicación de Google Play 7.8 es requerida. –
@dave: ¿has probado eso? La publicación dice específicamente "Importante, todo el análisis de códigos de barras se hace localmente", y [el codelab] (https://codelabs.developers.google.com/codelabs/bar-codes/#0) menciona específicamente "Importante, todo el código de barras el análisis se realiza localmente, por lo que no es necesario realizar un viaje de ida y vuelta del servidor para leer los datos del código. " –
https://github.com/dm77/barcodescanner
Preferí esta lib sobre los servicios de Google Play porque, como de costumbre, Google Play Services requiere la misma versión instalada en el dispositivo.
Incorpora Zxing con el nuevo sistema de compilación y proporciona un aar. Realmente genial.
- 1. ZXing Barcode Scanner for Webapps
- 2. Phonegap Barcode Scanner
- 3. Implementación de Barcode Scanner en Java
- 4. ZXing en Android PDF417
- 5. Falta el paquete com.google.zxing en la biblioteca de códigos de barras de Zxing para Android
- 6. ZXing Barcode Reader: ¿Cómo hacer un borde personalizado alrededor de la pantalla de captura?
- 7. ZXing Android Generar código de barras 1D
- 8. zxing integración en la aplicación de monodroid
- 9. si hay algún tutorial para la biblioteca zxing de Android con Fragmentos
- 10. Windows Phone 7 ¿Biblioteca o capacidad de escaneo BarCode?
- 11. ¿Cómo integrar Zxing sin instalar la aplicación de escáner de código de barras?
- 12. Obtención de un error de la cámara en la aplicación de código de barras Zxing
- 13. BarCode Image Generator en Java
- 14. PHP Barcode Image Generator
- 15. Error en Switch casos del proyecto ZXing en android
- 16. escáner de código QR ZXing sin necesidad de instalar escáner de código de barras
- 17. Cómo usar ZXing C# Puerto
- 18. ¿Cómo mejorar HBase Scanner?
- 19. ¿Incluye un escáner de código de barras en la aplicación web móvil sin ser nativo?
- 20. Pregunta de Java Scanner
- 21. Cómo incrustar iPhone-Wax en la aplicación
- 22. ¿Incrustar V8 en la aplicación OpenCL?
- 23. Incrustar la aplicación XULRunner en Java
- 24. símbolo externo sin resolver "_hypot" al utilizar biblioteca estática
- 25. Incrustar Python en una aplicación de iPhone
- 26. Zxing en Android: Eclipse
- 27. zxing escáner de código de barras en un div fijo en la aplicación para Android phonegap
- 28. ¿Cómo usar Zxing en modo vertical?
- 29. ¿Incrustar Java en una aplicación C++?
- 30. Cómo utilizar OpenSSL en la biblioteca POCO C++ correctamente
Descargue los componentes core y javase e incrústelos, tal vez. –
Pero, necesita ver la licencia y ver qué puede hacer, si puede simplemente incluirla en su programa. –