Qué smartphone uso para desarrollar en Android

A diferencia de iOS, con Android podemos programar una aplicación de principio a fin y publicarla en Google Play sin necesidad de un smartphone. Esto, junto a una cuota de publicación irrisoría (25$) y posibilidad de desarrollo desde cualquier sistema operativo; ha convertido Android en la opción número uno para aquellos que empiezan con el mundo de las apps.

Las alternativas virtuales

Las primeras opciones que nos encontramos nada más instalar el entorno de desarrollo de Android es AVD (Android Virtual Device). Encontraréis toda la información acerca de esta herramienta en este enlace. A grandes rasgos, es una herramienta que permite gestionar cuantos dispositivos virtuales queramos con las características físicas y de software que queramos darle. Lo cual es muy útil para testear en pantallas de diferentes tamaños y resoluciones, diferentes versiones de Android, etc.

Pantalla de configuración del dispositivo virtual

El problema que ha tenido casi siempre AVD es su pobre rendimiento, al menos en las primeras versiones. Esto se ha ido depurando y mejorando con el tiempo. Si eres poseedor de un procesador Intel compatible con Intel HAXM, no tendrás ningún problema. Las imágenes de Android X86 utilizan la tecnología VT-x de Intel. Pero si al igual que yo, eres poseedor de una CPU AMD, entonces quizás AVD no sea la mejor opción, ya que tu única opción pasa por usar una imagen ARM de Android, lo cual en una plataforma X86/AMD64 (un PC), da un rendimiento malo.

Genymotion como alternativa a AVD

Desconozco si ha salido algo por parte de Google y AMD para solucionar esto, pero lo cierto es que muchos programador, entre los que me incluyo, hace tiempo que olvidamos el tema de AVD gracias a Genymotion. Genymotion es un emulador Android que funciona realmente bien tanto en plataformas Intel como AMD, con un rendimiento muy superior a AVD (al menos en CPU AMD). Cuenta con opciones muy interesantes como voltear la pantalla, usar la webcam como cámara del dispositivo virtual, es altamente configurable y gratuito (aunque también cuenta con un plan de pago para desarrolladores profesionales y empresas). Como únicas contrapartidas decir que requiere de VirtualBox para funcionar y que las imágenes con las últimas versiones de Android no están disponible tan rápido como en el caso de AVD.

Todo esto está muy bien para ir probando las primeras versiones de nuestra aplicación o juego; pero es altamente recomendable probar las aplicaciones en dispositivos físicos por muchas razones que son difíciles de emular: inestabilidad de señal móvil, acelerómetro, experiencia de usuario, rendimiento, etc. Lo ideal sería contar con un gran abanico de dispositivos que cubrieran el mayor porcentaje posible de combinaciones de hardware y software. Pero no a todos nos apetece tener la zona de trabajo llena de teléfonos, o igual tampoco lo consideramos extrictamente necesario y quizás no lo sea (al menos no para apps de propósito general o sencillas).

El Nexus 6P fabricado por Huawei es con diferencia el mejor Nexus que ha pasado por mis manos

Los dispositivos físicos

Pasamos al mundo de los smartphones como herramienta de desarrollo. Para ello Google creó la familia Nexus, de los cuales he poseído varios. Lo mejor de los Nexus es que obtenemos una versión de Android tal y como Google concibe su propio sistema operativo. Como es lógico, son los primeros dispositivos en actualizar a la última versión de Android. Tamibén son los que más actualizaciones de seguridad mensuales reciben. A menudo nos referimos a su versión de Android como “Android puro” pero lo cierto es que no son tan puros. Sobre todo por las gapps (Google Apps que a menudo no podemos desinstalar sin root, solo deshabilitar). Si quieres Android puro de verdad, mejor pásate por aquí.

El Nexus One fue el primer Nexus que tuve y mi segundo móvil con Android

Actualmente tengo el Nexus 5X 32GB. Un terminal que al salir al mercado tenía un precio más alto del que se esperaba para sus especificaciones; pero que a día de hoy se puede encontrar como nuevo por menos de 200 €. Como móvil personal me está gustando mucho. Tiene muy buena cámara y un tamaño más manejable que mi anterior Oneplus 3T o Huawei Nexus 6P. Pero no tiene un rendimiento tan fluido como los que acabo de citar, sobre todo en temas de multitarea.

