PROGRAMACIÓN DE SMARTPHONE MEDIANTE ANDROID Con este documento intentamos plasmar el esfuerzo realizado por nuestro grupo de trabajo, pero claro no podemos visualizar las labores prácticas que hicimos, como la instalación y configuración de programas o el seguimiento de los ejercicios. Pero sí queremos destacar los puntos clave que hemos aprendido, de esta manera los redactamos en este documento en forma de preguntas con sus respectivas respuestas. Para llegar a sintetizar los puntos clave, hemos realizado una búsqueda de materiales en Internet, los hemos comparado, hemos escogido los que nos parecían más didácticos, los hemos leído, visionados sus videos, comentado y realizado sus prácticas. La elección del mejor material fue para la página www.androidcurso.com y la escogimos por su contenido bien estructurado, los vídeos explicativos donde puedes ver como se realizan los ejercicios, sus test de repaso,... 1
1.- Qué es Android? Es una plataforma de software libre para aplicaciones móviles creada por Google. 2.- Qué alternativas hay si no cogemos Android? ios, Symbian, Windows Phone, BlackBerry, Palm, Java Mobile Edition, Linux Mobile (LiMo). 3.- Por qué elegimos Android para nuestro estudio? Porque Android representa el 80% de la cuota de mercado en Smartphone y por estar presente en multitud de sistemas empotrados como smarttv, tabletas, etc. Además tiene las siguientes cualidades: Plataforma realmente abierta. Adaptable a cualquier tipo de hardware. Portabilidad asegurada. Arquitectura basada en componentes inspirados en Internet. Filosofía de dispositivo siempre conectado a Internet. Gran cantidad de servicios incorporados. Aceptable nivel de seguridad. Optimizado para baja potencia y poca memoria. Alta calidad de gráficos y sonido. 4.- Qué versiones de Android y niveles de API existen? Las diferentes versiones se nombran según versión, nivel de API y nombre comercial. Android 1.0 Nivel de API 1 (septiembre 2008) Android 1.1 Nivel de API 2 (febrero 2009) Android 1.5 Nivel de API 3 (abril 2009) - Cupcake Android 1.6 Nivel de API 4 (septiembre 2009) - Donut Android 2.0 Nivel de API 5 (octubre 2009) - Éclair Android 2.1 Nivel de API 7 (enero 2010) Android 2.2 Nivel de API 8 (mayo 2010) - Froyo Android 2.3 Nivel de API 9 (diciembre 2010) Gingerbread Android 3.0 Nivel de API 11 (febrero 2011) - Honeycomb 2
Android 3.1 Nivel de API 12 (mayo 2011) Android 3.2 Nivel de API 13 (julio 2011) Android 4.0 Nivel de API 14 (octubre 2011) - Ice Cream Sandwich Android 4.0.3 Nivel de API 15 (diciembre 2011) Android 4.1 Nivel de API 16 (julio 2012) - Jelly Bean Android 4.2 Nivel de API 17 (noviembre 2012) Android 4.3 Nivel de API 18 (julio 2013) Android 4.4 Nivel de API 19 (octubre 2013) - KitKat 5.- Qué versión de Android y nivel de API elegimos para nuestra aplicación? En cada nueva versión se crean nuevas clases y métodos para sacar el máximo rendimiento a las mejoras que aparecen en los diferentes teléfonos móviles. Por ejemplo si voy a utilizar un método que apareció en la versión 4.0, este será compatible en las versiones posteriores pero no en las anteriores. Así dependiendo de los móviles en los que quiera que funcione la aplicación elegiré una versión u otra. De esta manera si elijo la primera versión funcionará en todos los móviles pero no podre utilizar los nuevos métodos y clases, como por ejemplo utilizar el GPS, acelerómetros, etc. 6.- Qué es un entorno de desarrollo? Son los programas que nos hacen falta para crear nuestras aplicaciones, los programas que vamos a utilizar, donde nos vamos a desenvolver. 7.- Qué entorno de desarrollo utilizaremos para crear nuestras aplicaciones Android? Máquina virtual Java también se la conoce como entorno de ejecución Java, Java Runtime Environment (JRE) o Java Virtual Machine (JVM). Para instalar la Máquina Virtual Java accede a http://java.com/es /download/y descarga e instala el fichero correspondiente a tu sistema operativo. Eclipse (Eclipse IDE for Java Developers). Es un IDE, o entorno de desarrollo integrado que integra un editor de texto con todas las herramientas de desarrollo. Se podrían utilizar otro IDE como NetBeans, pero se recomienda Eclipse e incluso tener instalado además IntelliJ IDEA, por si falla el primero. Para instalarlo: http://www.eclipse.org/downloads/ 3
Android SDK (paquete de software creado por Google que incorpora todas las herramientas necesarias para el desarrollo de aplicaciones en Android) Para instalarlo: http://developer.android.com/sdk Eclipse Plug-in (Android Development Tools - ADT). 1. Arranca Eclipse y selecciona Help>Install New Software... 2. En el diálogo Available Software que aparece, haz clic en Add En el cuadro de diálogo Add Site que sale introduce un nombre para el sitio remoto (por ejemplo, Plug-in Android) en el campo Name. En el campo Location, introduce la siguiente URL: http://dl-ssl.google.com/android/eclipse/ NOTA:Si tienes algún problema en adquirir el plug-in, puedes intentar utilizar https en el URL en vez de http. Finalmente pulsa OK. Ahora en el cuadro Available Software debe aparecer Developer Tools: 3. Selecciona los paquetes a instalar y pulsa Next. Ahora aparecen listadas las características de Android DDMS y Android Development Tools. 4. Pulsa Next para leer y aceptar la licencia e instalar cualquier dependencia y pulsa Finish. 5. Reinicia Eclipse. 6. Configura Eclipse para que sepa donde se ha instalado Android SDK. Para ello entra en las preferencias en Windows>Preferences y selecciona Android del panel de la izquierda. Ahora pulsa Browse para selecciona el SDK Location y elige la ruta donde hayas descomprimido Android SDK. Aplica los cambios y pulsa OK. 4
8.- Cómo crear un proyecto en Android? 1. Selecciona File > New > Project... Si el Plug-in de Android se ha instalado correctamente, el diálogo que aparece debe tener un directorio llamado Android que debe contener Android Project. 2. Selecciona Android Application y pulsa Next. 3. Rellena los detalles del proyecto con los siguientes valores: 4. Pulsa Next para pasar a la siguiente pantalla. Puedes dejar los valores por defecto. Los dos primeros checkbox te permiten saltarte las pantallas que veremos a continuación. Los tres siguientes permiten crear una librería, indicar donde se almacena el proyecto y organizar proyectos en grupos. 5. Pulsa Next para pasar a la siguiente pantalla. Aquí podrás configurar el icono de la aplicación. Resulta sencillo de utilizar. Más adelante se explicarán más detalles sobre el diseño de iconos. 5
6. Pulsa Next para pasar a la siguiente pantalla. Si hemos marcado que queremos una actividad inicial quí podremos configurar su tipo. Como veremos más adelante una actividad es cada una de las pantallas en las que dividimos una aplicación. Deja el valor por defecto: BlankActivity. 7. Pulsa Next para pasar a la última pantalla. Aquí podemos indicar el nombre de la actividad y el Layout asociado a esta actividad. También podremos indicar el tipo de navegación. 8. Pulsa Finish para terminar la creación del proyecto. 9.- Para qué vale un dispositivo virtual Android (AVD)? Sirve para poder ver y probar las aplicaciones que he creado en gran variedad de teléfonos y tabletas, sin necesidad de pasarlas a un terminal real. 6
10.- Cómo se crea un dispositivo virtual Android (AVD)? 1. Abre Eclipse y pulsa en el botón Android Virtual Device Manager primera vez estará vacía.. Te aparecerá la lista con los AVD que hayas creado. La 2. Pulsa a continuación el botón New... para crear un nuevo AVD. Aparecerá la siguiente ventana: Donde tendremos que introducir los siguientes datos: AVD Name: Nombre que quieras dar al nuevo dispositivo virtual. Device: Dispositivo a emular. Puede ser uno real, como Nexus 7 o bién uno genérico, donde se indica el tamaño de la pantalla en pulgadas y la resolución del dispositivo. Podrás seleccionar el dispositivo de una lista desplegable. NOTA: Si quieres crear nuevos tipos de dispositivo utiliza la pestaña Device Definition que encontrarás en la lista de dispositivos. Target:versión SDK que soportará el dispositivo. Solo aparecerán las versiones que hayas instalado desde el Android SDK Manager. CPU/ABI:Tipo de CPU y arquitectura que se va a emular. A tener en cuenta si se va a trabajar en código nativo. La opción más habitual es ARM. Keyboard:Si se seleciona se supondrá que el dispositivo tiene teclado físico, que será emulado por el teclado del ordenador. En caso contrario se utilizará el teclado en pantalla. 7
Skin:Si se selecciona se mostrarán a la derecha del dispositivo una serie de botones, entre los que se incluyen: volumen, on/off, teclas de navegación, retorno, casa, menú, etc. Front/Back Camera:Para activar la emulación de la cámara delantera y trasera. Memory Options:Memoria que se dedicará al emulador. RAM: memoria total en MB. VM Heap: Memoria dinámica asignada a la máquina virtual en MB. Internal Storage:Memoria interna del dispositivo. Determinará el número de aplicaciones y datos que podrás instalar. Cuidado, esta memoria se reservará en tu disco duro, por lo que no es conveniente indicar un valor demasiado grande. SD Card:Memoria externa del dispositivo. Size: tamaño de la memoria. Esta creará un nuevo fichero. File: se utilizará un fichero previamente creado. Snapshot:Si lo seleccionas podrás congelar la ejecución del dispositivo en un determinado instante. Más tarde, podrás retomar la ejecución en este instante, sin tener que esperar a que se inicialice el dispositivo. Conviene marcarlo para conseguir una carga más rápida. Use Host GPU:Se habilita la emulación hardware para gráficos OpenGLES. Su navegación entre ventanas será más fluida. NOTA: No podemos seleccionar simultáneamente Snapshot y Use Host GPU. Una vez introducida la configuración pulsa el botón Create AVD. 3. Aparecerá el dispositivo creado en la siguiente lista. Para arrancarlo selecciónalo y pulsa el botón Start... Aparecerá la ventana Launch Options: 8
Puedes ejecutarlo en una ventana de 480x800 pixels, o por el contrario, reescalarlo para que tenga un tamaño de 5,1 pulgadas en tu pantalla (Scale display to real size). También puede limpiar los datos de usuario (Wipe user data). Finalmente, puedes arracar desde un punto de ejecución grabado e indicarle que cuando se cierre congele la ejecución para poder recargar en este mismo punto. 4. Pulsa el botón Launch para arrancarlo. 11.- Cómo ejecuto en el emulador los programas creados? 1. Selecciona Run > Run. (Ctrl-F11). 2. Escoge Android Application. Eclipse creará automáticamente una nueva configuración de ejecución para tu proyecto y lanzará el emulador. (La inicialización del emulador puede ser algo lenta, por esta razón es mejor no cerrar el emulador) Una vez que el emulador esté cargado, debes ver algo así: 9
12.- Cómo ejecuto los programas creados en un terminal real? Para ello debemos pasar al terminal el fichero ejecutable, cuya extensión es APK y lo podemos encontrar en la estructura de carpetas del proyecto, concretamente dentro de la carpeta bin. 13.- Qué son las vistas (View)? Son componentes de una aplicación que se implementan a través de clases Java. Las vistas son los elementos que componen la interfaz de usuario de una aplicación. Son por ejemplo, un botón, una entrada de texto, Todas las vistas van a ser objetos descendientes de la clase View, y por tanto, pueden ser definidos utilizando código Java. Sin embargo, lo habitual va a ser definir las vistas utilizando un fichero XML y dejar que el sistema cree los objetos por nosotros a partir de este fichero. Esta forma de trabajar es muy similar a la definición de una página web utilizando código HTML. 14.- Qué son los Layout? Son componentes de una aplicación que se implementan a través de clases Java. Un Layout es un conjunto de vistas agrupadas de una determinada forma. Vamos a disponer de diferentes tipos de Layouts para organizar las vistas de forma lineal, en cuadrícula o indicando la posición absoluta de cada vista. Los Layouts también son objetos descendientes de la clase View. 15.- Qué son las Actividades (Activity)? Son componentes de una aplicación que se implementan a través de clases Java. Una aplicación en Android va a estar formada por un conjunto de elementos básicos de visualización, coloquialmente conocidos como pantallas de la aplicación. En Android cada uno de estos elementos, o pantallas, se conoce como actividad. Su función principal es la creación del interfaz de usuario. Una aplicación suelen necesitar varias actividades para crear el interfaz de usuario. Las diferentes actividades creadas serán independientes entre sí, aunque todas trabajarán para un objetivo común. Toda actividad ha de pertenecer a una clase descendiente de Activity. Toda Actividad ha de tener una vista asociada, que será utilizada como interfaz de usuario. Esta vista suele ser de tipolayout aunque no es imprescindible 10
16.- Qué son los Servicios (Service)? Son componentes de una aplicación que se implementan a través de clases Java. Un servicio es un proceso que se ejecuta detrás, sin la necesidad de una interacción con el usuario. Es algo parecido a un demonio en Unix o a un servicio en Windows. En Android disponemos de dos tipos de servicios: servicios locales, que son ejecutados en el mismo proceso y servicios remotos, que son ejecutados en procesos separados. 17.- Qué son las Intenciones (Intent)? Son componentes de una aplicación que se implementan a través de clases Java. Una intención representa la voluntad de realizar alguna acción; como realizar una llamada de teléfono, visualizar una página web. Se utiliza cada vez que queramos: lanzar una actividad lanzar un servicio enviar un anuncio de tipo broadcast Comunicarnos con un servicio Los componentes lanzados pueden ser internos o externos a nuestra aplicación. También utilizaremos las intenciones para el intercambio de información entre estos componentes. 18.- Qué es un receptor de anuncios (Broadcast receiver)? Son componentes de una aplicación que se implementan a través de clases Java. Un receptor de anuncios recibe y reacciona ante anuncios de tipo broadcast. Los anuncios broadcast pueden ser originados por el sistema o por las aplicaciones. Algunos tipos de anuncios originados por el sistema son: Batería baja, llamada entrante,... Las aplicaciones también pueden crear y lanzar nuevos tipos de anuncios broadcast. Los receptores de anuncios no disponen de interfaz de usuario, aunque pueden iniciar una actividad si lo estiman oportuno. 11
19.- Qué son los proveedores de Contenido (Content Provider)? Son componentes de una aplicación que se implementan a través de clases Java. En muchas ocasiones las aplicaciones instaladas en un terminal Android necesitan compartir información. Android define un mecanismo estándar para que las aplicaciones puedan compartir datos sin necesidad de comprometer la seguridad del sistema de ficheros. Con este mecanismo podremos acceder a datos de otras aplicaciones, como la lista de contactos, o proporcionar datos a otras aplicaciones. 20.- Cómo puedo profundizar en el aprendizaje de Android? Disponemos de 2 opciones: Utilizar aplicaciones de demostración (ApiDemos) que vienen incluidas en los programas instalados y así revisar su código, etc. Para abrir alguna de las ApiDemos selecciona File > New > Project e indica Android Sample Project. Pulsa Next y aparecerá un cuadro de diálogo similar al siguiente: Has de seleccionar un nivel de API para crear el proyecto. A continuación selecciona uno de los proyectos de ejemplo: en nuestro caso ApiDemos. Pulsa Finish para crear el proyecto. También puedes encontrar una completa documentación del SDK localmente en: \adt-bundle-windows- \sdk\docs\index.html Se incluye la descripción de todas las clases (Develop > Reference), conceptos clave y otro tipo de recursos. 12
21.- En qué consiste una ejecución Debug? Es la forma que tenemos para depurar errores en el código de las aplicaciones, consiste en realizar una ejecución paso a paso, para ir viendo cómo responde la aplicación en cada una de sus partes de código. Nosotros podemos indicar donde se debe parar la aplicación introduciendo breakpoint. 22.- Cómo realizo una ejecución Debug? Pulsando el menú Run y después la opción Debug. 23.- Cómo introduzco breakpoint? Debo tener abierto el código, para ello abro la carpeta src y selecciono el fichero con la extensión.java, después hago doble clic sobre la barra izquierda como se ve en la imagen. 13
24.- Cómo depuramos código, mediante mensajes Log? El sistema Android utiliza el fichero LogCat para registrar todos los problemas y eventos principales que ocurren en el sistema. Ante cualquier error resulta muy interesante consultarlo para tratar de encontrar su origen. Para ver este fichero tenemos que tener el código abierto y pulsar en la pestaña LogCat. 25.- Crear una interfaz de usuario? Hay varias formar de hacerlo: mediante código, que es muy tedioso o a través de layout o fichero de diseño XML, que tiene una forma gráfica de hacerlo. Para llegar a esta forma gráfica, en el explorador de paquetes abre el fichero res/layout/ activity_main.xml. Verás que en la parte inferior de la ventana central aparecen dos lengüetas: Graphical Layout y activity_main.xml, selecciona Graphical Layout. En la ventana que aparece, tenemos un cuadro a la derecha donde podemos configurar distintos tipos de elementos, que previamente los podemos seleccionar del cuadro izquierdo como son CheckBox, Cuadro de texto, RatingBar, etc. A cada uno de estos elementos se le conoce como vistas. 26.- Qué tipos de layout son los más populares? LinearLayout: Dispone los elementos en una fila o en una columna. TableLayout: Distribuye los elementos de forma tabular. RelativeLayout: Dispone los elementos en relación a otro o al padre. AbsoluteLayout: Posiciona los elementos de forma absoluta. FrameLayout: Permite el cambio dinámico de los elementos que contiene. 14
27.- Qué son los recursos alternativos en Android? Son diferentes interfaz de usuario para una misma aplicación y situación, y se mostrará una de las diferentes interfaces dependiendo de alguna circunstancia, como puede ser la posición del móvil horizontal o vertical, el idioma utilizado, la calidad de imagen del dispositivo, etc. 28.- Qué son los sufijos en Android? Son los elementos que se utilizan para establecer el criterio de selección en los recursos alternativos como orientación de la pantalla, tamaño de pantalla, idioma, región, modo nocturno, etc. 29.- Qué es un estilo? Es un mecanismo que se utilizan para conseguir una determinada apariencia y comportamiento sobre los distintos elementos de una vista. 30.- Qué es un tema? Es un mecanismo que se utilizan para conseguir una determinada apariencia y comportamiento sobre una actividad o aplicación. 31.- Para qué sirven los APIS gráficas en Android? Aunque disponíamos de una amplia paleta de vistas con las cuales podemos realizar multitud de gráficos, en muchas ocasiones va a ser interesante diseñar nuestras propias vistas, así el API gráfica de Android nos proporciona una potente y variada colección de funciones que pueden cubrir prácticamente cualquier necesidad tanto en 2D, 3D o animaciones. 15