F1Android

F1Android – Formula1 Grand Prix events in your Android Device

Enjoy Formula1 events with all the real live race information, like you were in the paddock. With F1Android you will experience the magic of Formula1 Grand Prix from your Android Device. Get information about the last lap of Fernando Alonso, the number of pit stops of your favorite driver, flag status of the race, time left to the end… everything in real time. If the race is live you can see all the times in live!! If the race finished you can see the times of all sessions of the last gran prix.

Do you like Formula1? Have you ever seen Flavio Briatore looking at those black monitors with live timing of the event? Do you want to know the time gap between your favourite driver and Kimi Raikkonen in the first sector of Nurburgring? Yes, now you can access all this information and much more from your Android device anywhere, we are complety sure,Ross Brawn would love it.

F1Android is the first open source application that allows you, to enjoy Formula1 events with all the necessary information as if you were in the paddock.

More information at: http://www.f1android.com

Leave a Comment

Android: Oportunidad gracias a las licencias libres

Android es el nuevo sistema operativo para móviles que recientemente ha sacado Google. Quizá una de las características más importantes es que este sistema operativo es libre (bajo licencia Apache 2.0) y utilizar un kernel Linux 2.6.26.

Que Google haya decidido licenciar bajo Apache este sistema operativo no es casualidad, ni un gesto a los demás para demostrar que está apoyando el software libre (que también!). El modelo de negocio quizá no esté tan claro, y quizá incluso tampoco lo necesite tenerlo claro Google. Como muchos otros proyectos, Google ha utilizado licencias libres en su software e implícitamente ésto le ofrece una oportunidad de posicionarse y de tener un valor añadido con respecto a sus competidores en el sector competitivo de los móviles. Android e iPhone corren en hardware relativamente parecidos, y técnicamente pueden llegar a ser muy similares. Eso si, la gran diferencia, y lo que hará que empresas y usuarios se decidan por uno o por otro, es que uno es software libre (Android) y el otro software privativo (iPhone).

Utilizar licencias libres en los proyectos puede dar en muchas ocasiones una oportunidad de posicionamiento y sobrepasar a tus competidores, siempre y cuando en el mercado donde se mueva dicho proyecto, tanto empresas como usuarios finales, tengan cierto conocimiento sobre software y licencias libres.

Comments (1)

Una esquina sobre licencias: OpenProj

Hace un par de días estuve buscando un programa libre para poder generar diagramas Grantt. El caso es que dí con OpenProj, en principio se define como un programa libre y open source. Su código está disponible y licenciado bajo Common Public Attribution License (”CPAL”). De esta licencia comentaré algunos detalles un poco más abajo.

La sorpresa, y el motivo de este post, es que según instalo y ejecuto la aplicación, me sale una ventana mostrándome la licencia CPAL junto con dos botones “Accept” y “Cancel”, ¿cuanto menos chocante verdad? Sobre todo por lo que hemos visto en clase sobre este tema. Tampoco pasaría nada si saliera la Licencia a modo informativo, pero el problema es que si le doy a “Cancel” se cierra la aplicación y no puedo usarla. Es decir, para usar OpenProj necesitamos aceptar que hemos leído y entendido la licencia, pero … ¿¿ésto no era propio de las licencia y software privativos??

Buscando información sobre CPAL veo que se basa en la Mozilla Public License (MPL), lo que se denominada derivación con atribución (badgeware). La CPAL ha sido aprobada por la Open Source Initiative en 2007 (recientemente). Parece que el uso típico de esta licencia es para que los autores originales se aseguren de que por muchas modificaciones que sufra el software, siga apareciendo su logo/nombre/licencia en el splash screen.

El párrafo controvertido de la licencia es el siguiente (para más info ver el punto 14 de la licencia: ADDITIONAL TERM: ATTRIBUTION):

[…] the Original Developer may include […] a requirement that each time an Executable and Source Code or a Larger Work is launched or initially run […] a prominent display of the Original Developer’s Attribution Information […] must occur on the graphic user interface employed by the end user to access such Covered Code […]