Aunque el tema de la RAM es algo negativo, como móvil para desarrollo es preferible tener un equipo más limitado. De esta forma podemos obtener un feedback más cercano a lo que pueden experimentar usuarios con terminales más limitados.

Con la certificación oficial de Android (2/2)

Ha llevado su tiempo, más de lo esperado, pero por fin pude hacer la segunda parte del examen (entrevista) de la certificación oficial de Google para Android.

badge-6088

Puedes leer la primera parte aquí.

¿Qué pasa cuando ya he enviado mi proyecto?

Pues simplemente tienes que armarte de paciencia, ya que oficialmente son unos 45 días los que puede llegar a tardar Google en notificarte que tu código ya está revisado. En mi caso se ha demorado un poco más porque me faltó subir mi identificación (DNI) al entregar el proyecto. En caso de que hayas pasado esta primera parte, en el email que recibirás tendrás un enlace para elegir el horario de la entrevista que tendrás que pasar. Dan muchos días para escoger y horarios diferentes, si un día no tiene el horario que interesa, prueba con otro.

Una vez elegido el horario recibirás un email con la información de tu entrevista. Ésta se realiza a través de una aplicación llamada Zoom. Me esperaba Hangout o Skype, pero no.

Personalmente nunca he usado Zoom, pero su uso es muy sencillo. Te dan un enlace, el cual el navegador detectará que se abre con Zoom y entrando a la hora que te han dado pasarás a una “sala” para conversar con tu examinador/a. Como nunca había usado esta aplicación, una hora antes quise ver qué pasaba abriendo la sala y me encontré con la examinadora la cuál ya estaba allí lista, y aunque después de darle mis datos me comentó que mi revisión era más tarde, podíamos hacerla ya (cosa que hice).

¿De qué va la entrevista?

Antes de empezar tendrás que darle tus datos personales y enseñar a través de la webcam tu DNI. Asegúrate de que todo funciona como debe antes de empezar (vídeo, sonido, micrófono,…).

Como te podrás imaginar, la entrevista va sobre la aplicación que has hecho, aunque también caen algunas preguntas sobre algunos conceptos de Android. Las preguntas son del tipo:

  • ¿Qué es lo que te ha parecido más fácil?
  • ¿Qué te ha parecido más difícil?
  • Cómo has resuelto esta parte del ejercicio.
  • Algunas cuestiones sobre Android; aquí te puede caer de todo: almacenamiento, Material Desing, Tareas, Widgets, Servicios, etc.

Por supuesto, se espera que siempre argumentes un poco tus respuestas. Pero no te asustes, no te tienes que saber la API de memoria.

La entrevista dura unos 10-15 minutos (depende de lo mucho que te enrolles) y es en inglés. Si el tema del idioma te da un poco de respeto, yo tengo un nivel medio y pude hacerla sin mayores problemas. Sólo en una ocasión tuve que pedirle a la examinadora que escribiese por favor la pregunta a través del chat porque no estaba seguro completamente de lo que me quería decir. El trato fue siempre excelente y muy comprensiva.

Una vez terminada la entrevista, te informa de que en unos días recibirás un email con el resultado y listo.

prtscr-capture

En efecto, en un par de días yo recibí mi certificación, que no es más que un badge para que lo incluyas en tu perfil de Linkedin, CV, etc. Este es el mío.

Y poco más que contar. Es una certificación sencilla, si tienes experiencia en Android te la sacarás sin mayores problemas. No van a pillar como puede pasar con la certificación de Java y por lo que cuesta, puede que pueda resultar útil en algún proceso de selección.

Con la certificación oficial de Android (1/2)

Hace unos días me presenté a la primera parte de la Certificación Oficial de Android; en este caso hablamos de la Associate Android Developer Certification, siguiendo con mi plan de formación continua y aprovechando el precio promocional al que se encuentra (99$ en lugar de 149$). Supongo que al igual que pasa con Java y otras certificaciones, más adelante irán añadiendo más niveles para sacar algunos dólares más.

k2189akkm

El examen constan de 2 partes, la primera es una aplicación que debemos terminar siguiendo ciertas indicaciones y la segunda, será una entrevista personal. Esta segunda parte la desconozco ya que actualmente me encuentro a la espera de que evaluen mi entrega (el plazo se puede demorar hasta 45 días).

