domingo, 23 de octubre de 2011

zXing - Librería Java para procesado de códigos 1D/2D

Si queréis trastear con códigos de este tipo, por lo que llevo visto esta librería esta bastante bien.

zXing - Zebra Crossing
Obtener librería zXing

Para bajarse el código de la librería, lo mejor es hacerlo a través del repositorio svn de google code del proyecto, usando un cliente como Subversive desde Eclipse, si no sabéis lo que es y demás, consultad este tutorial que hice para instalarlo y configurarlo.

Hay que crear un nuevo repositorio a través de la vista de repositorios pinchando en el cilindro con el + verde y añadir de URL la siguiente dirección http://zxing.googlecode.com/svn/.

Si no tienes activa la vista de repositorios, Window>Show View>Other>Svn>SVN Repositories.

Arriba a la derecha el botón de añadir repositorio

Ahora nos saldrá el repositorio en la vista de repositorios y tenemos que pinchar con el botón derecho en él y hacer un check out, así nos bajará todo el código en un nuevo proyecto que se llamará svn.




EDITO src=Zoack xD: Con esta forma te bajas todo el proyecto completo, si quieres uno concreto, puedes acceder al trunk desde la vista de repositorios y bajarte de ahí el proyecto que quieras, en plan individual, o usando el asistente del eclipse con la opción de import>SVN>Project from SVN y eligiendo el repositorio y proyecto que te interese.

Obtener Proguard y Ant

Para compilar el código en android, hace falta bajarse 2 cosas: proguard y ant, ambas se usan desde la linea de comandos. La primera sirve para hacer más eficiente el código y la segunda para compilar proyectos java. La ventaja de usar ant como herramienta para scripts de compilación es que es multiplataforma, con lo que no tenemos que tener distintos archivos de compilación segun el SO en el que estemos.

Antes de nada, ant lo lleva el eclipse como plugin, el problema es que mi versión de eclipse usa la version 1.7.1 de ant, y para compilar lo de android se necesita la 1.8.0 o superior, por eso tuve que bajarmelo aparte.

Vista de Ant desde eclipse
Fallo de compilación por la versión 1.7.1
Descomprimis ambos programas y para usarlos hay que modificar algunas variables de entorno y archivos de la librería.

Configuración

En el proyecto svn del eclipse, en la carpeta trunk, buscad un archivo que se llama build.properties, ahí dentro hay que decirle donde tenemos instalado el proguard (la ruta del proguard.jar, que estará en la carpeta lib) y el SDK de android.

build.properties configurado
Las variables de entorno que hay que modificar/crear son, JAVA_HOME, ANT_HOME, CLASSPATH y el path.

Desde la configuración avanzada del equipo en windows 7, pinchando en variables de entorno y luego en el cuadro de abajo de Variables del sistema podremos hacerlo.

En la primera se pone la ruta del directorio donde este instalado el jdk, por ejemplo C:\JAVA\JDKS\jdk1.6.0_21.

La segunda igual pero donde se haya descomprimido el ant, por ejemplo: C:\JAVA\JDKS\apache-ant-1.8.2

En la tercera hay que dejarla vacia, poner solamente un ;  y listo.

Editando variables de entorno
Y en el path hay que añadir las 2 rutas de las carpetas bin (se ponen separado por un ; cada una), que serán algo asi:

C:\JAVA\JDKS\jdk1.6.0_21\bin

C:\JAVA\JDKS\apache-ant-1.8.2\bin

Con eso ya deberíamos poder compilar el código del proyecto que queramos.

Compilando y probando código

La librería zXing esta para muchos lenguajes, que si ActionScript, c++, ruby, etc... Nosotros vamos a probar la aplicación de línea de comandos CommandLineRunner, para equipos de sobremesa, que acepta una imagen/url y te la decodifica.

Para hacerlo, primero necesitamos compilar el core, así que nos vamos al cmd de windows y navegamos hasta la ruta del proyecto svn de eclipse y accedemos a la carpeta core, donde aparezca el archivo build.xml (usad el comando dir para verlo), este archivo lo usa ant para compilar, aseguraos que estáis en la ruta correcta porque sino compilareis otra cosa, ya que cada carpetilla tie su build.xml de compilación.

Para compilar ejecuta en la consola:

ant clean build-no-debug

Edito: Para compilar el core a fecha 30/12/2011 rev2098  hay que hacer un:
ant build export


Así compilarás sin información de debug para que no existan problemas de incompatibilidad con android, aunque ahora mismo para la aplicación de línea de comandos no es necesario, con lo que bastaría un simple ant en consola, pero así no tienes que compilarlo luego otra vez si quieres hacer algo con android.

A continuación nos vamos a la carpeta javase y hacemos lo mismo pero solo escribimos ant, sin parámetros. Y finalmente subimos de directorio para estar en el trunk y ejecutamos la aplicación:

cd ..
java -cp javase\javase.jar;core\core.jar com.google.zxing.client.j2se.CommandLineRunner  http://upload.wikimedia.org/wikipedia/commons/3/3d/QRc%C3%B3digo_portada_wikipedia_espa%C3%B1ol_.png


Deberíamos obtener un resultado similar a este:


Otra de las opciones de la librería es una aplicación de ejemplo de android para desarrolladores, la podemos compilar tambien usando ant la encontrareis en la carpeta androidtest. Así obtendreis el .apk para instalar en el emulador/móvil, aunque también la podeis bajar directamente desde aquí, llamada ZXingTest1.12.apk. Próximamente explicaré como es para instalar en tu móvil un .apk.

También en la carpeta android-integration, tenemos unas clases para usar la librería desde una aplicación externa, sin más que implementar un botón en nuestra aplicación, que llama a la aplicación de zXing, pero ello hace que se necesite tener instalada dicha aplicación en el dispositivo, lo que la hace una solución fácil pero cutre xD.

Por ahora esto es todo, próximamente más información sobre esta librería y algún ejemplo en android (cuando sepa usarla xD).

Un saludo!

7 comentarios:

  1. Hola Soy Didi soy casi nueva en esto y tengo un problema en el paso en el que dices que se debe dar check out y el generará un proyecto svn. Pues a mí no me lo genera y me sale un error con esta ruta
    C:\Documents and Settings\Diana\workspace2\svn\tags\2.0\csharp\qrcode\.svn\tmp no se que hacer, no he podido generar el jtar para poder pasar al siguiente tutorial. Te agradezco cualquier ayuda

    ResponderEliminar
  2. Prueba a hacer check out en lugar de todo el proyecto, solo de las carpetas de android y el core, que en realidad es lo que hace falta para el tema de android, todo lo otro es añadido.

    ResponderEliminar
    Respuestas
    1. gracias por tu pronta respuesta, lo voy a intentar de inmediato y te vuelvo a molestar para contarte como me va.

      Eliminar
  3. y para ubuntu que se hace para configurar las variables de entorno?

    ResponderEliminar
  4. Por favor, necesito que alguien me ayude. Cuando compilo para obtener el core.jar me da el siguiente error:

    .....

    Compile failed; see the compiler error output for details.

    ResponderEliminar
    Respuestas
    1. Con solo esa información no te podemos ayudar, haz lo que te dice de revisar el log y lo mismo lo detectas.

      Eliminar

Ponte un nombre aunque sea falso, que Anó-nimo queda mu feo :(