Presentación estetoscopio

Post on 15-Aug-2015

250 views 0 download

Transcript of Presentación estetoscopio

EstetoscopioEnvía mensajes de depuración a tu móvil desde tus aplicaciones Una aplicación nativa android desarrollada durante el curso Developing Android Apps - GDD Tenerife - 2015 https://www.udacity.com/course/developing-android-apps--ud853

Juan Ignacio Rodríguez de León@jileon en twitter

¿Qué hace?Muestra en pantalla mensajes enviados por UDP

Los mensajes tienes niveles, al estilo de los mensajes de Log

Los mensajes están pensados para ayudar en la depuración de código, cuando no puedes hacer un print (Por ejemplo, desarrollo en servidores)

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Mensajes de aviso (WARNING) Nivel de amenaza indeterminado: Puede que sea un

problema para ti, o quizá no. Tranquilidad

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Mensajes de aviso (WARNING) Nivel de amenaza indeterminado: Puede que sea un

problema para ti, o quizá no. TranquilidadMensajes de error (ERROR)

La cosa pinta mal. Hay un problema y casi seguro que es culpa tuya.

Niveles de mensajesMensajes de tipo informativo (INFO)

Nivel de amenaza inexistente

Mensajes de aviso (WARNING) Nivel de amenaza indeterminado: Puede que sea un

problema para ti, o quizá no. Sigamos tranquilosMensajes de error (ERROR)

La cosa pinta mal. Hay un problema y casi seguro que es culpa tuya.

Mensajes de pánico (PANIC) Problemón. Algo ha ido catastróficamente mal.

Ponte las pilas.

¿Cómo lo hace? (1/2)• Instala un servicio. El servicio usa un Thread

para oír datagramas UDP en el puerto 31416 • Cuando llega un mensaje el servidor lo

almacena en una base de datos SQLite • El servidor notifica a la actividad principal que

ha llegado un nuevo mensaje usando LocalBroadcast

¿Cómo lo hace? (2/2)• En la actividad principal hay un Adapter que vincula una ListView con la base de datos

• Hay un CustomView que muestra gráficamente la proporción entre los niveles de los mensajes que han llegado

Demasiado rojo mala señal

A la hora de vincular el socket UDP, Android te vincula a la dirección IP local, por lo que no acepta conexiones desde otras máquinas.

Problemas encontrados

A la hora de vincular el socket UDP, Android te vincula a la dirección IP local, por lo que no acepta conexiones desde otras máquinas.

Problemas encontrados

Solución: Hay que indicar la dirección 0.0.0.0 cuando vinculamos el socket, para que este oiga en cualquiera de las interfaces de red.

Pensaba que podía superarlo…

La verdad es que Odio a muerte no acabo de estar cómodo programando en Java. Es un inconveniente importante para desarrollar aplicaciones Android

El auténtico problema

… pero me equivocaba

No hay razones de peso para que no se pueda usar otros lenguajes que funcionen en la JVM.

Al principio probé con Scala como reemplazo. Es posible hacerlo pero resulta complicado. Conseguí compilar y ejecutar un “Hola, mundo”, pero acabé a la una de la mañana, no muy seguro de cómo lo había conseguido.*

La solución

* Estoy seguro de que personas más inteligentes que yo tendrán una experiencia diferente y podrán hacerlo con facilidad. Scala es un lenguaje excelente. No se le puede culpar por mi torpeza.

Con Groovy fue mucho más fácil. De hecho, la aplicación está desarrollada enteramente en Groovy.

Groovy es un lenguaje con capacidad funcional, dinámico y con muchísimas virtudes. Se integra muy bien con Java. Mucho más cercano a mi experiencia, que ahora mismo en un 90% de desarrollo en Python y un 10% en Javascript.

Como en todo, hay ventajas e inconvenientes.

Groovy

Ventajas de GroovyCasi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Ventajas de Groovy

Mucho más avanzado que Java: Clausuras, Intents, programación funcional, dinámico vs estático, metaclases, funciones virtuales y muchas cosas más

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Casi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

Ventajas de Groovy

Mucho más avanzado que Java: Clausuras, Intents, programación funcional, dinámico vs estático, metaclases, funciones virtuales y muchas cosas más

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Casi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

Relativamente fácil de conseguir que funcione con Android Studio. Solo hay que tocar un fichero .gradle

Ventajas de Groovy

Mucho más avanzado que Java: Clausuras, Intents, programación funcional, dinámico vs estático, metaclases, funciones virtuales y muchas cosas más

* Como siempre, el diablo está en los detalles. Pero son pocas las diferencias.

Casi* un superconjunto de Java. Los desarrolladores de java tienen una curva de aprendizaje suave. Pueden usar las nuevas capacidades poco a poco.

Relativamente fácil de conseguir que funcione con Android Studio. Solo hay que tocar un fichero .gradleMenos niveles de abstracción. Menos código. Menos objetos y clases. Más legibilidad.

Inconvenientes de GroovyHay un plugin de integración con Android Studio. Está bien pero con algún defecto. Nada importante.

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto.

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto en realidad tendría que ir en ventajas

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto eEl tipado dinámico puede ser una fuente de nuevos errores (Pero programas usando tests, ¿Verdad?)

Inconvenientes de GroovyHay un bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existen herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto eEl tipado dinámico puede ser una fuente de nuevos errores (Pero programas usando tests, ¿Verdad?)

El logo de Groovy es horrible. No, en serio. ¿En qué estaban pensando?

Inconvenientes de GroovyHay un plugin de integración con Android Studio. Está bien pero con algún defecto. Nada importante.

Al final es una librería más, así que aumentará el tamaño del programa. Existe herramientas para esto. Hay que superar los límites mentales impuestos por Java. Esto eEl tipado dinámico puede ser una fuente de nuevos errores (Pero programas usando tests, ¿Verdad?)

El logo de Groovy es horrible. No, en serio. ¿En qué estaban pensando?

Qué he aprendidoGroovy Mola. Mucho.

Android (4%) (Antes: 2%)Groovy (33%) (Antes: 0%)El desarrollo en Android es muy lento, por culpa de tener que probar todo en un emulador.Todo lo que puedas desarrollar y testear fuera del emulador va en tu beneficio (Pero no es fácil)

Código fuente en:https://github.com/euribates/estetoscopio