tus camisetas frikis en camisetafriki.com

Android: Formas de manejar un evento

August 24th, 2010 View Comments

Escribo esto casi como un recordatorio de las posibles formas de manejar eventos en Android, pongo por caso cómo manejar los eventos OnClick de un botón:

Inline:

1
2
3
4
5
this.btnCalcular.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
       	calcularRuta();
      }
});

Con un delegado:

1
2
3
4
5
6
7
8
9
private OnClickListener btnMyLocation_OnClick = new OnClickListener() {		
	@Override
	public void onClick(View v) {
		// Desde aquí no tenemos acceso a la clase 
		// así que podemos llamar a una método de 
		// la clase para modificarla			
	}
};
this.btnMyLocation.setOnClickListener(this.btnMyLocation_OnClick);

Implementando OnClickListener como una interfaz (esta opción no permitiría manejar eventos OnClick diferenetes salvo que hagamos un switch del View en la función OnClick para identificarlo):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ExampleActivity extends Activity implements OnClickListener {
    protected void onCreate(Bundle savedValues) {
        ...
        Button button = (Button)findViewById(R.id.corky);
        button.setOnClickListener(this);
    }
 
    // Implement the OnClickListener callback
    public void onClick(View v) {
      switch(v.getId())
      {
          case(R.id.corky):
          ...
      }
    }
    ...
}

En el XML del layout:

1
2
3
4
<Button
android:onClick="metodo"
... 
/>
1
2
3
4
public void metodo(View v)
{
   //hacer algo
}

(fuente: http://developer.android.com/guide/topics/ui/ui-events.html)

Categories: Programacion Tags:

Android: Cambiar el color de un botón sin alterar su comportamiento

August 23rd, 2010 View Comments

Últimamente ando con temas de Android en el curro y estoy aprendiendo un montón, tanto que tengo pensados unas serie de posts sobre Android donde contaré cómo hacer aquellas cosas que no están demasiado bien explicadas en la documentación, o que hay que investigar un poco para conseguir hacerlas.

Como aún sigo trasteando, voy a empezar con una entrada cortita.

En este caso queremos pintar un botón de un color que no sea el del tema que estemos usando pero no queremos coger el photoshop y currarnos un botón bonito y sombreado desde cero y todos sus estados de seleccionado, pulsado, etc. solo para cambiarle el color, así que tiraremos de una función muy sencilla integrada en Android que consiste en aplicarle un filtro de color alpha al botón en cuestión partiendo de la base del típico botón gris:

boton coloreado

Para lograr esto sólo tenemos que aplicar esta línea:

1
button.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);

Siendo 0xFFFF0000 el color en formato ARGB que queremos aplicar, en este caso, rojo.

Es muy interesante poder aplicar este tipo de filtros porque nos permite hacer un montón de efectos sobre los controles predefinidos en Android. Esta técnica no es exclusiva de Android, sino que también es muy usada en Photoshop para cambiar colores por ejemplo.

Aquí una tablita con las operaciones que se pueden hacer (no se si Android soporta todas)
alpha composition

(fuente: Stack Overflow)

Categories: Programacion Tags:

Empezando con PhoneGap + Windows

July 28th, 2010 View Comments

En la Campus Party 2010 he asistido a una charla de espresso-team relacionada con aplicaciones web para móviles que se ejecutan como si fueran nativas. En este ámbito PhoneGap se lleva la palma y dado que las instrucciones de la web no son todo lo aclaratorias que deberían ser, voy a a indicar algunos consejos que me han ayudado a compilar el .jar con las librerías y a crear el proyecto de prueba:

Pasos:

1. Instalar el Java JDK:
http://java.sun.com/javase/downloads/index.jsp

2. Instalar Eclipse:
http://www.eclipse.org/downloads/ (extraer en algún sitio)

3. Instalar Android SDK:
http://developer.android.com/sdk/index.html (descomprimir en alguna ruta sin espacios, ej e:\android-sdk)
Importante para evitar dolores de cabeza después, añadir a la variable de entorno PATH la ruta hasta la carpeta del SDK (ej e:\android-sdk) y a la carpeta tools (ej. e:\android-sdk\tools)

