La experiencia de desarrollar una App Android en mi tiempo libre

Después de volver de Ecuador en donde estuve trabajando intensamente en un proyecto que me absorbía casi todo el tiempo decidí tomarme un descanso. En ese tiempo pensé en empezar a aprender a desarrollar apps en Android así que me puse a hojear la documentación oficial respecto al diseño y posteriormente empecé a hacer los ejemplitos que había en la documentación técnica. Entonces me dije, ¿por qué no intentas poner en práctica todo lo que vayas aprendiendo en una aplicación que tenga una utilidad real?, y así es como nació Peak Hour.

La primera versión era realmente sencilla pero me sirvió por un lado para aprender los conceptos básicos de Android (Activities, ciclo de vida de las mismas, tantear el IDE que por entonces decidí empezar con Eclipse aunque poco después migré a Android Studio, notificaciones, etc) y por otro tantear el mercado de apps y concretamente la de gestión de Pico y Placa y transporte en general. Estuve jugando con el código un par de meses o tres y para principios de 2015 ya tenía algo que más o menos funcionaba, el problema era que desde que había empezado a trabajar en Planeta Huerto no me quedaba mucho tiempo libre por lo que no fue hasta febrero de 2015 que presenté la app a mis compañeros de Ecuador.

La primera sensación fue decepcionante, a pesar que cuando estuve en Ecuador era muy cotidiano preguntarse entre los compañeros a quién le tocaba Pico y Placa, cuando se la envié a la gente de allí casi nadie la instaló, creo que no les parecía muy útil y eso me hizo replantearme si valía la pena seguir mejorándola. Después de este chasco la tuve medio abandonada durante unos cuantos meses, 5 o 6, en los que sólo hice un par de arreglos y poco más. En esos meses aproveché para hacer un par de cursos MOOC que me ayudaron mucho a entender como está diseñado Android, aprender muchísimo sobre todo de los patrones de diseño que utiliza el sistema, y detectar los problemas que tenía mi app y ver los errores que había cometido durante mi primer abordaje. Ahí es cuando dije, vamos a hacerlo un poco mejor y así también afianzas las cosas que has aprendido en los cursos. También me planteé que si quiero que la app sea utilizada masivamente tiene que ser más flexible y soportar las reglas de más ciudades a parte de Quito y así es como surgieró la versión 0.2 en las que se añadió el soporte multi-vehículo y la versión 0.3 en la que rediseñé completamente el manejo de reglas para que fuera muy sencillo añadir nuevas ciudades.

Estos dos cambios han resultado ser fundamentales, a partir de ese momento empezamos a crecer horizontalmente o lo que es lo mismo, se empezó a utilizar la aplicación en muchos otros sitios como Colombia, Brasil, Bolivia o Costa Rica, pero sobre todo en Colombia que es actualmente el mercado principal de la app. Es muy gratificante pensar que algo que tu has creado le está siendo útil a casi 300 personas, y eso es lo que te impulsa a seguir adelante. Ya os digo yo que por el dinero no es, de momento la app da para tomarse un poleo al mes y poco más, pero saber que toda esa gente no olvida su Pico y Placa y que seguramente se ha salvado de alguna multa gracias a la app, la verdad es que te alegra el día.

 

¿Y qué pasará con la app en el futuro?, pues de momento tengo planificados un par de cambios que ya tengo medio implementados y dependiendo de como vaya la cosa y si tengo tiempo hay muchas ideas en una libreta que parece que va siendo hora de ir sacándolas.

 

Ya os iré contando.

Cómo nunca debería diseñarse una aplicación Android

He liberado el código fuente de Peak Hour 0.1 y lo pongo como ejemplo de cómo nunca debería diseñarse una aplicación Android. Para la versión 0.2 se rediseñó completamente la app pero eso ya lo veremos cuando vaya liberando las siguientes versiones.

La licencia de Peak Hour es GPL 3, podéis echarle un ojo al código en github. Os animo a que me hagáis preguntas tanto de la parte de diseño como de algún aspecto concreto del código, estaré encantado de responderos.

 

https://youtu.be/JmzYjVeOQ_I

 

Cheli