¿Qué hago si quiero certificarme en Android?

  • En primer lugar tendrás que pagar las tasas del examen.
  • A continuación tendrás que descargar el ZIP con el código fuente del proyecto y el enunciado lo encontrarás en la página web de la certificación.
  • Hecho esto, tenemos 48h para subir el examen, así que mi consejo es que paguéis las tasas sabiendo que vais a tener 2 días tranquilos por delante.

¿Qué necesito saber sobre Android para superar la certificación con garantías?

La aplicación en sí no es nada del otro mundo, aunque no puedo compartir el enunciado por temas de “honor” que te obligan a aceptar, sí puedo comentaros un poco qué parte de la API hay que usar (principalmente).

  • Content Providers
  • SQLite
  • Widgets
  • Programador de tareas
  • Testing
  • RecyclerView y Adapters
  • Diseño de UI
  • Tareas en segundo plano

De una forma general os podéis hacer una idea. Puede que el examen vaya cambiando con el tiempo y la parte de la API que debemos usar también.

Ahora hablemos un poco del examen, sin hablar mucho de él. La aplicación que nos entregan es un proyecto para importar en Android Studio. Algunas de las pantallas así como sus requisitos están sin terminar, otros sin empezar y otros puede que ya estén completamente implementados. Afortunadamente la aplicación es sencilla en todos los sentidos y de lo que se trata es que en 48h podamos resolver una serie de mini-problemas tocando diversas partes de la API.

A parte de la documentación oficial, como libro de apoyo he utilizado éste.

En cuanto vaya teniendo noticias sobre la segunda parte, iré actualizando.

Cómo prepararse la certificación de Java SE 8 Programmer – OCA (1Z0-808)

¿Estás pensando en estudiar y preparte por tu cuenta la certificación de Java SE 8 Programmer (1Z0-808) y no sabes por donde empezar? Pues entonces este post te puede interesar.

Como os comenté hace un tiempo, como programador freelance creo importante el tema de la formación contínua. En la informática en general es vital y aunque la certificación de Java 8 (1Z0-808) se podría decir que es la más básica para un programador Java, me pareció un buen punto de partida, y de paso afianzar conocimientos.

oracle-certified-associate-java-se-8-programmer

Lo que os voy a comentar es mi experiencia, lo que me ha servido para aprobar y nadie debe de tomarse esto como una garantía hacia el aprobado de la certificación. Yo he usado este libro como os comenté.

Es un libro muy sencillo de entender, que va directamente al grano, da por hecho que tienes cierta base de Java y de programación orientada a objetos, por lo que no lo recomiendo como libro de aprendizaje desde cero.

Los 6 temas son:

  1. Java Building Blocks
  2. Operators and statements
  3. Core Java APIs
  4. Methods and Encapsulation
  5. Class Design
  6. Exceptions

Al final de cada tema te encuentras con un pequeño examen de unas 20-30 preguntas con la dificultad añadida de que no sabes el número de respuestas correctas en cada pregunta (puede que una pregunta tenga una sola respuesta correcta, dos, tres, …). En el examen oficial, en cada pregunta te dirán el número de respuestas correctas que hay.

Como metodología recomiendan que si después de hacer el test del temario no lo apruebas con un porcentaje elevado, vuelvas a leer el tema y repitas el test.

El libro te propone como periodo de preparación unos 3 meses. En ese tiempo considero que si te lo tomas en serio, pasas el examen sin ningún tipo de problema.

¿Mejor estudiar o mejor hacer muchos tests?

Pues os diré que a parte de las preguntas que vienen en este libro, finalmente no hice ni un solo test antes del examen. Creía que por ello lo tendría más difícil pero lo cierto es que es mejor entender bien el temario y los ejemplos que hacer tests a lo loco sin llegar a entender los conceptos bien.

¿Cómo es el examen?

Una vez compras el voucher en Pearson Vue, tienes 6 meses para utilizarlo. Buscas los centros que mejor te vengan (por Sevilla hay varios) y eliges una fecha y hora de las disponibles. Puedes cancelar el examen y elegir otra fecha siempre que lo hagas con un mínimo de 24h de antelación.

El día del examen llega con 15 minutos de antelación y lleva doble identificación; por ejemplo DNI + Carnet de conducir o también valdría DNI + Tarjeta de Crédito. No sé por qué, pero a mí me lo pidieron.