4. Instalar el plugin ADT para Eclipse:
http://developer.android.com/sdk/eclipse-adt.html

5. Añadir componentes del SDK:
http://developer.android.com/sdk/adding-components.html

Si hay alguna duda hasta aquí, es como seguir la guía de Android para desarrolladores: http://developer.android.com/sdk/index.html

6. Instalar Apache ANT:
http://ant.apache.org/index.html (descomprimir en una carpeta sin espacios ej. e:\apache-ant)
IMPORTANTE: Crear dos variables de entorno, JAVA_HOME con la ruta al java_sdk (ej. C:\Program Files (x86)\Java\jdk1.6.0_20) y ANT_HOME con la ruta a la carpeta de ANT (ej. e:\apache-ant), además, añadir la ruta al /bin de ANT al PATH (ej. e:\apache-ant\bin)

7. Instalar ruby
Con instalador: http://rubyinstaller.org/

8. Instalar PhoneGap:
Hay dos opciones, instalar un cliente de github y bajárselo con él, o descargarte la última versión a mano de http://github.com/phonegap/phonegap-android (descomprimir en una carpeta)

9. Correr el comando mágico que creará tu .jar y el proyecto de ejemplo:
Dentro de la carpeta de phonegap-android:
ruby ./droidgap [ruta al android sdk] [nombre aplicacion] [nombre del package] [ruta al www] [ruta al proyecto de prueba]

dónde:
[ruta al android sdk] = ruta donde has descomprimido el SDK de android
[nombre aplicacion] = el que quieras, será el nombre de la aplicación
[nombre del package] = el que quieras, será el nombre del paquete
[ruta al www] = ruta donde están las fuentes html, que si no tienes, puedes poner la carpeta example de phonegap-android
[ruta al proyecto de prueba] = carpeta donde se creará el proyecto para abrir con Eclipse

En mi caso:
ruby ./droidgap e:\\Android\\android-sdk-windows test com.forgotten example/ e:\\Android\\proyectos\\phonegap1

10. Abrir Eclipse, crear un nuevo proyecto Android e indicar que lo queremos crear a partir de un código fuente existente, que será el que hemos indicado en [ruta al proyecto de prueba]

11. En el árbol de ficheros, clic derecho en libs/phonegap.jar > Build path > Add to build path

12. Clic derecho en la carpeta del proyecto dentro de Ecplise > Run As > Android Aplication.
Debes tener configurado un AVD compatible con el build target indicado en el manifest.xml.
Para más info sobre esto mejor ver el quick start de http://developers.android.com

Posibles errores:
./droidgap:37:in “’: No such file or directory – ant jar (Errno::ENOENT)
Solución, añadir la ruta de ANT a la variable de entorno PATH.

./droidgap:49:in “’: No such file or directory – android create project
Solución, añadir la ruta a las tools de Android SDK a la variable de entorno PATH.

Esto me ha llevado un montón conseguirlo por no leer las cosas, así que espero que sirva de ayuda

Categories: Programacion Tags: ,

España campeona del Mundo 2010. Porque no todo es fútbol

July 13th, 2010 View Comments

Este pasado domingo 11 de Julio, la selección española de fútbol se proclamaba como la mejor selección de fútbol del mundo. Puede gustarte o no el fútbol, pero el sentimiento colectivo de estos últimos días es algo que se vive. Yo no soy muy futbolero, no sigo la liga, ni vi la fase clasificatoria (no se, es algo que daba por hecho supongo) pero reconozco que me gusta ver los partidos de la selección ya que me parecen mucho más emocionantes.

Lo que he vivido estos días no lo he visto en la vida, decidí ver los últimos partidos en un bar por el centro de Madrid y me alegro de haberlo hecho. Compartir con tanta gente desconocida la pasión por la roja ha sido algo que merece la pena alguna vez en la vida. Sobre todo me ha sorprendido la cantidad de extranjeros que lo daban todo por nuestra selección, ingleses, franceses, alemanes,… pese a haber sido eliminados en fases previas, animaban a España a ganar este mundial tanto o más que cualquier español.