Peak Hour 0.3 con Soporte Multi-Ciudad y la posibilidad de adelantar las alarmas

Ya tengo lista la nueva versión de Peak Hour, las novedades son las siguientes:

 

  • Soporte multi-ciudad (Colombia).
  • Posibilidad de configurar cuanto tiempo queremos adelantar las alarmas.

La idea era diseñar un sistema de reglas que me permitiera añadir, quitar o actualizar fácilmente las ciudades. De momento se ha implementado el caso 1 que consiste en que cada día de la semana (Day Of Week) se le aplica el Pico y Placa a una serie de números de placa concretos.

 

Boceto de caso 1

Este caso de uso me ha permitido añadir las siguientes ciudades:

  • Armenia
  • Barranquilla
  • Bucaramanga
  • Cali
  • Cartagena
  • Medellín
  • Pereira

 

Seleccionar Ciudad

Además ahora se permite configurar cuánto tiempo queremos adelantar las alarmas, las opciones son:

  • Apagado
  • 5 minutos
  • 15 minutos
  • 30 minutos
  • 1 hora

 

Adelantar Alarma

Os animo a que la instaléis o a que actualicéis desde Google Play.

 

Cheli

Activar Proguard en Eclipse para Android

Una de las recomendaciones antes de publicar tu app Android en la Play Store es activar Proguard. Y ¿Qué es Proguard ? pues no es más que una clase Java que optimiza, verifica, comprime y ofusca el código. Es muy útil porque las app android se distribuyen en un archivo apk que permite con no mucha dificultad hacer ingeniería inversa, cosa que en mi caso al desarrollar software libre no es muy importante pero para muchos desarrolladores si lo puede ser. Además el tamaño del archivo apk termina siendo mucho menor y eso de nuevo vuelve a ser importante ya que  no está permitivo subir una app a la Play Sotre con un tamaño superior a 50MB. En mi caso el tamaño de PeakHour.apk pasó de 2.4 a 1.5 megas, como veis si se nota bastante.

 

Para activar Proguard tal y como queda el proyecto en una instalación de Eclipse para Android (el que viene en el Android Bundle) es muy sencillo, únicamente hay que descomentar una línea en el archivo «project.properties».

 

Proguard

 

Lo que va a suceder a partir de ahora es que cada vez que exportemos la aplicación para firmarla y subirla a producción esta va a ser procesada por Proguard. Las reglas que va a utilizar son las que de los archivos «${sdk.dir}/tools/proguard/proguard-android.txt» y «proguard-project.txt«. El primero viene en la instalación del sdk y trae reglas estándar, el segundo es local a nuestro proyecto y viene sin reglas con la intención de que si necesitamos añadir alguna regla personalizada la pongamos en este archivo. Además existe otro archivo en «${sdk.dir}/tools/proguard/proguard-android-optimize.txt» que es igual al anterior pero con ciertas optimizaciones activadas, así que podemos utilizar uno u otro según convenga.

 

Hay que tener en cuenta una cosa cuando utilicemos Proguard, y es que al ofuscar el código reemplaza el nombre de clases, métodos y atributos dejando un archivo de mapeo de los cambios que ha realizado. Es muy importante guardar este archivo ya que en cada nueva versión se generará un mapeo diferente y lo que es peor, el mapeo anterior quedará sobreescrito por el nuevo. Si no vas guardando el archivo de mapeo de cada versión no serás capaz de descifrar la clase, método o atributo cuando recibas una traza de un usuario al producirse algún error. Lo suyo en estos casos es utilizar el control de versiones o ir renombrándolos antes de que sean sobrescritos, por ejemplo mapping-1.txt, mapping-2.txt

Para poder descifrar una traza tendremos que utilizar esta orden:

 

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

 

Por último comentar que estos archivo que genera Proguard se almacenan en el directorio «proguard» de nuestro proyecto y como veremos a parte del archivo de mapeo también nos genera algunos más como el volcado del proceso «dump.txt«, etc.

 

Cheli

Instalar App Android en Tarjeta SD Externa

https://youtu.be/TYUg4DkJboE

 

