Logo de Android Studio

Android Studio con Qualcomm y Mediatek

Poco a poco los elementos del proyecto de verano empiezan a tomar forma. A la aplicación de la Raspberry Pi se le sumarán dos aplicaciones que funcionarán en Ubuntu Touch y en Android. En este artículo se verán los pasos para configurar el SDK de Android en Windows. No he descartado explicar los pasos en Ubuntu usando la máquina virtual que se creó en un artículo anterior. Simplemente, voy a explicar como se trabaja en los dos sistemas operativos. De esta forma se puede elegir el sistema operativo que es más práctico para programar la aplicación con Android. Como entorno se usará Android Studio ya que es el entorno oficial que usa Google.

Leer más

Captura de pantalla con ADB

Depurar una aplicación de Android en W10 (1)

En los terminales que usan Android como sistema operativo hay dos operaciones que requieren el uso del ordenador. La primera es el Hard Reset y consiste en reinstalar la versión de Android que viene de serie con el terminal restaurando los archivos que se hayan eliminado o modificado. La segunda operación es el modo de depuración (ADB) que permite depurar las aplicaciones que se programan con el PC y acceder a contenido del teléfono que no está accesible directamente. Por ejemplo, con ADB se pueden usar herramientas de copia de seguridad y guardar la información del teléfono (aplicaciones y sus datos) en el PC por si se perdiera el teléfono.

Para usar ADB hace falta instalar los drivers en el PC y configurar el teléfono para que acepte la conexión en las versiones de Android a partir de Kit Kat. Se puede dar el caso que en las instrucciones para hacer el Hard Reset se diga que es necesario instalar los drivers de ADB en los terminales que llevan un SOC de Qualcomm. No es necesario instalarlos si configuramos el teléfono para que se inicie en Fastboot Mode.

Leer más

Creación de una esfera funcional para el Pebble

En el último artículo vimos los pasos que hay que seguir para preparar el entorno de programación del reloj Pebble en Ubuntu. Es importante realizar ese artículo antes de empezar con este artículo ya que se usan algunas herramientas del SDK. Al final del artículo tendréis en el reloj una esfera básica pero completamente funcional. La esfera está formada por una única pantalla en la que se muestra la hora del reloj. En las siguientes entregas añadiremos nuevas funcionas para que sea útil y práctica. He subido el código fuente del proyecto a mi página de GitHub. Cada paso del artículo tiene un commit diferente por lo que podréis pasar de uno a otro con facilidad.

Como he comentado partimos de que el SDK de Pebble está correctamente instalado y podemos hacer una captura de pantalla del reloj desde la línea de comandos. Hay dos formas de seguir el artículo. La primera consiste en ir paso a paso con el programa básico mientras que la segunda consiste en descargar el código que está publicado en Git y trabajar de forma local. La carpeta del proyecto incluye todos los archivos necesarios para compilar la esfera e instalarla en el reloj Pebble. Podéis añadir las sugerencias o los bugs en la página del proyecto o en los comentarios del artículo.

Nota:En el artículo uso como base el tutorial de la Web de Pebble.
Leer más

Preparar el entorno de programación de Pebble

En el reloj Pebble se pueden utilizar esferas (temas) y aplicaciones. Las esferas cambian la apariencia del reloj y muestran diferente información útil mientras que las aplicaciones hacen funciones simples o se comunican con las aplicaciones nativas de Android. Este artículo es el primero de una serie de artículos enfocados a la programación de una esfera y su ejecución en el Pebble clásico. El código fuente estará disponible en GitHub.

La programación se puede hacer de forma local en un equipo con Ubuntu o usando la nube de Pebble. El código de la esfera será el mismo en las dos plataformas. La única diferencia es que en el caso de usar la nube necesitamos una conexión de datos mientras que si trabajamos en local no hace falta dicha conexión. En el artículo veremos los pasos para hacer la instalación en local y dejaré para más adelante el uso de la nube de Pebble.

Leer más

El reloj inteligente Pebble

Pebble es uno de los tantos relojes inteligentes (smartwatch) que podemos encontrar en el mercado. Si lo comparamos frente a los modelos que ofrecen otras marcas puede parecer que sale perdiendo. Si analizamos las características que tiene podemos ver que es un rival a tener en cuenta. Una de las primeras diferencias es que es un reloj multiplataforma, es decir, puede funcionar de forma nativa con iOS y Android. En estos momentos no soporte Android Wear en la versión estable del firmware aunque ya se puede usar en la versión beta.