Después del proceso de Check-in donde tienes que firmar algún documento de conducta, soltar todo lo que llevas encima (móvil, cartera, reloj, …) te echan una foto, que es la que aparecerá en la web de Oracle y pasas al PC. Cuando el encargado del examen te abre la aplicación, pinchas y tienes 10 minutos para leer las instrucciones (da tiempo de sobra).

La certificación cuenta con 77 preguntas repartidas a lo largo de todo el temario de forma equitativa y dispones de 150 minutos que se me pasan más rápido de lo que te crees. Iba con miedo de que me faltara tiempo pero al final casi me sobraron 40 minutos. Ojo, que más de un compañero se ha quejado de que son demasiadas preguntas para el tiempo que tienes. En muchas de ellas tienes que pararte a depurar y si te entretienes más de la cuenta se te acaba echando el tiempo encima.

Si de una pregunta no estás muy seguro siempre puedes volver hacia atrás o mucho más útil, marcarlas para revisar con el check correspondiente y al finalizar te saldrán todas las preguntas que has marcado para revisar.

Por cierto, hablando de depurar, en el centro donde hagas el examen te facilitarán papel y lápiz o lo que sea para hacer tus operaciones. Finalizado el examen, todo lo que hayas escrito es destruido.

Asegurate de finalizar el cuestionario pulsando FINISH y ya solo queda esperar al correo de Oracle para consultar tu calificación. La calificación no va en el correo, si no que tienes que acceder a la web de Oracle para consultarlo.

Es necesario responder bien al menos el 65% de las preguntas. Un detalle es que en el correo que te mandarán los errores que has cometido por si quieres mejorar en ese aspecto.

Por último, si has probado en un plazo máximo de 48h tendrás acceso a tu certificación y a una serie de herramientas para poder compartir una URL pública y demostrar tu certificación tal como ésta.

Y nada más, si hay algo en lo que os pueda ayudar, no dudéis en dejar un comentario y os responderé lo más pronto posible.

Migrando a GitLab como repositorio Git en Android Studio

Lo reconozco, nunca he sido de usar GitHub. Los proyectos personales no he sentido la necesidad de compartirlos de forma pública. Por otro lado, en el trabajo siempre habíamos usado subversion, donde me sentía más cómodo. Pero los tiempos cambian y quería darle una oportunidad a Git como repositorio para mis proyectos Android. Más concretamente estoy migrando de Assembla (Subversion) a GitLab, la alternativa a GitHub con repositorios privados gratuitos.

277d9badcbd723e913b3a41e64e8d2f3d2c80598

Lo primero es tener instalado Git en nuestro equipo. Esto dependerá del sistema operativo. Lo puedes instalar con algún administrador de paquetes tipo apt-get, si no, también puedes ir a la web y descargarte el instalador (como en los viejos tiempos). En mi casa tengo y uso tanto Ubuntu, Windows 10 y OSX, pero el proceso lo voy a desarrollar bajo Windows, que es donde primero he montado Git.

Una vez instalado Git, vamos a crearnos una cuenta gratuita en GitLab y damos de alta un repositorio privado:

New Project · GitLab - Mozilla Firefox

Para facilitarnos la tarea, GitLab ya nos indica los comandos que deberemos ejecutar, pero antes de continuar, deberás generar tu SSH Key para poder conectar con el repositorio de GitLab desde tu equipo. Esto tendrás que hacerlo por cada equipo que vayas a usar con el proyecto. Tienes todas la información de cómo generar la clave y añadirla en estos enlaces:

Crear la clave SSH: https://gitlab.com/help/ssh/README

Añadir tu clave a GitLab: https://gitlab.com/help/gitlab-basics/create-your-ssh-keys.md

Hecho esto, ahora ya podemos meternos de lleno con la consola de Git. En el instalador de Windows, se incluye una shell para la ejecución de los comandos:

MINGW64cUsersLuis

Los comandos para moverte a través de los directorios son los propios de Linux, aunque te encuentres en un sitema operativo Windows como es mi caso.

Ahora navegamos hasta el directorio raíz donde tenemos situado nuestro proyecto Android y ejecutamos la siguiente secuencia de comandos:

git init
git remote add origin git@gitlab.com:tuUsuarioGitlab/luisortiz-eu.git
git add .
git commit -m "Primer commit"
git push -u origin master