Recordar, los 3 valores posibles son:

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal|auto|internalOnly"
    ... >

preferExternal: Se instalará en la memoria SD externa excepto en el caso que no haya espacio suficiente disponible.

auto: Se instalará en la memoria interna o externa en función de varios factores de configuración de nuestro dispositivo.

internalOnly: Es la opción por defecto. Se indica explícitamente que la aplicación se instalará en la memoria interna.

 

Cheli

Cómo instalar Peak Hour en Android desde la web

Os dejo un vídeo donde explico como instalar Peak Hour en Android descargándolo desde esta Bitácora. Ya sabéis que estoy a la espera de tener todo el material necesario para subir la app a la Play Store, en cuando esté subida os aviso.

 

https://youtu.be/2WKvOx9XWws

 

Cheli

BQ edita unilateralmente los mensajes de clientes en el foro

Me ha sucedido una cosa en el foro de BQ que me ha dejado anonadado. Pero vayamos primero a los antecedentes.

 

BQ anunció en mayo de 2014 que sacaría la actualización a Android 4.4 Kit Kat para el modelo Aquaris 5. En septiembre, 4 meses después, sacó dicha actualización pero con una serie de problemas que hacían imposible el uso de dicha versión. Algunos de esos problemas eran la pérdida de cobertura, reinicios, se eliminaban los iconos de aplicaciones al reiniciar, etc.

Estamos ya en febrero de 2015 y aún no ha aparecido la actualización lo que ha provocado más de 1100 comentarios en el foro y la críspación de muchos de los usuarios de dicho modelo. La respuesta de BQ siempre ha sido que están trabajando en ello, la cual repiten cada 3 o 4 semanas, casi es un copia y pega. Las sospechas definitivas de que no lo estaban haciendo es que hace un mes anunciaron un plan renove en principio sólo para dicho modelo, y visto la acogida luego lo ampliaron a otros.

 

Bueno, pues ayer había un comentario de un cliente diciendo que se había cambiado al Motorola Moto G 2014 y que se acabaron los problemas porque ya tenía Android 5.0 Lollipop. Yo también cambié a dicho modelo hace unos 3 meses, mi viejo BQ se lo quedó mi hermana, y le contesté diciendo que tenía el mismo móvil y que cuanto tiempo hacía que le había llegado la actualización porque a mi todavía no me ha llegado. Pues bueno, BQ me modera el comentario y me lo edita poniendo lo que ellos quieren y recibo un correo-e con la notificación de que lo han hecho. Intento contestar a dicho correo-e pero es el típico noreply y me viene devuelto. Entonces edito mi comentario del foro y indico que eso no lo he dicho yo, que me han editado el comentario y que bueno, es cierto que nombrabamos otra marca y que para eso si que contestan y nos censuran (en este caso con razón) pero para mantenernos informados y decirnos como va la corrección de eso no saben nada. Total que se han acogido a una norma del foro que indica que no puedes hacer comentarios sobre la moderación para eliminarme el mensaje.

 

Pues mira, lo que hacen está muy mal, entendería que me borraran el mensaje porque infrinjo una norma del foro pero no que me editen el mensaje para que pongan en mi boca lo que BQ quiere que diga y que yo obviamente no he dicho. Pero claro, ellos editan el mensaje y ponen lo que quieren pero luego tu no puedes hacer ningún comentario al respecto, ni si quiera decir que eso no es lo que tu has dicho, porque entonces estás hablando de la moderación y por tanto estás infringiendo esa estúpida regla de que no puedes hacer alusiones a la moderación y en consecuencia te van a borrar el mensaje.

 

En resumen, editan los mensajes unilateralmente y no puedes hacer nada.

 

La verdad es que BQ me tiene muy decepcionado, he pasado de estar super contento a la decepción total. A pesar que siempre defiendo las marcas españolas esta vez ya no podré seguir haciéndolo, entre que la calidad del soporte que era su punto fuerte ha caido  estrepitosamente y que los precios cada vez son menos competitivos ya no resulta tan interesante comprar un BQ. Ya tienen que cambiar mucho las cosas para que mi antiguo Aquaris 5 no sea mi último producto BQ.

 

Un saludo.