La pantalla de Pebble es de tinta electrónica y el reloj se controla usando los botones físicos que lleva en los laterales. Estas dos características hacen que el consumo de la batería se reduzca llegando a tener una duración que oscila entre los 4 / 5 días. Entre sus funciones destaca la posibilidad de personalizar la apariencia del reloj, la gestión remota de las aplicaciones del teléfono y la posibilidad de usar aplicaciones enfocadas al ejercicio entre otras funciones.

Leer más

sdk-cube

Depurar una aplicación en Android 4.4 con Windows

Ya hemos visto en un artículo anterior la forma de configurar Ubuntu para que detecte un terminal con Android 4.4. En este artículo veremos algo parecido para el caso de Windows. A diferencia de GNU/Linux existen más casos en los que se usan los drivers de depuración (aparte de la programación). Como ejemplo tenemos la aplicación Helium. Esta aplicación nos permite crear una copia de seguridad del terminal sin necesitar permisos de root.  Para hacer la copia utiliza ADB por debajo. Por esta razón es necesario que Windows tenga bien instalados los drivers y que el terminal permita la conexión del PC.

Leer más

Logo Ubuntu

Depurar una aplicación en Android 4.4 con Ubuntu

Cuando empezamos a programar con Android trabajamos con un entorno que lleva todo integrado (IDE). Estos entornos como Eclipse o Netbeans facilitan la codificación de la aplicación y su depuración tanto en un dispositivo emulado como en uno real. Si trabajamos con un dispositivo emulado podemos probar cualquier combinación de hardware, desde pantallas pequeñas de 4 pulgadas hasta las pantallas que usan las tabletas de 10 pulgadas sin necesidad de comprar el dispositivo real. Aunque el código funciona en el emulador, es importante probarlo en un dispositivo real ya que el comportamiento del emulador no es ideal y la ejecución es varios ordenes de magnitud más lenta (dependiendo del PC que tengamos).

Leer más

Logo SDK

Cursos de programación para dispositivos móviles

En un artículo anterior os comenté algunos cursos relacionados con las programación de aplicaciones móviles en las plataformas Coursera y edX. Ambas plataformas tienen cursos en inglés y esto puede ser un problema para algunos usuarios. Por esta razón os comento hoy el inicio de varios cursos de programación en castellano. El primero de ellos es un mini curso de varias lecciones que dan en la Web de El androide libre mientras que el resto son cursos que aparecen en las plataformas UPV[X] y MiriadaX. Los tres cursos son gratuitos y se pueden seguir con un ordenador y una conexión a Internet. El curso de UPV[X] empieza el próximo Martes y se centra en el sistema operativo Android. Por otra parte, el curso de MiriadaX tiene un planteamiento más generalista al tratar el desarrollo de aplicaciones usando HTML5 y Firefox OS. En el artículo completo podéis encontrar los temarios de los tres cursos.

Curso de El androide libre

Su autor es Jose Angel Zamora. El temario del curso es el siguiente (copiado de la Web del curso):

  • 0. Empezando
  • 1. Fundamentos de una aplicación
  • 2. Recursos de una app
  • 3. La clase Activity
  • 4. La clase Fragment
  • 5. View personalizada
  • 6. Adaptadores (Adapter)
  • 7. La clase Intent
  • 8. Receptores de mensajes broadcast (Broadcast Receiver)
  • 9. Prefencias de una app (Shared Preferences)
  • 10. Bases de datos SQLite
  • 11. Servicios (La clase Service)
  • 12. Tareas asíncronas (La clase AsyncTask)
  • 13. Gestores de contenidos (Content Provider)
  • 14. La barra de acciones ActionBar
  • 15. Notificaciones
  • 16. Orientación del dispositivo
  • 17. Animaciones
  • 18. Widgets
  • 19. Otros conceptos
  • 20. Información adicional

Curso UPV[X]

Su autor es Jesús Tomás Gironés. El temario del curso es el siguiente (copiado de la Web del curso):

  • Unidad 1: Repaso de Java
  • Unidad 2: Introducción a Android y entorno de desarrollo
  • Unidad 3: Diseño del interfaz del usuario – Vistas y Layouts
  • Unidad 4: Actividades, Barra de Acciones y Preferencias
  • Unidad 5: ListView e Intenciones
  • Unidad 6: Ciclo de vida de una Actividad y Seguridad
  • Unidad 7: Posicionamiento y Mapas
  • Unidad 8: Bases de datos en Android