Con esto ya estaríamos tendríamos configurado nuestro directorio  de trabajo con Git y habríamos hecho push contra Gitlab. Si no quieres hacer commit ni push aún, ejecuta solo las dos primeras líneas. Si algo falla lo más probable es que la clave SSH no se haya configurado correctamente.

Ahora iremos a Android Studio y seleccionamos el proyecto anterior, al abrirlo Android Studio detectará que estamos usando git, si no es el caso, lo configuramos nosotros desde la siguiente opción:

Blog - [DAndroidworkspaceBlog] - [app] - ...appsrcmainjavaeuluisortizblogMainActivity.java - Android Studio 2.1.2

Hecho esto, ya tenemos todo configurado para trabajar desde Android Studio con Gitlab. Muy recomendable usar el plugin de .gitignore para gestionar los recursos que queremos que se ignoren a la hora de hacer commit & push a golpe de ratón, aunque la configuración por defecto nos debería de valer para empezar ignorando carpetas de gradle, build, etc.

Por ejemplo, después de añadir una clase, automáticamente Android Studio nos pregunta si queremos añadirlo a Git para que desde la opción de Version Control, situada en la parte inferior del IDE, puedas publicarlo en el repositorio:

Blog - [DAndroidworkspaceBlog] - [app] - ...appsrcmainjavaeuluisortizblogSplashActivity.java - Android Studio 2.1.2

Aunque posiblemente no vaya a disfrutar de las ventajas principales que ofrece Git contra SVN de momento, este primer acercamiento me ha dejado buen sabor de boca por su sencillez a la hora de configurarlo y por la posibilidad de trabajar con repositorios locales sin necesidad de estar conectado a internet.

Mejor libro para empezar a programar en Android

¿Con qué libro debería de empezar para aprender a programar en Android? Posiblemente haya muchas respuestas válidas. Cualquier libro que te introduzca en la API de Android de una forma coherente y que te vaya enseñando de forma ordenada los distintos componentes, clases y herramientas que tienes a tu disposición; debería ser suficiente para crear tu primera aplicación Android.

También habrá alguien que te diga que no es necesario ni mucho menos, un libro para aprender a programar con Android. Y eso es totalmente cierto desde mi punto de vista. Hay páginas web que ofrecen cursos gratuitos de Android muy completos. Posiblemente uno de los más completos y con el que comencé yo en este mundillo hace 5 años, es el curso de Salvador Gómez Oliver. Está en constante actualización por lo que no os tenéis que preocupar por los cambios que Google va introduciendo en la API de Android.

Siempre recordaré la frase que nos repetían en la Universidad cuando empezamos a aprender a programar (en Pascal, por cierto):

A programar se aprende programando.

Aunque parezca obvio, la mayoría de los libros de programación que han pasado por mis manos no te invitan a ello. Simplemente se recorren el framework de Spring MVC, las clases de Hibernate, la API de Android… y al final del capítulo lo que sueles tener en la cabeza son un montón de clases flotando y al cabo de un par de días has olvidado.

Por eso, si tuviera que recomendar un libro sobre programación Android, no sería un libro de referencia. No hay mejor libro de referencia que la propia documentacion en línea de Android. Si de verdad quieres aprender, o te pones a buscar ejemplos en las mil y una webs que existen con tutoriales en Android o buscas un libro que te invite a programar. Es es caso de:

Android Programming : The Big Nerd Ranch Guide.

La segunda edición de este libro está escrita partiendo como base de la versión Android 5.1 Lollipop. Lo cual aunque no es lo último de lo último, se puede considerar lo suficientemente actual como para partir como base para el aprendizaje de Android. En cada capítulo (más de 30) se van introduciendo nuevos conceptos, componentes que aprenderás con un ejemplo “del mundo real” que deberás de ir desarrollando a la vez que vas avanzando. Pasando desde lo más básico como Activities y Layouts, hasta servicios en segundo plano, estilos y temas, audio, animaciones, localización, etc. Usando para todo ello herramientas como Gson o servicios como la API de Flickr.

Sin duda una de las mejores formas de aprender a programar Android, si no tienes la oportunidad de ir a los cursos presenciales. Lo puedes comprar aquí:

Comprar libro Android
Pinchar en la imagen

