Posts Tagged ‘Software’

Guia de Instalación de una aplicación en Android

Para que la gente pueda probar el programa en sus casas con independencia de mas o menos conocimiento de Android voy a explicar brevemente como instalar una aplicación en teléfono con Android o en el emulador (desde un ordenador, no mediante el Android Market), explicando más concretamente en el caso de mi aplicación.

Sigue leyendo

Proyecto nueva versión: v.0.2.1

Desde hace unos minutos esta disponible en la forja la versión 0.2.1 del cliente VNC. Se ha producido un salto de varias versiones porque no se ha querido publicar ninguna versión que no fuera relativamente estable, en el LEEME se encuentra la descripción de los diferentes cambios que se han producido desde la v.0.1.5 hasta ésta última.

En esta nueva versión en la forja podemos encontrar: el código, el archivo aptk para instalar directamente el programa y el archivo OpenIntents donde está todo lo necesario para hacer funcionar el simulador de sensores.

Nuevas mejoras (ordenadas por orden de implementación):

Añadido nuevo desplazamiento por el escritorio mediante el acelerómetro, mediante movimientos del teléfono podemos desplazarnos por la pantalla remota, una especie de shake control.

Añadido un Zoom: podemos alejar o acercar la vista del escritorio remoto de manera que podamos hacernos una idea general del escritorio y ver una parte con mas detalle

Posibilidad de Copy&Paste entre el servidor y el móvil. Es decir, podemos pasar nuestra información del portapapeles de un dispositivo al otro.

Nueva Caracteristica: Screenshots

Ya esta disponible en la forja la nueva versión 0.1.5 del cliente VNC. Las nuevas mejoras a nivel de utilidad son:

  • Añadido la posibilidad de hacer Screenshots de lo que vemos en la pantalla del móvil

– Archivo Screenshot.java
– Para realizar el screenshot: Menu -> More -> Screenshot o Menu+s
– En el modo FullMouseMode tambien se puede realizar pulsando la tecla de llamada
– Lo screenshot se guardan en la tarjeta sd dentro de la carpeta screenshot con la fecha y un número de orden.
– Se guardan en formato jpeg.
– No existe la posibilidad de guardar la imagen sin no hay sdcard (característica temporal).

  • Cambio del accionamiento de los sensores

– No se ejecuta automáticamente en el modo FullMouseMode.
– Para activarlo Menu -> More -> Activar Sensores o Menu+o
– Se puede desactivar de la misma manera

Podéis descarga la nueva versión del programa (tanto el código como el instalador) en la forja.

Para ver el LEEME completo con la lista de cambios haz click aquí

Próximamente colgaŕe un video con la demostración

Mueve el móvil, mueve el escritorio

He añadido una nueva característica al cliente, la capacidad de desplazarnos por el escritorio gracias al sensor de orientación, es decir inclinando el teléfono hacia un lado o hacia otro. Realmente no funciona con un teléfono real, como ya he dicho, trabajo con el emulador y no está implementado ningún método que te permita mandar a tu programa información acerca de los sensores. Pero hay un grupo de desarrolladores llamado OpenIntents que ha desarrollado una herramienta que permite mandar al emulador los movimientos que podríamos realizar con un teléfono real, lo único que hay que hacer es mediante la API de sensores de Android, es registrar un manejador de sensores haciéndolo registrar los eventos que le provengan del simulador, no de los sensores “físicos”. Un ejemplo :

Sigue leyendo

Full Mouse Control, caracteristicas.

Edito: Añado el vídeo donde muestro de forma rápida las características explicadas en este post

Como expliqué en posts anteriores, voy a realizar modificaciones al vnc viewer que está actualmente en desarrollo. Voy a tomar como punto de partida para implementar mis modificaciones la release 39, publicada el 31 de Enero de 2009 y el SDK de Android v.1.0 r2 para Linux. En un principio no voy a volver a actualizar ninguno de estos elementos salvo que lo vea absolutamente necesario, debido, a la cantidad de tiempo que esto puede llevarme. Aclarado esto voy a explicar mi primera modificación: El modo de visualización y manejo de escritorio  Full Mouse Control

Los modos de representación del escritorio esta explicados aquí. El método Full Mouse Control representa el escritorio a tamaño real y permite manejar el ratón del servidor (ordenador remoto) sin ninguna limitación de espacio o de funcionalidad.

  • Para realizar un movimiento de ratón, sin tener pulsada ningún botón de éste, basta con arrastrar nuestro dedo por la pantalla táctil. Es decir, si realizamos un movimiento en la pantalla, no realizaremos la acción de arrastrar, sino moveremos simplemente el puntero del ordenador remoto.
  • Si moviendo el dedo sobre la pantalla movemos el ratón, ¿como realizamos la acción de arrastrar?. Muy sencillo, si mantenemos pulsada una posición de la pantalla durante un segundo (sin movimiento, solo pulsación), nos aparecerá un mensaje del tipo: “Dragging Mode”; a partir de ese momento cuando movamos el ratón lo haremos como si tuviéramos el botón izquierdo pulsado.
  • El movimiento del ratón no está limitado a la parte de escritorio que vemos en la pantalla, si desplazamos el cursor hacia uno de los laterales de la pantalla, la parte visible del escritorio se desplazará en esa dirección, por lo que podemos abarcar toda la pantalla, por ejemplo con una selección, si es lo que deseamos.
  • Mandar un click del botón izquierdo consiste en una corta pulsación en la zona donde queramos realizarlo. Si queremos un doble click, es realizar dos pulsación, no hay problema.
  • Si lo que queremos es mandar una pulsación del botón derecho, situamos el cursor del ratón en la posición donde queramos hacerlo y pulsamos el botón central DPAD.
  • Los eventos de teclado, es decir las pulsaciones en el teclado qwerty se manda al ordenador remoto como tal.