Programación de Aplicaciones móviles unsado HTML5 y Firefox OS (el título lo he reducido)

El temario del curso es el siguiente (copiado de la Web del curso):

  • Módulo 0. Introducción al curso y al programa “Diseño de servicios en la nube para acceso movil con HTML5”       
  • Modulo 1: Introducción a Internet, la nube, la arquitectura de la Web, HTML5 y CSS       
  • Modulo 2: Introducción a JavaScript y a las aplicaciones Web en HTML5, así como la publicación en la nube       
  • Modulo 3. Estructuración y visualización de páginas Web en HTML y CSS adaptadas a un entorno multipantalla con PCs, móviles y tabletas       
  • Módulo 4: Tipos string y boolean de JavaScript, sentencias if/else y for, y caracteristicas avanzadas de objetos, incluyendo acceso al navegador mediante el arbol DOM       
  • Módulo 5: Interacción con el usuario, funciones, eventos, manejadores de eventos, formularios, jQuery y Zepto       
  • Módulo 6: Ejemplo de un cronómetro, eventos tactiles y localStorage, así como su utilización en aplicaciones Web       
  • Modulo 7. Gráficos, multimedia y animación en HTML5: SVG, CANVAS y elementos video y audio       
  • Modulo 8. Arrays, JSON, geolocalización y Mash-ups con otros servicios y aplicaciones, tales como Google Maps
Logo SDK

Cursos de programación en Android (Coursera y edx)

Un curso online masivo es un curso gratuito que se puede realizar desde cualquier lugar del mundo. Existen 3 plataformas principales que ofrecen estos cursos, dos en inglés (Courseray edx) y una en español (MiriadaX). Detrás de estas plataformas se encuentran universidades importantes que ofrecen la posibilidad de certificar los conocimientos obtenidos en el curso con un certificado. El certificado se tiene que pagar pero no es obligatorio hacerlo para seguir el curso. Los cursos se apoyan en vídeos, presentaciones y las redes sociales. Podemos preguntar las dudas en los foros correspondientes y recibiremos respuestas de profesoras y alumnos. El idioma de los cursos es principalmente el inglés en Coursera y edx y el español en MiriadaX.

Leer más

Logo Android

Mejorar la calidad de una aplicación desarrollada en Android

A la hora de probar y verificar una aplicación que hemos desarrollado en Android tenemos varias fases intermedias que, si bien no son obligatorias, ayudan a mejorar la calidad de la aplicación. Podemos distinguir dos tipos de errores. Por una parte tenemos los errores de funcionamiento por otra parte los errores de diseño. Un error de funcionamiento sería que el usuario pierda los datos por un bloqueo de la aplicación mientras que un error de diseño podría ser que el interfaz de la aplicación no se adaptara a la pantalla. Los dos tipos de errores se pueden detectar en la fase de  testeo  que realiza el programador pero en algunas ocasiones quedan enmascarados por el propio programador. Supongamos que un error aparece en unas condiciones concretas que no probamos. Al trabajar siempre de la misma forma no activamos el error pero cuando otro usuario utiliza la aplicación siguiendo otro orden lo encuentra. 

¿De qué forma podemos detectar estos problemas antes de que publiquemos la aplicación en Google Play? Recordad que los usuarios son nuestros clientes aunque la aplicación sea gratuita. Si al usarla encuentran errores es posible que escriban comentarios negativos que se traducirá al final en menos descargas de usuarios nuevos. Cuando la aplicación es de pago los resultados pueden ser peores. La solución de este problema es relativamente sencilla y consiste en verificar de forma adecuada la aplicación antes de su lanzamiento.

Errores de funcionalidad

Los errores de funcionamiento se pueden detectar de forma manual o de forma automatizada (con ciertos límites) si usamos pruebas unitarias. Una prueba unitaria se puede considerar como una función de verificación que llama a la función real de nuestra aplicación, le introduce los datos y comprueba el resultado de la operación. Los datos que introduce los decide el programador y pueden ser datos válidos o erróneos.  La función que esté bajo prueba debe responder de forma adecuada aunque la introducción sera errónea sin que se produzca el cierre de la aplicación. Supongamos que la función original espera un texto de 100 caracteres y le pasamos una cadena que tiene 1000 caracteres. De forma transparente al usuario debemos procesar la información y si es necesario informar al usuario de que el texto tiene que ser más pequeño.