Si estáis interesados en aprender otros lenguajes de programación siguiendo esta metodología tenéis otros libros disponibles para Objective-C, Cocoa o Swift.

Curso de MongoDB para programadores Java

MongoDB y Json son dos tecnologías que van de la mano. Para aquellos que estéis interesados en adentraros en este mundillo, en la web oficial de mongoDB tenéis una serie de cursos gratuitos para diferentes perfiles. Yo concretamente he empezado con éste:

https://university.mongodb.com/courses/M101J/about (para programadores Java)

El curso son 7 semanas y en cada una de ellas encontraremos varios vídeos teóricos (con subtítulos en inglés para quien los quiera activar). En cada semana además de preguntas breves opcionales, tendremos que realizar una serie de ejercicios. Estos ejercicios son un 50% total de la nota.

Al final de las 7 semanas habrá un examen, que contará el otro 50% de la nota final. Para obtener el certificado se requiere un 65%.

De momento como el único material disponible es el de la primera semana, no puedo daros mucha más información, pero por lo que llevo visto, se hace muy ameno y esto de MongoDB se ve realmente interesante y una buena alternativa a las bases de datos relacionales a las que estaba acostumbrado.

JSON en Android : Web de la DGT

JSON es un formato de datos que se ha impuesto en muchos servicios web por su facilidad de lectura y ligereza en Javascript. Aunque gracias a la librería Gson, hacerlo en Java es realmente sencillo (y por extención, en Android).

Para empezar deberemos incluir la dependencia en nuestro fichero de configuración de Gradle:

compile 'com.google.code.gson:gson:2.6.1'

Ayer con motivo del paso de la Vuelta Ciclista a Andalucía por Sevilla y la zona de la Cartuja (lugar donde trabajo), fui a consultar el mapa de la DGT para ver las incidencias de tráfico. Aunque la web de la DGT no dispone de una API pública para facilitar el trabajo a terceros (al menos que yo sepa), es posible comprobar las peticiones que se van realizando a través de las herramientas de desarrollo que incluyen los navegadores.API JSON DGT TRAFICO

No es el objetivo de esta entrada destripar las posibilidades que nos puede dar la web de la DGT para desarrollar aplicaciones haciendo peticiones a su servicio web, pero sí vamos a utilizar el resultado de una de sus peticiones para trabajar con el JSON resultante.

Más concretamente vamos a trabajar con este JSON:

http://infocar.dgt.es/etraffic/BuscarElementos?latNS=37.40515&longNS=-5.87751&latSW=37.34376&longSW=-6.06686&zoom=13&accion=getElementos&Camaras=true&SensoresTrafico=true&SensoresMeteorologico=true&Paneles=true&Radares=true&IncidenciasRETENCION=true&IncidenciasOBRAS=false&IncidenciasMETEOROLOGICA=true&IncidenciasPUERTOS=true&IncidenciasOTROS=true&IncidenciasEVENTOS=true&IncidenciasRESTRICCIONES=true&niveles=true&caracter=acontecimiento

Como véis la petición incluye una buena cantidad de parámetros y el resultado es un poco inmanejable a simple vista. Para empezar a entender los datos que tenemos os recomiendo un par de herramientas online y gratuitas. Yo personalmente trabajo con dos:

  1. https://jsonformatter.curiousconcept.com/
  2. http://www.jsonschema2pojo.org/

Con la primera le daremos formato al JSON de forma que sea más legible al ojo humano.

Con la segunda generaremos el POJO que se corresponde con el JSON, de forma que nos ahorramos la parte aburrida del trabajo.

Sabemos que este JSON es una lista de objetos y no un único objeto, ya que está contenido entre los caractéres ‘[‘ y ‘]’.

La clase obtenida a partir de la segunda herramienta online es la siguiente:

public class IncidenciaTrafico {
  private String carretera;
  private Integer estado;
  private String alias;
  private String sentido;
  private Double PK;
  private String tipo;
  private Double lng;
  private String codEle;
  private Double lat;
  private String precision;
  private String fecha;
  private String poblacion;
  private String descripcion;
  private String fechaFin;
  private String tipoInci;
  private Integer pkFinal;
  private String provincia;
  private String causa;
  private String hora;
  private Integer pkIni;
  private String icono;
  private String horaFin;
  private String nivel;
}