Resulta increíble como se puede unir tanta gente, ver la felicidad en las caras de los aficionados en la calle celebrando que Iniesta marcaba el gol que nos daba la copa del mundo a 3 minutos del final de la segunda prórroga. Tanta gente celebrando una victoria hace que se te olviden los problemas y los prejuicios unos días para vivir el momento todos juntos.

Puede no gustarte el fútbol, pero ya no se trata de un montón de tíos detrás de un balón para meterlo en una portería, se trata de un trabajo en equipo, de un trabajo bien hecho, de perseverancia, pasión, emoción, ímpetu, de darlo todo por aquello que quieres y lograrlo. Para mí es un claro ejemplo de consecución de un éxito, extrapolable a la vida cotidiana. No hay excusa para no celebrarlo todos juntos.

Gracias España, ha sido inolvidable.

españa-campeona-del-mundo

Y aquí unas fotos de mi amigo Alberto que reflejan muy bien la alegría de la gente en la calle:

Categories: Personal Tags:

Nuevo blog sobre Realidad Aumentada

June 17th, 2010 View Comments

Sólo escribo este mensaje para informaros de que he creado un nuevo blog sobre Realidad Aumentada dónde escribiré noticias y artículos sobre técnicas, avances y productos basados en esta tecnología.

Ir al Blog de Realidad Aumentada

Categories: Tecnología Tags:

Interfaces como en Minority Report dentro de 5 años

June 14th, 2010 View Comments

Así lo dice John Underkoffler, diseñador de la interfaz gestual de la película Minority Report y que hizo esta tecnología hará unos 15 años en el Media Lab del MIT (madre mía, quién pudiera estar ahí). Aqui hay mas información de este señor

Para los que saben de visión artificial no les resultará especialmente impresionantes los ejemplos que aparecen al principio ya que con un poco de detección de colores y un proyector se puede hacer mas o menos lo mismo.

Lo impresionante es el montaje del final que por lo que se observa, son varias cámaras alrededor de la persona se encargan de seguir los gestos y movimientos de sus manos. Éstas cámaras parecen estar rodeadas de leds infrarrojos por lo que parece que la visión 3D se realiza mediante seguimiento de infrarrojos más que por colores o luces como se veía en la película.

Esto es muy parecido a cómo funciona el mando de la Wii, y más aún a cómo funciona el projectl Natal de Microsoft (ahora llamado Kinetics).


Categories: Tecnología Tags: , ,

Qype: Tommy Mel’s en Madrid

June 14th, 2010 View Comments

MadridComida y copasRestaurantesAmericanos

Famosa hamburguesería estilo americano, con enormes hambuguesas a la parrilla, nachos, sandwiches, etc.
Lo particular de este sitio es la decoración, ambientado en los Estados Unidos de los años 50, es como si te metieses en la película Grease.
Las camareras visten el típico vestido rosa con el nombre en letras de carta de boda y el gorrito, lo asientos son como sacados de un cadillac y hay frases simpáticas escritas en las paredes a modo de citas.
Es un sitio al que al menos hay que ir una vez para verlo (y comer allí, claro)

Echa un vistazo a mi reseña de Tommy Mel’s – Yo soy ferdy182 – en Qype

Categories: General Tags:

BumpTop: escritorio 3D

May 18th, 2010 View Comments

BumpTop es un entorno de escritorio en 3D que lleva unos 3 años circulando en internet y es impresionante como ha mejorado. Tanto que recientemente Google ha adquirido el producto, no sabemos para qué fin pero apuesto a que tiene que ver con Android.

Es una nueva forma de trabajar con entornos multitouch añadiendo 3D al concepto de escritorio, pareciéndose aun más a un escritorio real y añadiendo algunas funciones interesantes para la gestión de archivos y documentos como si fueran objetos con sus propiedades que cumplen las leyes de la física, interacción con redes sociales, visualización de fotos, etc.