Las pruebas unitarias tienen otra ventaja respecto a las pruebas manuales. Al añadir una función nueva es fácil que afecte a otras partes de la aplicación si comparten datos o se ha cambiado la estructura de los datos. Antes de probar la aplicación en un terminal real pasamos toda la batería de pruebas. Si se produce un error tendremos localizada la función en la que se encuentra y el tipo de datos que se le ha introducido. Un ejemplo de esto puede ser una función que trata con una base de datos. Si la función 1 espera los datos de una forma (de una sentencia SQL) y la función 2 los necesita de otra (con la misma sentencia SQL) podemos romper la función 1 con la función 2.

Errores de diseño

Los errores de diseño muchas veces son evidentes como el ejemplo de la aplicación que se sale de la pantalla pero en ocasiones son más sutiles. El diseño de la aplicación puede ser correcto para una pantalla de 4,5 pulgadas pero ser incomodo si usamos una pantalla más pequeña. Para estos casos es posible aplicar un diseño personalizado para pantallas pequeñas para que la experiencia del usuario sea adecuada. Estos detalles no los podemos ver si hacemos las pruebas siempre en el mismo tipo de dispositivos y de la misma forma. Necesitaremos por tanto que otros usuarios prueben nuestra aplicación y nos ofrezcan realimentación. Según el alcance de la prueba podemos distinguir dos casos:

  • La prueba se realiza en un ámbito local con pocos usuarios.

  • La prueba se realiza en un ámbito global con muchos usuarios.

En el primer caso los usuarios que prueban la aplicación pueden ser conocidos, amigos e incluso familiares. La ventaja de esta forma de trabajar es que controlamos a los usuarios que hacen la prueba pero tiene como inconveniente que la mayoría de los usuarios no serán “clientes” de la aplicación. Con esto me refiero a que si realizamos un contador de viajes para el transporte público los usuarios que prueban la aplicación deberían ser aquellos que la usarían a diario. El resto de usuarios puede probar la aplicación pero no nos dará tanta información útil. En el extremo opuesto está el segundo caso: tenemos usuarios interesados en la aplicación pero no controlamos quien la instala. La elección entre ambos casos no es excluyente sino que podemos realizar una primera etapa con el primer caso y después pasar al segundo.

Acceder a una versión beta (como usuario)

Para realizar la prueba usaremos Google Play y una comunidad de Google+. El funcionamiento es sencillo. Al unirnos a la comunidad de la aplicación que realiza la prueba activaremos una opción “especial” en Google Play. A partir de ese momento cuando instalemos la versión oficial de la aplicación estaremos instalando realmente la versión beta. El proceso es reversible y podemos volver a la versión estable en cualquier momento. Antes de pasar a una versión beta hay que comentar que si bien la versión es suficientemente estable, pueden aparecer errores de diferentes tipos.>Si usamos el terminal con >Android> y una aplicación crítica para el trabajo no hay que pasar a una versión beta de esa aplicación.

Explicaré los pasos para entrar en el programa de beta de la aplicación Todoist. Hay muchas aplicaciones que están siguiendo este tipo de desarrollo, sólo tenéis que investigar un poco por Google Play. Iniciamos la sesión en la cuenta de Gmail y entramos en la comunidad de Todoist.

Comunidad de TodoistComunidad de Todoist

Los pasos para activar el programa de verificación están en la columna derecha de cada página. Tenemos que pulsar en el enlace que nos dan y nos saldrá una pantalla similar a la siguiente:

Programa de beta Programa de beta

Es suficiente con pulsar en el botón y a continuación pulsar en el enlace inferior: Descargar Todoist: Lista de tareas de Play Store. Con esta función podemos como usuarios acceder a versiones en desarrollo y sugerir funciones a las aplicaciones que más usamos en el terminal con Android.

Conclusiones

El desarrollo de una aplicación exige varias habilidades en todas las fases. Durante la creación tenemos que aplicar técnicas de diseño (respetar las guías de estilo de Android), programación (lógica de la aplicación) o marketing (para publicar la aplicación en Google Play).  En cada una de las fases podemos usar diferentes herramientas que facilitan la creación de la aplicación. En el diseño podemos diseñar el interfaz de usuario con Fluid UI en el PC o con la aplicación POP usando bolígrafo y papel en un terminal con Android. Para la programación tenemos Eclipse y la documentación de Android mientras que para el marketing podemos realizar pruebas de la aplicación en grupos reducidos limitados o en grupos amplios perdiendo parte del control de la prueba.