Sei sulla pagina 1di 8

Zxing

1.- descarga la librera zxing de la paguina oficial https://code.google.com/p/zxing/downloads/list Configurar como librera. Generador de qr zxing.appspot.com, personalizados www.unitaglive.com

Configurar como librera


En esta gua se usa el IDE Eclipse versin 4.2 Juno con el complemento ADT 20.0.3 y Android SDK 20.0.3. Una vez descargado el archivo tenemos el cdigo fuente de la aplicacin Barcode Scanner (no como librera). Si queremos usarla como una libreria y usarla sin depender de la aplicacin Barcode Scanner (si no hacemos esto podemos usar el integrador para poder depender de la aplicacin) seguiremos los siguientes pasos:

1. Extraer el contenido del archivo descargado. 2. Importar el proyecto que esta dentro de la carpeta "android" (es la aplicacin Barcode
Scanner) del archivo que extrajimos, como se lo muestra en el grfico.

3. Corregimos errores que se presentan al importar el proyecto.


- Cambiamos la versin del compilador Java, Eclipse por defecto lo mantiene en 1.5 y el proyecto esta escrita en 1.6, para ello clic derecho en el proyecto y luego Properties, ir al apartado de Java Compiler luego cambiar la opcin de Compiler compliance

level a 1.6, clic en OK, posteriormente nos pedir si deseamos volver a construir el proyecto, hacemos clic en Yes.

- Copiamos el archivo core.jar dentro de la carpeta libs del proyecto, el archivo se encuentra en el sitio donde extrajimos el contenido del .zip dentro de la carpeta core.

- Convertimos el proyecto como librera para poder ser usado en nuestro proyecto.

- Una vez que se consiga volver librera el proyecto tendremos nuevos errores debido a los atributos de unas variables, si no aparecen aun los errores intenta limpiar el proyecto (Project>Clean...), esto porque tarde o temprano aparecern y nos dar error justo en las estructuras switch de 3 clases lo nico que hay que hacer es reemplazarlo por su equivalente en ifs, eso se lo puede hacer de forma automtica para ello nos colocamos sobre los switch y presionamos Ctrl+1 (o Cmd+1 en Mac), tal como lo podemos ver aqu. Con esas correcciones no deberamos tener errores, aunque es probable que sigan apareciendo debido al nivel de API en la que esta el proyecto, ZXing es compatible desde la versin 2.1 para adelante, los posibles errores pueden ser: - Errores en atributos en el archivo AndroidManifest.xml, para solucionarlo simplemente elimine las etiquetas. Hasta el momento ya tenemos el proyecto como librera lista para su uso.

Integrar ZXing a un proyecto Android

La idea de poder integrar ZXing a nuestro proyecto es la de no tener que depender de la aplicacin Barcode Scanner y hacer que nuestra aplicacin sola capture los cdigos.

1. Vamos a las propiedades de nuestro proyecto (si no se tiene uno, pues lo creamos),
eso es Clic derecho en el proyecto luego Properties, nos vamos a la seccin Android y en la parte inferior adicionamos una librera con el botn Add... y ah aparecer nuestra librera recin configurada, la seleccionamos y presionamos OK.

2. Pedimos permiso de usar la cmara en el AndroidManifest.xml.

3. Registramos una activity en el AndroidManifest.xml la que usaremos de la librera,


dentro del AndroidManifest.xml colocar las siguientes lineas donde estn las activities, no olvidar cambiar la parte que dice "nombre.de.mi.paquete.SCAN" por el nombre de nuestro paquete seguido del .SCAN.

<activity android:name="com.google.zxing.client.android.CaptureActivity" android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden" android:screenOrientation="landscape" android:stateNotNeeded="true" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <intent-filter> <action android:name="nombre.de.mi.paquete.SCAN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>

4. Tenemos de des-habilitar el men de la activity que estamos usando de la librera, ya


que es una activity ajena a nuestra aplicacin, para ello nos dirigimos a la clase CaptureActivity.java de la librera que esta en el paquete com.google.zxing.client.android y comentamos los siguientes mtodos para que no funcionen. onCreateOptionsMenu(Menu menu) onPrepareOptionsMenu(Menu menu) onOptionsItemSelected(MenuItem item)

5. El nombre de nuestra aplicacin usa el nombre de la aplicacin de la librera, para


solucionar eso simplemente podemos crearnos una nueva cadena en el archivo res/values/strings.xml con otro nombre de variable y nuestro nombre, por ejemplo: <string name="nombre_app">Mi Aplicacin</string> Luego ponemos esa cadena como nombre de nuestra aplicacin en el archivo AndroidManifest.xml.

6. Si nosotros ademas de nuestra aplicacin tuviramos instalado en nuestro dispositivo


el Barcode Scanner u otro cada que queramos obtener un cdigo nos dar la opcin de seleccionar con que aplicacin deseamos capturar, eso es algo molesto pues ya tenemos nuestra aplicacin para que haga eso, para que no aparezca el dialogo con las opciones y use directamente la nuestra haremos lo siguiente:

Dentro del archivo Intents.java del paquete com.google.zxing.client.android de la librera, buscamos el valor del primer String ACTION (de la clase Scan), cambiamos el valor de "com.google.zxing.client.android.SCAN" por "nombre.de.mi.paquete.S CAN" (nombre del paquete de nuestra aplicacin). Dentro del archivo AndroidManifest.xml de la librera cambiar el valor del nombre del atributo action delintent-filter, cambiamos el valor de "com.google.zxing.client.android.SCAN"por "nombre.de.mi.paquete.S CAN" (nombre del paquete de nuestra aplicacin). Con eso ya tenemos configurada nuestra aplicacin y ya podemos usarla sin ningn problema.

Leer cdigos con ZXing


Una vez configurada la librera e integrada con nuestro proyecto el modo de uso es sencillo, cuando se quiera llamar a la pantalla de captura se lo hace de la siguiente forma: Intent intent = new Intent("nombre.de.mi.paquete.SCAN"); startActivityForResult(intent, 0); Opcional mente se puede mandar un extra para especificar que tipo de cdigo leeremos, por ejemplo si queremos leer solamente cdigos QR. intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); Para obtener los resultados obtenidos despus de capturar, dentro de la activity en donde estamos manejando. public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 0) { if (resultCode == RESULT_OK) {

String contenido = intent.getStringExtra("SCAN_RESULT"); String formato = intent.getStringExtra("SCAN_RESULT_FORMAT"); // Hacer algo con los datos obtenidos. } else if (resultCode == RESULT_CANCELED) { // Si se cancelo la captura. } } } Con eso ya podemos usar la librera ZXing para capturar cdigos, el siguiente paso es generar cdigos que tambin se lo puede hacer con esta fantstica librera.

Generar cdigos con ZXing


Para poder generar un cdigo QR y mostrarla en otra Activity solamente hay que hacer uso de un Intent, sin realizar otras configuraciones Intent intent = new Intent("com.google.zxing.client.android.ENCODE"); intent.putExtra("ENCODE_TYPE", "TEXT_TYPE"); intent.putExtra("ENCODE_DATA", "Hola ZOMWI!!!"); startActivity(intent); Lo que har este cdigo es mostrar en otra activity la imagen del cdigo QR generado que almacena el texto "Hola ZOMWI!!!".

Podemos reemplazar el tipo de QR colocando en vez de "TEXT_TYPE", EMAIL_TYPE, PHONE_TYPE, SMS_TYPE u otro colocando su respectivo dato para la generacin. Cualquier duda o consulta pueden hacerla en los comentarios, estar gustoso en responder si desean mas ejemplos o algo concreto.

Potrebbero piacerti anche