Parece que después de todo y aunque si no acepto la licencia no puedo ejecutar el programa … si es software libre, al menos según la OSI y la FSF. Sin embargo para Debian no es una licencia libre y aparecería en su rama non-free ya que no cumple las Debian Free Software Guidelines.

No obstante sigo con una duda después de leerme el párrafo conflictivo de la CPAL. Este párrafo habla de que tienes que asegurarte que la atribución del autor original no sea más pequeña que la de otros autores (por ejemplo logos), habla de que siempre tiene que aparecer la atribución del autor original, incluso también habla de que hay que asegurarse de que este mensaje de atribución salga durante un tiempo razonable para que el usuario pueda verlo. Ahora bien, no habla en ningún momento de obligar al usuario final a “aceptar” dicho mensaje de atribución para usar el programa.

¿Podríamos considerar que este software en verdad no es Free Software ya que implementa una licencia de uso que nos obliga a aceptarla para poder usar el software?

Comments (4)

Android: TimerTask y GUI

Voy a retomar después de meses el blog, a ver si consigo documentar cada problema que me encuentro mientras programo con Android.

Hoy me he topado con un problema típico cuando programas con GUI gráfica, y es que muchas veces necesitamos actualizar o interactuar con la interfaz gráfica desde un thread que no es el principal, en jerga de Android: cuando queremos modificar el GUI de una Actividad desde otro thread. Concretamente en este caso, necesito que una tarea periódica (thread) muestre un pop-up en la interfaz (actividad) informando que está buscando señal GPS.

Lo primero es saber como ejecutar un método periódicamente en Android. Para ello podemos utilizar la clase nativa de Java llamada TimerTask. Podemos configurar el delay (de la primera ejecución) y el periodo(de la siguientes ejecuciones). Si desde el método run de esta TimerTask intentamos modificar cualquier cosa relacionado con la interfaz gráfica que se ejecuta en el thread principal, veremos como la aplicación se queda congelada, o simplemente muestra un error indicando que sólo se puede acceder a la interfaz desde el thread principal (actividad).

A continuación os dejo el código de cómo configurar y crear una TimerTask (intentad obviar la línea en negrita, que posteriormente explicaremos):

private void launchTask()
{
  int delay = 1000; // delay for 1 seconds
  int period = 120000; // repeat every 2minutes

  mTimer = new Timer();
  mTimer.scheduleAtFixedRate(new TimerTask() {
    public void run() {
      handler_ProgressDiaglog.sendEmptyMessage(0);
    }
  }, delay, period);
}

La línea que aparece en negrita en el cuerpo del método run, es la clave para la solución de nuestro problema. Básicamente lo que implementa por debajo es un paso de mensajes entre threads y que Java nos lo abstrae con la clase Handler(). Para que a nuestro thread principal (que tiene acceso al GUI) le llegue el mensaje que genera la TimerTask, tenemos que crear un atributo privado de tipo Handler. A continuación os dejo el código del Handler:

private Handler handler_ProgressDiaglog = new Handler() {
  @Override
  public void handleMessage(Message msg) {

    // We can modify the GUI here.

  }
};

NOTA: Es posible que un mismo handler recoga más de 1 mensaje, por lo que no es necesario crear un handler por mensaje que queramos transmitir. En nuestro caso, no nos interesa un mensaje en concreto, nada más que nos avise cuando la TimerTask ejecute.

Espero que os siva de ayuda esta recetilla de cómo solucionar en Android un problema típico que se da cuando queremos acceder al GUI desde un thread, que no es el principal.

Leave a Comment

Presentación del Proyecto Fin de Carrera

Después de bastante trabajo y esfuerzo, terminé el proyecto fin de carrera del ciclo superior de Ingenieria Informática.

El proyecto se basa en desarrollar un sistema de reconstrucción 3D basado en atención visual. En otras palabras, mediante características de atención comunes en el ser humano (como los bordes, el contraste de color o el movimiento) vamos a obtener puntos interesantes de la escena, y situar dichos puntos en un espacio 3D. Además uno de los puntos fuertes de este proyecto, es que hemos añadido características de más alto nivel o cognitivas, que son capaces de realizar hipotesis de atención sobre objectos que no están en la imagen pero podrían estar.

La presentación del proyecto será:

