El blog de Javielinux Usuario de Linux, Android developer, programador de aplicaciones web y experimentando con HTML5, CSS3 y Javascript

Últimos cambios en mi vida

Ya sé que no escribo desde hace mucho pero esta vez tengo razones de peso para no hacerlo :-p. Después de 11 años trabajando en el mismo sitio hace 1 mes empecé a trabajar en 47Deg como desarrollador Android. Una decisión complicada en un principio pero que después de tomarla me di cuenta que era lo que tenía que hacer. Aunque en mi antiguo trabajo estaba contento era la hora de tomar decisiones importantes y después de muchos años he vuelto a notar esa sensación de despertarme por las mañanas con la ilusión de ir a trabajar y no tener esos agobios los domingos para volver al trabajo el lunes.

Después de algunos años trabajando en la plataforma Android por diversión ahora trabajo a tiempo completo y estoy más que contento con el cambio. Además trabajo todos los días con @ignacio_gs y mis nuevos compañeros son geniales y creo que se está formando un grupo de calidad.

A partir de ahora es el momento de organizarme con las cosas que hacía "al llegar a casa". Es complicado después de un día trabajando con Android volver a casa y seguir trabajando en lo mismo, por lo menos al ritmo que lo hacía antes, así que por el momento he decidido seguir trabajando sólo en TweetTopics y para que todo sea más fácil empezará a colaborar en la aplicación mi amigo @francisco_dr que ha sido mi compañero durante 11 años en el trabajo y es un auténtico crack. Lleva unos meses trabajando en Android y tiene sus propios proyectos, pero buscaremos huecos suficientes para poder lanzar TweetTopics 2.0.... pero de esto ya se hablará en su momento ;-)

Seguiré intentando escribir por aquí mis nuevas vivencias en el mundo de android y software libre, como siempre, pero acordarse, si tardo es que estoy trabajando :-p

Categorías Personal

Marcagol. Simple aplicación para gestionar tus ligas de futbolín

Este verano mi hermano decidió restaurar el viejo futbolín que teníamos y le buscamos un lugar privilegiado en el campo para poder hacer ligas con los amigos en las tardes veraniegas junto a la piscina. Nos quedó así de bien.

Futbolín

Pero no podía quedar ahí, había que hacer algo "geek" y se nos ocurrió una aplicación para poder gestionar las ligas. Buscando algunos huecos finalmente la pude hacer y se llama Marcagol y que ya está disponible en Android Market. Con ella podrás gestionar tus ligas y torneos con los amigos. En mi época de estudiante seguro que le hubiese dado mucho uso, aunque supongo que ahora los estudiantes se dedicarán a otras cosas.

Con Marcagol podrás crear equipos que luego podrás meter en ligas o torneos. Al crear un campeonato te creará los enfrentamientos y en el caso de la liga podrás ver la clasificación. Podrás poner directamente los resultados a los partidos o usar un marcador online durante este (aunque hay que tener cuidado con el móvil donde se pone no se vaya a escapar una bola).

Marcagol

El código fuente de la aplicación es libre y podéis descargarlo desde Github. Para todos los que estáis interesados en usar Android Dataframework para trabajar con bases de datos en Android creo que el código es muy sencillo y podéis ver fácilmente como usarlo.

Espero que os guste y ganéis muchos campeonatos con la aplicación.

 

 

Diálogo para seleccionar un color

Para la nueva versión de TweetTopics que saldrá esta semana he tenido que crear un diálogo para seleccionar un color RGB. Hay muchos por Internet pero ninguno terminaba de convencerme. Prefería uno que mediante 3 SeekBars pudiese seleccionar el color. Os dejo una imagen de como queda.

Dialog Color

Os dejo también la clase para poder hacerlo ColorDialog.java y un código de como usarlo:

ColorDialog color = new ColorDialog(this, "Seleccionar color", "#000000");
color.setOnchangeColor(this);
color.show();

Luego usamos la interfaz ColorDialog.OnChangeColor para rescatar el color que hemos seleccionado.

@Override
public void changeColor(String rgb) {
  // lo que quieras hacer con el color
}

Una forma sencilla de obtener el color que necesitas.

Detectar cuando se está moviendo un ListView y cuando se para

Para la nueva versión de TweetTopics andewebs me propuso cargar los avatar y los enlaces de los tweets sólo cuando el ListView estaba parado para así mejorar la velocidad y no recargar el sistema con la creación y cancelación de AsyncTask.

La mejora ha sido consirable y ahora al moverte por la lista de tweet todo funciona mejor.

A continuación os dejo un pequeño tips para que veáis como lo he hecho. La parte de control de los AsyncTask la dejo ya que eso cada uno en su programa lo hará a su forma.

Si vuestro layout en las filas contiene mucha información podéis probar a usarlo.

mListView = new ListView(this);
mListView.setOnScrollListener(new OnScrollListener() {

	@Override
	public void onScroll(AbsListView arg0, int firstVisibleItem, 
		int visibleItemCount, int totalItemCount) {			
	}

	@Override
	public void onScrollStateChanged(AbsListView view, int scrollState) {
				
		if (scrollState==SCROLL_STATE_TOUCH_SCROLL) {
			move = true;
		}
				
		if (scrollState != OnScrollListener.SCROLL_STATE_FLING
			&& scrollState!=SCROLL_STATE_TOUCH_SCROLL) {
			move = false;
			// código que quieres que se produzca cuando se para
		}
	}

});

....

public boolean isMoving() {
    return move;
}

Los fallos y cosas que no me gustan del Samsung Galaxy S2