Una vez tenemos nuestro POJO, trabajar con Gson es muy fácil, ya sea para crear los objetos a partir del JSON, o lo contrario, a partir de nuestros objetos generar un JSON.

Document document = Jsoup.connect(url)
 .ignoreContentType(true)
 .timeout(5000)
 .post();

//Guardamos el JSON resultante de la petición a la web de la DGT
String jsonDgt = document.text();

Type typeIncidenciaTrafico = new TypeToken <List<IncidenciaTrafico>>() {}.getType();

Gson gson = new Gson();
List <IncidenciaTrafico> incidenciasTrafico = gson.fromJson(jsonDgt, typeIncidenciaTrafico);

Aunque no está reflejado en el fragmento de código. La petición con JSOUP debe de hacerse en segundo plano y no el hilo principal del Activity. Por ejemplo, usando AsyncTask.

Y con esto ya tendríamos todas nuestras incidencias en una lista de objetos del tipo que hemos definido al principio. Para el caso que manejamos, no parece tener mucho sentido el hacer el paso contrario, es decir, una vez tenemos la lista de objetos, generar un JSON. Pero ya que estamos y para finalizar con la entrada, vamos a dejarlo:

String jsonDgt = gson.toJson(incidenciasTrafico);

Y con esto termina la entrada, espero que os haya podido ser de utilidad.

El uso de WebView en Google Play

Antes de nada, una pequeña introducción.

Uno de los componentes más útiles disponibles en el SDK de Android desde las primeras versiones es WebView. WebView ha ido evolucionando con el tiempo y desde la versión 4.4 (KitKat) está basado en Chromium Open Source Project (anteriormente en WebKit de Apple).

En Lollipop se decidió separar WebView del núcleo para pasar a ser una aplicación del sistema independiente. Esto quiere decir que no es necesario una actualización vía OTA para actualizar WebView, si no que se actualiza desde Google Play.

La forma de utilizar WebView para utiliar con webs externas es muy sencilla (sin olvidar los permisos oportunos para el acceso a Internet).

webView.loadUrl("http://www.luisortiz.eu");

Más información sobre el uso del componente aquí.

screen webview

Aunque para hablar sobre las políticas de desarrollo Android y publicación en Google Play necesitaríamos mucho tiempo y espacio, podéis encontrar un resumen en cada uno de las restricciones aquí y para el caso particular de WebView tenemos toda la información en este apartado.

De forma resumida se podría decir que:

  • Google prohíbe el uso de WebView para cargar contenido de terceros sobre los cuales no tenemos permiso.

Aunque pueda resultar muy tentador para aquellos que empiezan con Android, Google Play y quieren ingresos fáciles y rápidos. No es bueno para la salud de tu cuenta de desarrollador el tratar de publicar una aplicación que usa contenido sobre el que no eres propietario.

Aprovechando el mismo apartado, Google decide hablar sobre afiliados. Y es que su uso en Google Play no está permitido, con matices y es aquí donde entramos en terreno pantanoso. Puedes redirigir tráfico a webs con programa de afiliados siempre que este no sea la función principal de tu aplicación, y por supuesto, que el contenido mostrado sea de tu autoría.

Formación continua

Una de las cosas que tiene cuando trabajas por cuenta ajena es que normalmente es la empresa quien se suele encargar de formarte en las tecnologías que va necesitando o prevee que pueden necesitar. Aunque actualmente trabajo como freelance y como trabajador por cuenta ajena, lo cierto es que la formación que estoy recibiendo no se adapta realmente a lo que hago. Así que he decidido aprovechar el año para certificar algunos conocimientos y de momento tengo seleccionado el más básico que debería de tener:

El examen de Java SE 8 (Programmer I) 1Z0-808. Después ya veremos si quedan ganas para la certificación completa (Programmer II). Me he dejado de llevar por las opiniones que he visto y estoy siguiendo este libro:

img_jav_cert

Para practicar, por 9.95$ podemos hacer 7 exámenes completos con más de 600 preguntas en: http://enthuware.com/index.php/mock-exams/oracle-certified-associate/java-oca-certification-8.

Aunque no estoy muy a favor de la filosofía de las certificaciones (principalmente, sacar pasta), la certificación de Java no es una certificación sencilla y te obliga a profundizar en temas que en el día a día a veces ni te paras a pensar. En mayo me examinaré y ya veremos qué tal.