Prueba Usabilidad I: Interfaz
Hola, durante esta semana voy a comenzar con las primeras pruebas de diseño de la interfaz, lo que será la parte visible de la aplicación.
Como requisitos iniciales, la interfaz debe ser, clara, sencilla, intuitiva y discreta (una vez configurado no debe captar más al atención, hasta que el usuario la requiera de nuevo).
También, uno de los objetivos a priori, sería que tuviera una disposición similar a algún programa comercial ya existente, para que el usuario objetivo, asimilara rápidamente las similitudes y la curva de aprendizaje, fuera si cabe, menos pronunciada (aunque por el momento no tengo ningún programa candidato)
Mi aplicación va dirigida, sobretodo, a usuarios con conocimientos bajo/medios de informática. Por lo que mi primera intención era la de contactar con este tipo de usuarios, explicarles qué es lo que hace la aplicación y mediante unas tarjetas con los dibujos de los distintos componentes (listas, comboBox, botones…), que ellos mismos fueran configurando la interfaz.
Después de esto se anotarían los resultados y se valorarían si los usuarios prefieren elegir opciones de una lista, o marcando un radio botón, por ejemplo.
Un saludo.
Kodama – Arquitectura del Driver (Nikko)
Hola a todos, en esta entrada os muestro el diagrama de clases del driver de Kodama (a partir de ahora Nikko) en el que hemos estado trabajando Florentino y yo.
A partir clase ControlAdapter se podrán añadir nuevos dispositivos simplemente heredando de ella. Para lanzar un evento basta con crear un objeto de tipo ControlEvent y lanzarlo mediante fireEvent().
El evento se irá propagando hasta llegar a la clase Application donde según el tipo de evento que sea, se ejecutará cierto código u otro.
Si hay alguna duda, tanto Florentino como yo intentaremos resolverla.
Un saludo,
Daniel.
Edit: Se ha modificado el diagrama UML. La versión anterior está aquí
Invocar PApplet desde una clase Java
Después de varios días mirando como conseguir ejecutar un PApplet (Applet de Processing) desde código Java normal, parece que hemos encontrado una solución bastante sencilla al problema.
El inconveniente que teníamos era que para ejecutar el Applet debíamos lanzar la aplicación como Java Applet y esto no era lo que buscabamos. Lo que queríamos, era mediante un aplicación Java normal, poder lanzar el código del Applet y que éste se ejecutase realizando su cometido de forma paralela al resto del código de la aplicación.
Después de varias pruebas e intentos fallidos, la solución pasa por ejecutar el Applet dentro de un frame (o JFrame) de esta forma en cualquier momento podemos lanzar el Frame y que este a su vez lance el código del Applet dentro de él.
import java.awt.*; import processing.core.PApplet; public class MyClass extends Frame { public MyClass() { super("Embedded PApplet"); setLayout(new BorderLayout()); PApplet embed = new PAppletClass(); add(embed, BorderLayout.CENTER); setSize(400,400); setVisible(true); // important to call this whenever embedding a PApplet. // It ensures that the animation thread is started and // that other internal variables are properly set. embed.init(); } public static void main(String args[]){ MyClass m = new MyClass(); } } ---------------------------------------------------------------------- import processing.core.PApplet; public class PAppletClass extends PApplet { public void setup() { // original setup code here ... size(400, 400); // prevent thread from starving everything else noLoop(); } public void draw() { // drawing code goes here } public void mousePressed() { // do something based on mouse movement // update the screen (run draw once) redraw(); } }En el siguiente enlace se puede encontrar el código de ejemplo básico donde se puede ver como implementarlo de forma sencilla, así como las explicaciones pertinentes. (en Inglés)
Otro enlace interesante, puede ser este, aunque no es la opción por la que optamos finalmente, por que nos daba problemas con la visualización de la cámara.
Espero que pueda ser de ayuda.
Un saludo,
Daniel.
Sketch hayMovimiento
He comenzado a implementar el sketch para Processing que indique si un marcador elegido por el usuario se ha movido o no.
Como marker de pruebas uso un conversor PS2-USB debido a su color característico, de esta forma se diferencia bien del resto y funciona aceptablemente bien. Es posible cambiar el color de seguimiento, para ello, hay que hacer clic con el botón derecho del ratón en una zona y el marker se convertirá en ese color.
Si se pulsa el botón izquierdo se muestran las preferencias de la imagen que está siendo capturada (contraste, brillo…)
El funcionamiento del sketch en sí, es sencillo. Cada vez que se pulsa la barra espaciadora, captura la posición del marcador y cuando se vuelve a pulsar, vuelve a capturar la posición y la compara con que tenía antes.
Si el valor absoluto de la resta es mayor que cierto valor (tolerancia) muestra por pantalla un mensaje del tipo: «Se ha movido», en caso contrario muestra «NO».
Uso las librerías JMyron para que no sea necesario instalar QuickTime. Aunque no habría ningún problema en utilizar el mismo código con las librerías de vídeo de Processing.
De momento este código es de prueba, a la espera de que nos sirva para integrarlo con el resto de la aplicación.
Un saludo.
Estado del Arte
En la actualidad existen multitud de aplicaciones desarrolladas para favorecer la comunicación del colectivo de personas con necesidades educativas especiales.
Aunque este hecho, no siempre fue así. Hace no tantos años el mundo de la informática era un terreno prácticamente vetado para todas las personas que sufrieran una discapacidad de cualquier tipo.
Hoy, afortunadamente, la tendencia está cambiando y los nuevos desarrollos suelen tener cada vez más en cuenta a este tipo de personas, haciendo aplicaciones para todos y no sólo meras adaptaciones para casos especiales.
Gracias a mi pequeña investigación por la Red he encontrado varias aplicaciones destinadas a intentar mitigar está barrera que surge entre los usarios con discapacidad y los ordenadores. Muchas de estás aplicaciones no son accesibles al público, puesto que son desarrollos privados utilizados expresamente para un caso o centro en concreto.
Me he centrado sobretodo, en desarrollos españoles y para su análisis los he dividido en dos grupos: Aplicaciones de Comunicación y las Aplicaciones de Interacción con el Ordenador.
Las Aplicaciones de Comunicación engloban a todas aquellas que favorecen el intercambio de mensajes entre el usuario y el medio externo (familia, profesores, compañeros…), mientras que las Aplicaciones de Interacción con el Ordenador abarcan las aplicaciones que favorecen el uso del computador por las personas con dificultades físicas.
Para resumir, dejo aquí un pequeño resumen de la clasificación que he realizado.
- Aplicaciones de Comunicación
- Plaphoons
- TpWin
- Sc@ut
- TICO
- SICLA
- Comunicador CPA
- Aplicaciones interacción ordenador
- Head Mouse v1 y v2
- Eviacam
- Rata Plaphoons
- Proyecto Head Dev
Un saludo,
Daniel.
[CÓMO] Editar página «acerca de» o «sobre mí» en WordPress
Hola, bueno esta entrada no está directamente relacionada con mi PFC, pero creo que puede ser de ayuda para alguien que como yo, no haya sabido editar la página que proporciona WordPress para poner algunos detalles personales sobre el autor del blog.
Me refiero a la típica página de «Acerca de», «About me», en la que te presentas y comentas lo que quieras sobre ti mismo para que tus lectores te conozcan un poco 🙂
Después de buscar un poco por la red he encontrado el siguiente vídeo en los «HOW TO» de WordPress.
Para los que no se aclaran muy bien con el inglés (aunque no hace falta enterder mucho, sólo mirar), lo que hay que haces es:
- Ir a tu tablero de cuenta.
- Sección Páginas.
- Editar / Crear nueva (según lo que quieras).
- Actualizar esa nueva página.
Nada más.
Espero que pueda resultar de ayuda a alguien.
Un saludo.
JMyron UnsatisfiedLinkError
Hoy haciendo alguna prueba desde Processing, al ejecutar los ejemplos de JMyron me ha dado un error del tipo de UnsatisfiedLinkError.
Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError:
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at JMyron.JMyron.<clinit>(JMyron.java:14)
No sabía muy bien por que se producia este error. Probé a vover a bajar las librerias JMyron y a volver añadirlas al proyecto y nada…todo seguía igual. Cada vez que ejecutaba error de compilación.

Buscando un poco por la red, encontré esté post en los foros oficiales de Processing: http://processing.org/discourse/yabb2/YaBB.pl?num=1187304121
En él, se dice algunas veces esto pasa y se soluciona cambiando un archivo de la librería JMyron.
Según comentan en el post este archivo viene precompilado para procesadores Intel para Mac aunque yo lo estoy usando en un Intel pero con Windows (XP) y sin problemas.
El archivo podeís descargarlo desde: http://www.jibberia.com/projects/libJMyron.jnilib.zip
Una vez descargado y descomprimido, sustituir el archivo que viene dentro por el que está en /Aplicaciones/Processing/libraries/JMyron/library/
Un vez hecho esto, reiniciar processing y debería funcionar todo a la perfección.
Aclaración: La verdad es que no sé muy bien por que se produce este error, ayer funcionaba bien y hoy no. Al cambiar el archivo funcionó todo bien, pero al volver a restablecer el archivo antiguo también funcionó :S.
Raro raro raro… de todas formas si alguien tiene el problema del UnsatisfiedLinkError, siguendo el tutorial puede solucionarse en procesadores Intel.
Processing II
Aunque el entorno que proporciona Processing por omisión para desarrollar código es fácil de manejar y claro, se queda un poco pequeño para realizar aplicaciones un poco más grandes.
Por ello he estado mirando como integrar Processing en Eclipse, el famoso entorno de desarrollo. De esta forma tengo toda la potencia de Processing integrada cómodamente en un entorno de desarrollo ya conocido por mí.
En la propia página de Processing está el cómo realizarlo, los pasos se pueden seguir desde aquí: http://processing.org/learning/eclipse/
Resumiendo un poco el proceso, se trata de añadir la librería core.jar de Processing a nuestro proyecto.
Una vez añadida, las únicas precauciones que hay que tener en cuenta al crear la clase son:
- Importar la librería añadida, al inicio de la clase:
import processing.core.*;
- Que la clase creada, extienda de PApplet:
public class ProcessingEnEclipse extends PApplet{
...
...
...
}
Por ahora nada más.
JMyron
Sigo investigando un poco sobre Processing ya más orientado hacia mi trabajo, el uso de cámaras Web.
Para el uso de cualquier vídeo en Processing hay que usar unas librerias especificas que se llaman procesing.video (lógico ¿verdad? :F).
Éstas vienen por omisión en Processing teniendo simplemente que importarlas para poder hacer uso de ellas.
import processing.video.*;
El problema, o mejor dicho el inconveniente que tienen, es que dependen del reproductor Apple QuickTime.
Sin él instalado en el ordenador, cualquier programita que depende de la librería de video no funciona.
Como mi intención es que mi PFC dependa de lo mínimo posible he buscado una solución alternativa.
Después de buscar un rato he encontrado unas librerías llamadas JMyron desde las cuales no es necessario tener instalado nada accesorio (salvo ellas mismas, claro).
Simplemente las añades al directorio libraries y ya están listas para usar.
Dentro del archivo comprimido hay un ficherito con instruciones, sobre cómo instalarlas.
La verdad es que tiene muy buena pinta, y se pueden hacer cosas realmente asombrosas. Desde reconocimiento de colores y formas hasta la detección de movimiento.
Por el momento sólo he probado su funcionalidad en Windows (concretamente XP), espero poder probarlo en GNU/Linux (Ubuntu) en pocos días.
Tienen muy buena pinta, veremos si puedo sacarles partido.
Processing (I)
Bueno, después de la entrada de presentación vamos a meternos ya «en harina» como se suele decir.
Para el desarrollo del proyecto voy a utilizar un lenguaje de programación llamado Processing. Tiene varias ventajas la primera es que todas -o la mayor parte- de las librerías útiles son de código abierto por lo que puedo utilizaras sin ningún problema de licencias. Otra ventaja es que el lenguaje es MUY similar a Java y cuando digo MUY quiero decir que es como si fuera primos hermanos. 🙂
Para utilizarlo lo único que hay que hacer es bajarte un archivo comprimido de la sección de descargas de la página oficial (http://processing.org/), descomprimir y ejecutar (hay versiones funcionales tanta para Windows, Mac y GNU/Linux).
Seguidamente se mostrará un sencillo editor, desde el que puedes ejecutar tu código.

De momento el único problema que he tenido ha sido al ejecutar algunos de los ejemplos que viene con el programa de prueba en mi Ubuntu, parece ser que algunas librerías de vídeo no funcionan correctamente en GNU/Linux.
Me estoy familiarizando con la sintaxis (aunque es prácticamente Java) y un poco con qué puedo hacer y qué no.