Desde hace poco tiempo tengo el Samsung Galaxy S2 y sólo tengo que decir que es, con diferencia, el mejor móvil que he visto. Su pantalla es realmente impresionante y todos los detalles del teléfono son de gran calidad. Pero no estoy aquí para hablar de lo bueno del teléfono, que es mucho, sino de lo que no me gusta o lo que he visto raro, quizás muchas veces acostumbrado a la forma de trabajo del Nexus One.

  • Falta un LED. Esto es tan ridículo como que Apple no le ponga radio al iPhone (o todos los teléfonos que no traen radio FM). No se lo que cuesta, pero la falta de LED de colores es un paso atrás en el teléfono que hay que acostumbrarse. Hay alternativas, pero no es lo mismo.
  • Bolita o cursor. Acostumbrado a moverme con el cursor por los textos cuando escribía un mensaje ahora tengo que usar el cursor en pantalla y para nada es tan preciso.
  • Trabajar con la galería de fotos. Por alguna razón hay dos formas de compartir las fotos, una en el apartado "Compartir" y otra que se llama "Enviar por". Desconozco si es una personalización del sistema pero no entiendo porque dividirla en dos apartados que se accede de forma distinta para compartir fotos con las aplicaciones del sistema. Hasta que no te das cuenta de como funciona, te lías bastante, por lo menos yo. Por ejemplo durante unos días creía que no podía enviar más de una foto a Gmail desde la galería, hasta que no he encontrado el apartado que se accede de forma distinta si vas a enviar 1 foto o varias.

Galaería en Galaxy S2

Recuerdo que en mi Nexus One todo estaba en un mismo sitio. Eso si poner en dos columnas las aplicaciones al pulsar en Compartir si ha sido una buena idea.

  • Horrible Launcher. Nada que no se puede arreglar instalando ADWLauncher. Personalmente no me gusta.
  • Pantalla de desbloqueo. Simplemente horrible. Como siempre hay alternativas.
  • GTalk sin videoconferencias. Aún teniendo la versión 2.3.3 y cámara frontal todavía no puedo disfrutar de hacer videoconferencias en GTalk.
  • Sansumg Kies. Nunca me gustaron los programas de sincronización y este no sería una excepción. Supongo que los problemas de los fabricantes de no sacar versiones para Linux han hecho que los odie.

Otras cosas como pocos fondos de pantalla por defecto tampoco me han gustado. La lista creo que es bastante corta y supongo que muchas de ellas son cuestión de acostumbrarse. No hablo de las cosas buenas ya que de eso lo hacen otros y en 5 minutos con el teléfono en la manos te darás cuenta tu mismo.

Sin duda una gran compra la que he realizado.

Categorías Android Mis aparatos

Problemas al conectar a Identi.ca con twitter4j

Llevo trabajando desde hace 2 o 3 semanas en dar soporte a TweetTopics para conectarse a Identi.ca. Para todo el trabajo con Twitter en TweetTopics uso la librería Twitter4J, una librería que te ayuda con todo el trabajo de conectarse a la red social de Twitter y que supuestamente (y así es) también te deja conectarte a redes que soporte Status.net, como Identi.ca.

Para poder conectarte simplemente habría que cambiar una serie de propiedades de la librería, algo como esto:

System.setProperty("twitter4j.oauth.consumerKey","xxx");
System.setProperty("twitter4j.oauth.consumerSecret","xx");
System.setProperty("twitter4j.oauth.accessTokenURL", "https://identi.ca/api/oauth/access_token");
System.setProperty("twitter4j.oauth.authorizationURL", "https://identi.ca/api/oauth/authorize");
System.setProperty("twitter4j.oauth.requestTokenURL", "https://identi.ca/api/oauth/request_token");
System.setProperty("twitter4j.oauth.authenticationURL", "https://identi.ca/api/oauth/authenticate");
System.setProperty("twitter4j.restBaseURL", "http://identi.ca/api/");
System.setProperty("twitter4j.searchBaseURL", "http://search.identi.ca"); 

Pero por supuesto todo no iba a ser sencillo y tengo varios problemas. Después de muchos intentos fallidos pude contactar con Markus que estaba intentando hacer lo mismo que yo y hablé con él. Markus tiene una aplicación publicada en GitHub llamada StatusNetAndroid mediante la cual te puedes conectar a Identi.ca o Twitter. En base a este código he creado una pequeña aplicación de prueba para poder conectarme a las dos redes y guardar los usuarios en una base de datos usando Android DataFramework.

StatusNetConnect

Desde la aplicación se puede guardar un usuario y luego conectarte a su red y te muestra el nombre de usuario y el último tweet publicado. Pero tengo dos problemas:

  1. Si me conecto a un red luego no me puedo conectar a la otra. Tengo que tirar la aplicación (no sólo salir) y volver a entrar. Parece como si sólo se pudiese guardar las propiedades una vez y luego al volver a guardarlas no hace caso. Si me conecto a Twitter me envía a la página de Twitter para logarme, si luego pulso para conectarme a Identi.ca, me envía a la página de Twitter. Pasa lo mismo si me conecto a Identi.ca primero, cuando pulso luego para entrar en Twitter, entra en la web de Identi.ca para logarme
  2. No puedo logarme con el usuario de Identi.ca con la información almacenada en la base de datos. Si hago login en Identi.ca al volver me crea bien el AccessToken y puedo acceder a Identi.ca y veo el nombre de usuario y el último mensaje publicado, pero si lo hago desde la información en la base de datos no.

Estos son los dos problemas, a Markus le pasa igual. El primero creo que debe ser problema de la librería Twitter4j, y el segundo, posiblemente también.

Si alguien tiene ganas de hacer pruebas, os dejo el código fuente en GitHub. Espero poder solucionarlo pronto.

Categorías Android Programación