Y ahora, la parte más técnica, ¿como he hecho esto?. Para empezar, los métodos nativos del cliente VNC (los que han desarrollado los programadores del Android VNC Viewer), implementan todos una interfaz desarrollada por Michael A. MacDonald para conseguir coherencia. En ella se especifican los métodos que han de ser implementados por cada implementación. Los métodos mas importantes son:

  • boolean onKeyDown(int keyCode, KeyEvent evt) : Se llama cada vez que se pulsa una tecla.
  • boolean onKeyUp(int keyCode, KeyEvent evt):  Se invoca cada vez que se suelta una tecla
  • boolean onTrackballEvent( MotionEvent evt):  Se utiliza en caso de que se quiera utilzar las teclas DPAD para mover le cursor
  • boolean onTouchEvent( MotionEvent evt): Se invoca cada vez que hay un evento tactil: bien que se pulse, se suelte y/o exista movimiento

No voy a entrar en la implementación de la interfaces en los distintos modos nativos, pero si quiero explicar con detenimiento el creado por mi, para mas información sobre los métodos nativos os remito a la web. (Si alguien tiene dudas, podría echarle una mano, teniendo en cuenta que no soy ningún experto, solo alguien que le ha echado horas:-))

Como el post me está quedando bastante largo y voy a comenzar ahora con la explicación de mi código voy a terminar esta entrada aquí para que nadie se aburra mas de la cuenta. En la siguiente entrada comentaré mi código.

Eventos “Multitouch” en Android

Echando un vistazo a la web Talking Android, he visto un vídeo en el que se muestra como se pueden  tratar varios touch events en el móvil G1. Tenía entendido que actualmente el único dispositivo que realmente conseguía tratar varias pulsaciones en una pantalla táctil era la pantalla del Iphone/Iphone Touch desarrollada por Apple, y no me equivocaba. En el blog de Luke se explica como realmente “funciona” este característica en Android y como llegó hasta lo que podemos ver en el video:

La capacidad multitouch a nivel de hardware como he dicho solo existe actualmente en los productos de Apple; en este dispositivo funciona a nivel de software. En un principio parece que en el driver que utiliza Android para la pantalla, había un par de lineas comentadas con las que se podía conseguir detectar varios eventos táctiles simultáneos, pero para ello, había que recopilar el kernel de sistema operativo. Esto traía muchas complicaciones posteriores y parece que nadie ha seguido trabajando en esa dirección

Pero el daño ya estaba hecho, se había mostrado algo hasta ese momento impensable. El escritor del blog, Luke Hutchison, explica que realmente no hacía falta modificar el driver porque ya emitía las señales multitouch, pero no se llegaban a registrar, simplemente se perdían en el archivo “$ANDROID_HOME/frameworks/base/services/java/com/android/server/KeyInputQueue.java”. Sabiendo esto, para poder aplicar las características multitouch no era necesario recompilar el kernel, pero habría que cambiar clases de las librerías de Java de Android.

La parte donde explica estas modificaciones es algo complicado de entender, intentaré resumirla brevemente, (y sin meterme en especificaciones técnicas), para explicar la idea general. Si alguien esta interesado le remito al blog de Luke Hutchison donde se explica todo el proceso, concretamente :”Implementing functional multitouch on the G1 in a backwards-compatible way”.

Cuando se recibe un evento de que se ha realizado una pulsación, el driver emite una serie de bits de tamaño x, en el que se especifica las coordenadas donde se ha pulsado. Pero este tamaño, no se aprovecha entero, queda hueco disponible que no se utiliza. Este espacio de bits lo aprovecha Luke para introducir información acerca de la segunda pulsación. Para que esto puede ser entendido por Android, es necesario modificar el archivo donde se manejan estos eventos de tal manera que distingue la primera y segunda pulsación mediante un bit significativo. A partir de esta modificación es capaz de distinguir los eventos táctiles para saber si el movimiento es de la primera o de la segunda pulsación.

Esto trae una serie de problemas (se pueden observar en el video), los mas importantes :

  • Cuando se tienen los dos dedos pulsados se crean otros dos (como si se formaran un paralelogramo), y es imposible distinguir entre las parejas, cual es realmente donde se pulso
  • Si las pulsaciones están muy juntas se pueden confundir como el mismo punto.
  • Ciertos problemas con giros en las pulsaciones.

Si necesitais más informacion, o más tecnica os remito al blog, pero me ha parecido curiso comentarlo en esta entrada porque una de las ideas que tenía para el PFC era la de usar ambos dedos para aumentar y disminuir el zoom, aunque actualmente no es algo que entre en mis prioridades.

Via | http://www.talkandroid.com/

Fuente | http://lukehutch.wordpress.com/android-stuff/