Día: Jueves 18 de Septiembre 2008
Lugar: Salón de grados – Departamental 2 – Universidad Rey Juan Carlos
Hora: 12:00h
Título: “Reconstrucción 3D mediante un sistema de atención visual.”

Es recomendable echar un ojo al link de videos, ya que son bastante intuitivos e interesantes.

Más información en:
Ficha del proyecto
Memoria PDF
Videos

Comments (2)

Snow, Snow, Snow!!!

Al fin! Después de casi un mes de trámites y búsquedas para encontrar el envío más barato, ya tengo en casa la tabla y fijaciones burton que tanto deseaba. En concreto la tabla es una Burton Royale 1.62 y las fijaciones son unas burton Cartel Lo-Black.

Lo pero de todo es que, ahora que tengo el material en casa, por lo menos hasta dentro de dos semanas no podré ir a probarlo al Xanadú. El proyecto fin de carrera me está quitándo demasiado tiempo!!

[Al fín Teo descansará de que le dé la plasta con este tema! o no? ;-) ]

Leave a Comment

Amabilidad ante todo

De vuelta de vacaciones de Almería, paramos cerca de Valdepeñas (Ciudad Real) a comer algo y menuda la impresión que te da cuando ves semejantes carteles en la puerta del restaurante en cuestión. Alguien habrá pagado esos 0.40 centimos? ;-)

Leave a Comment

Empezando con la fotografía

Desde hace poco más de un mes que tengo una reflex nueva, he tenido un par de viajes donde poder intentar sacar el provecho a esta cámara. De primeras noté una gran diferencia con la campacta, en cuanto a colores y nitidez de las fotografías.

Este pasado fin de semana estuve en el Parque Nacional de Monfragüe de camping, y pase de refilón por Trujillo. Sin quererlo ni desearlo saqué una de las fotos que más me gustan hasta día de hoy. Es un reflejo en las gafas de María de la plaza mayor de Trujillo. La verdad es que no sabía si quedaba bien que saliera yo en ese reflejo, pero la verdad es que me gusta como queda (además del encuadre y la nitidez).

dsc_0091-R

Si la quieres ver a mayor resolución: 1024×768

Comments (1)

Vaya Regalazo!!!

Después de pasar una semana de “aupa” con los regalos de mi cumpleaños: un video emotivo de mis amigos, una psp, unos pedales super chulos para el coche, ropa y demás pijadillas … llegó el Viernes, día que tenía reservado para celebrar mi cumpleaños con mi novía Maria y cuál es mi sorpresa cuando abro el regalo y …..

veo esta preciosa cámara reflex nikon D40 … dios!! no me lo creía!! Llevaba mucho tiempo interesado en estas cámaras ya que te ofrecen mucha potencia, aunque no es facil sacarles provecho en comparación con las compactas.
Pero no había terminado todo, ya que venía además acompañado de una bolsa porta-cámaras, un tripode y una tarjeta SD de 2GB.

Ya iré comentando las impresiones que tengo de esta camara, pero de momento ….

¡¡¡GRACIAS MARIA!!!

Comments (1)

Atención Visual – movimiento (1.2.1)

[Ver el vídeo a resolución original]

En este otro vídeo, se puede observar el termino de atención visual y saliencia asociado al movimiento. Ahora nuestro esquema, muestra un alto interés por todo lo que se mueve en la imagen.

[*] En esta atención por el movimiento no está definido ningún tipo de difusión de saliencia (los pixeles con saliencia no influyen en la saliencia de los pixeles vecinos).
[*] Computamos la saliencia en una frecuencia de 150ms. Por tanto cada segundo somos capaces de calcular unas 5-6 veces la saliencia y decidir el movimiento del “ojo”. (En un futuro la acción de calcular saliencia y decisión de movimiento tiene que desacoplarse e ir cada una a un ritmo independiente).
[*] El movimiento lo calculamos en base a la diferencia del valor del pixel entre 2 frames consecutivos. En esta y en muchas otros videos, puede existir ruido debido a la calidad del video, por ello para que “exista movimiento” el pixel debe variar como mínimo 15 unidades en terminos absolutos.

Leave a Comment