Y aquí tenemos el vídeo que fue presentado en el TED en Marzo de 2007, donde puedes ver la evolución que ha sufrido hasta ahora, desde un simple plano inclinado con “piezas” por encima hasta un completo escritorio funcional con paredes y todo.

Categories: Tecnología Tags: ,

Realidad aumentada en Google Earth y Bing Maps

May 17th, 2010 View Comments


La realidad aumentada es un concepto que está en auge últimamente, tanto que la cantidad de aplicaciones que están surgiendo a raíz de ésta, crece exponencialmente. Tanto que Google y Microsoft están integrándola en sus propios visores de mapas.

¿En qué consiste la realidad aumentada? Pues como su nombre indica, coger la realidad y ampliar la información que vemos con información que no vemos, para aumentar los datos que percibimos del mundo real. Aunque más bien en este caso deberíamos hablar de realidad virtual aumentada puesto que se basa en meter información real en mundos “virtuales” (entre comillas porque virtuales tampoco sería la palabra) como son Google Earth y Bing Maps.

En los dos vídeos que acompañan esta entrada, puedes ver dos aproximaciones de estas dos compañías para llevar la realidad a sus mundos virtuales, cada uno a su manera pero ambos muy interesantes técnicamente.

En el primer vídeo puedes ver una presentación de Microsoft en el TED en la que se muestra el “Street View” de Bing Maps en el que aparte de poder meterse en un mercado, se puede ver una ventanita con un streaming de vídeo con lo que está ocurriendo en tiempo real grabado a través de una cámara dónde lo que se está enfocando corresponde con las fotos de la calle que existen previamente.

Este otro ejemplo de Google Earth me resulta más impresionante aún, aquí puedes ver como empleando webcams públicas, también podemos ver en tiempo real lo que ocurre en la zona que están enfocando, mapeando la visualización con la superficie del mapa que correspondería de forma que parece que podamos estar observando desde nuestra casa lo que ocurre en el mundo, cómo por ejemplo, ver lo que ocurre en un estadio en el que además, podemos ver una cámara u otra según el ángulo desde el que estemos mirando. Y mejor aún, si hay varias cámaras dispuestas en un tramo, vemos una representación virtual de las personas y vehículos que transitan por delante de la cámara e incluso interpolar las zonas de las que no se dispone imagen, como por ejemplo, en tramos de una autopista.

En definitiva, poco a poco vamos viendo más maravillas tecnológicas y utilidades de las herramientas que ya conocemos como son Google Earth y Bing Maps, y nos damos cuenta de las posibilidades que tienen de cara al futuro y no en vano estamos en la era de la información, puesto que tenemos toda al alcance del ratón.

PHP: explode vs split

May 14th, 2010 View Comments


El otro día, hablando con mi compañero de curro, le planteé la duda de por qué usaba split en lugar de explode para separar cadenas en un array dado un delimitador, cómo no supo responderme ni yo tampoco sabía la diferencia, fui a mirar el manual en php.net y la diferencia realmente es que:

  • explode() toma como parámetros la cadena con el delimitador, la cadena sobre la que se aplica y un parámetro opcional para limitar el número de elementos que se van a separar conteniendo el último el resto de la cadena sin partir
  • split() toma como parámetro una expresión regular cómo delimitador, la cadena sobre la que se aplica y un parámetro opcional para limitar el número de elementos.

La función split en realidad es mucho más flexible para según que cosas pero más costoso si sólo queremos partir por un carácter que suele ser lo habitual, entonces es mejor usar explode(). Además, desde PHP 5.3, split() está obsoleta (por lo que provocará un Warning) y se recomienda usar preg_split() en su lugar, que además admite otro parámetro flag para modificar su comportamiento.

Espero que hayáis aprendido una cosa más :)

Referencias:
explode()
split()
preg_split()

Categories: Programacion Tags: