Tema 3
Tema 3
Tema 3
Introducción al tema
Android es la primera plataforma móvil completamente abierta y libre, que además ofrece a
los desarrolladores un Kit de poderosas herramientas para la creación de todo tipo de
aplicaciones.
La plataforma es totalmente es totalmente Open Source basado en Linux y los desarrolladores
cuentan con numerosas opciones para distribuir y comercializar sus aplicaciones. Está
enfocado para ser utilizado en dispositivos móviles como teléfonos inteligentes, tabletas,
Google TV y otros dispositivos.
Se desarrolló por una compañía llamada Android, Inc. y en el año 2005 Google adquiere la
empresa para seguir trabajando en el mismo proyecto que después conociera la luz como un
S.O. para móviles denominado Android. Hoy sigue siendo desarrollado y mantenido por
Google.
Android es actualmente la plataforma móvil más popular del mundo. Sobre la base de las
contribuciones de la comunidad de código abierto Linux y más de 300 socios operadores de
hardware y software, Android se ha convertido rápidamente en el sistema operativo móvil de
más rápido crecimiento.
Cada día más de 1 millón de nuevos dispositivos Android se activan en todo el mundo. Los
usuarios descargan más de 1,5 mil millones de aplicaciones y juegos de Google Play (La tienda
de aplicaciones Android) cada mes.
Android deriva del Kernel de Linux, pero es un fork separado de ese Kernel. Un Fork hace
referencia a cuando partiendo de un código fuente de un paquete de código Open Source se
inicia un desarrollo, independiente de él. Creándose por tanto un trozo distinto de Software.
Lo que significa que al día de hoy hoy los equipos de Android y Linux son totalmente
independientes, aunque desde luego Android es totalmente Open Source y deriva de Linux.
Cuenta con una poderosa plataforma de desarrollo Open Source conocida como el SDK
(software development kit) de Android para el desarrollo de aplicaciones, usando puramente
Java y el paradigma de la Programación Orientada a Objetos. El SDK está diseñado con el
objetivo de simplificar el desarrollo de aplicaciones para dispositivos móviles, con las mejores
prácticas y patrones de diseños de ingeniería de software. El Android SDK tools compila el
código, junto con todos los datos y archivos de recursos en un paquete APK de Android, que es
un archivo comprimido con un sufijo .apk. Un archivo APK contiene todo el contenido de una
aplicación para Android y es el archivo que los dispositivos con Android utilizan para instalar la
aplicación. Se caracteriza porque se ha cuidado en lo posible que la ejecución de cada
aplicación no interfiera o dañe procesos importantes del sistema operativo. Una vez instalado
en un dispositivo, cada aplicación Android vive en su propio entorno limitado de seguridad:
Es posible hacer que dos aplicaciones puedan compartir el mismo ID de usuario Linux,
en cuyo caso se podrá acceder a los archivos de cada uno.
Una aplicación puede solicitar permiso para acceder a los datos del dispositivo, como
los contactos del usuario, mensajes SMS, el almacenamiento montable (tarjeta SD),
cámara, Bluetooth, y más. Todos los permisos de aplicaciones debe ser concedida por
el usuario durante la instalación.
3.1.1. Arquitectura
Hay cuatro tipos diferentes de componentes de aplicaciones. Cada tipo tiene un propósito
distinto y tiene un ciclo de vida distinto que define cómo el componente es creado y destruido.
Aquí están los cuatro tipos de componentes de aplicaciones:
Una actividad representa una única pantalla con una interfaz de usuario. Por ejemplo, una
aplicación de correo electrónico puede tener una actividad que muestra una lista de los
nuevos mensajes de correo electrónico, otra actividad para componer un correo electrónico, y
otra de las actividades para la lectura de mensajes de correo electrónico. Aunque las
actividades trabajan juntos para formar una experiencia de usuario coherente en la aplicación
de correo electrónico, cada uno es independiente de los demás. Como tal, una aplicación
diferente puede iniciar cualquiera de estas actividades (si la aplicación de correo electrónico lo
permite). Por ejemplo, una aplicación de cámara puede iniciar la actividad en la aplicación de
correo electrónico que compone el correo nuevo, con el fin de que el usuario pueda compartir
una imagen.
Una actividad se implementa como una subclase de la clase Activity y se puede aprender más
sobre esto en la la guía para desarrolladores sobre Actividades.
Un aspecto único del diseño del sistema Android es que cualquier aplicación puede iniciar el
componente de otra aplicación. Por ejemplo, si desea que el usuario capture una foto con la
cámara del dispositivo, es probable que haya otra aplicación que hace eso y su aplicación
puede utilizarlo, en lugar de desarrollar una actividad para capturar una foto por sí mismo. No
es necesario incorporar o incluso enlazar a el código de la aplicación de la cámara. En lugar de
ello, sólo tiene que iniciar la actividad en la aplicación de la cámara que captura una foto.
Cuando se haya completado, la foto es incluso retornada a su aplicación para que pueda
utilizarla. Para el usuario, parecerá como si la cámara es en realidad una parte de su
aplicación.
Debido a que el sistema ejecuta cada aplicación en un proceso separado con archivos de
permisos que restringen el acceso a otras aplicaciones, su aplicación no puede activar
directamente un componente de otra aplicación. El sistema Android, sin embargo, sí puede.
Por lo tanto, para activar un componente en otra aplicación, debe enviar un mensaje al
sistema que especifica su intención de poder iniciar un componente en particular. Entonces, el
sistema activa el componente para usted.
3.1.3 Activación de componentes
Tres de los cuatro tipos de componentes vistos anteriormente: Las actividades (Activitys), los
servicios (services) y receptores de radiodifusión (broadcast receivers), son activados por un
mensaje asíncrono llamado un intent. Los Intents enlazan los componentes individuales entre
sí en tiempo de ejecución (se puede pensar en ellos como los mensajeros que solicitan una
acción de otros componentes), si el componente pertenece a su aplicación o es de otra
aplicación.
Una intent es creado con un objeto Intent, el que define un mensaje para activar ya sea un
componente específico o un tipo específico de componente. Un intent puede ser explícita o
implícito, respectivamente.
Para las actividades y servicios, un intent define la acción a realizar (por ejemplo, para "ver" o
"enviar" algo) y puede especificar el URI que debe actuar. Por ejemplo, un intent podría
transmitir una solicitud para una activity para mostrar una imagen o para abrir una página
web. En algunos casos, puede iniciar un activity para recibir un resultado, en cuyo caso, el
activity también devuelve el resultado en un intent (por ejemplo, puede usar un intent para
que el usuario elija un contacto personal y tenerlo devuelta para usted, el intent que retorna
incluye un URI apuntando al contacto elegido).
Para los receptores de radiodifusión, el intent simplemente define el anuncio que se emitirá
(por ejemplo, una emisión para indicar que la batería del dispositivo está baja incluye sólo una
string de acción conocido que indica "batería está baja").
El otro tipo de componente, el proveedor de contenido (content provider), no es activado por
intents. Más bien, se activa cuando una solicitud es dirigida desde un ContentResolver. El
Content Resolver (resolución de contenido) se encarga de todas las transacciones directas con
el proveedor de contenido de modo que el componente que ha de realizar transacciones con
el proveedor no es necesario y, en cambio se debe llamar a métodos en el objeto
ContentResolver.
Existen métodos diferentes para la activación de cada tipo de componente:
Puede iniciar una actividad (o indicarle algo nuevo por hacer) mediante pasar a un
intent el startActivity() o startActivityForResult() (cuando desea que la actividad
devuelva un resultado). Ejemplo de código para llamar o iniciar una Actividad:
Eclipse ha sido por mucho tiempo el entorno de desarrollo oficial de aplicaciones Android.
Para la instalación de este entorno es necesario seguir los siguientes pasos:
Este proceso siempre tuvo su cierta complejidad, por lo que hay que asegurarse de seguir
detalladamente las instrucciones para cada paso.
A partir del año 2013, Google presentó el nuevo IDE para desarrollo de aplicaciones Android, el
cual a pesar de ser aún una versión beta ha generado una gran migración de desarrolladores
que antes utilizaban Eclipse u otras herramientas. Las razones son sencillas:
En nuestro caso, considerando las nuevas opciones, ventajas y el soporte completo que
Google está dando a este nuevo IDE, Hemos optado por utilizar Android Studio para este
curso. Por lo tanto, debes considerar que todos los ejercicios planteados, así como los
exámenes, preguntas y ejercicios propuestos que debes realizar, debe hacerse utilizando esta
herramienta. El Sistema operativo sobre el cual trabajaremos es Windows. Aunque esto es
indiferente, Android Studio funciona también en Linux y en Mac.
3.2.1 Instalando Android Studio
Habiendo hablado antes de las ventajas de Android Studio. Empezamos comentando la
instalación, indicando que los pasos también ahora, son mucho más sencillos (Comparado con
instalar y configurar el entorno utilizando Eclipse). Solo se necesita lo siguiente:
1. Instalar el JDK (Java Development Kit). Android Studio está desarrollado en Java, por
lo tanto requiere de este JDK para funcionar. Descargamos desde Download JDK.
2. Instalar el IDE Android Studio. Descargamos desde Download Android Studio
Luego que ha quedado instalado el JDK, en algunas computadoras con Windows suele pasar
que no está correctamente configurada la variable JAVA_HOME en el sistema operativo, por lo
que, el Android Studio no podrá instalarse o iniciar ya que no encuentra el JAVA. Por lo tanto,
luego de haber instalado el JDK, debemos asegurarnos de configurar de la manera adecuada la
variable JAVA_HOME. Para esto debemos seguir los siguientes pasos:
Click menú Inicio
anticlick en Equipo
Seleccionamos Propiedades del Sistema
Clic en Configuración Avanzada del Sistema en la parte superior izquierda y en la pestaña
de Opciones Avanzadas
Clic en Variables de Entorno.
En el valor de la variable, asegúrate de colocar la ruta exacta del JDK que haz instalado. Si
instalaste una versión de 64 bits estará en:
Instalar Android Studio es sencillo, solo debemos dar doble click en el ejecutable que hemos
descargado y seguir los pasos del instalador.
Una vez que lo tenemos instalado, iniciamos Android Studio. Si usted ve un pop-up verde que
le alerta de nuevas actualizaciones, haga clic en "Buscar actualizaciones ahora" en la parte
inferior de la ventana de bienvenida, o también otra forma de actualizar el IDE es una vez
dentro, elegir el menú Help y “Check for Update”.
Un aspecto vital para el desarrollo con Android es el SDK, del cual ya hablamos al inicio de este
documento. Android Studio cuenta con una herramienta llamada el SDK Manager desde la
cual podemos instalar imágenes de Sistemas para emular Android con el fin de probar nuestras
aplicaciones y otras herramientas y librerías que nos serán útiles en nuestro desarrollo.
Una vez que hemos iniciado Android Studio. En la ventana "Welcom to Android Studio".
Seleccione Configure -> SDK Manager
Desde este gestor del SDK, podrás ver muchos paquetes que se pueden instalar. Por el
momento, bastará con seleccionar sólo los casillas ilustradas en la siguiente imagen y proceder
a su instalación. Acepte la licencia para cada conjunto de paquetes para completar la
instalación. Puede que tenga que instalar cada conjunto de paquetes por separado, ya que
están bajo licencias separadas.
Trabajaremos solo con la API 19, la API 20 es para aplicaciones para relojes, la API 21 todavía
está en preview pueden cambiar algunas cosas, aún no puedes subir aplicaciones a Google
Play dirigidas para esta API.
El paquete extra “Android suppot library” es para compatibilidad en reversa, es decir para
lograr que nuestra aplicación pueda ser ejecutada en versiones de Android inferior a la API que
se utilizó para desarrollarla. Este paquete siempre debemos instalarlo.
Primero check en “deselect All” para deseleccionar todos los paquetes que por defecto
intentan instalarse. Luego seleccionamos la API 19 y el paquete extra “Android suppot library”
y procedemos a instalar.
Eso es todo, ahora ya estamos listo para crear nuestra primera aplicación Android.
La ubicación del proyecto (Project Location) es un directorio en su disco duro en el que desea
guardar todos su proyecto Android Studio. Es recomendable crear una carpeta en el que se
almacenan todos sus proyectos Android Studio. Bajo esa carpeta cada proyecto tendrá su
propio subdirectorio.
En esta pantalla se le pide que seleccione los dispositivos donde su aplicación se ejecutará.
Form factors significa tamaños de pantalla y tipos de dispositivos. En este caso seleccionamos
solo la opción "Phone and Tablet" y dejar el resto sin seleccionar.
En esta ventana también debemos elegir el “Minimium Sdk”, es decir la versión mínima
permitida para que un dispositivo pueda instalar nuestra aplicación. Para esto, Android Studio
nos ayuda a elegir esta versión dando clic en la opción “help me choose” donde aparecerá la
siguiente ventana.
Como podemos observar en esta ventana, vemos las versiones de Android con su respectivo
número de API. A la vez podemos ver el porcentaje de dispositivos que tienen instalada la
versión. Por otro lado, en la parte derecha vemos las características a las que tenemos acceso
al dar clic en cada versión. En nuestro caso, elegimos la API 15 que corresponde a la versión
4.0 de Android puesto que es una versión que ya está muy difundida y a la vez tenemos
muchas características de la API que podemos utilizar en nuestro desarrollo. Elegimos la API
15 y presionamos OK.
En esta tercera pantalla se nos solicita añadir una actividad (Activity) a su aplicación. Las
actividades son similares a las ventanas en una aplicación de escritorio. Por lo tanto, debemos
tiene que elegir lo "ventana" o "pantalla" que nuestra aplicación utilizará. Una aplicación
Android puede utilizar más de una activity, pero en este caso sólo seleccionamos "Blank
Activity". Luego clic en "Siguiente".
En esta cuarta debemos elegir un nombre de la Activity, nombre del Layout y un título.
Aceptemos estos nombre que nos sugiere el mismo IDE. A la vez aprovechemos para analizar
como el IDE aplica estos nombres aplicando una convención estándar y relacionada entre el
nombre del Activity y el nombre del layout. Más adelante hablaremos un poco más de estos
Activitys con sus Layouts.
Al hacer clic en el botón "Finalizar" Android Studio se toma un poco de tiempo para crear su
nuevo proyecto y luego muestra la siguiente ventana:
Ahora ya tenemos nuestro primer proyecto Android y cómo podemos observar el mensaje que
nos coloca en la pantalla es “Hello Word”. Sin embargo, esto no es nuestra aplicación
ejecutándose, sino que es el Editor de diseño visual con el que cuenta Android Studio, el cual
nos permite previsualizar el Layout de los Activitys que tengamos en nuestro proyecto.
Por lo tanto ahora nos queda ejecutar nuestra aplicación. Antes conozcamos de forma rápida
la organización y estructura de nuestro proyecto en Android Studio.
Como un dato adicional, para quienes habían usado Eclipse, podemos ver algunos
archivos .gradle y una carpeta gradle, los cuales como se indica en la figura no debemos
manipular. El editor se encarga de estos.
Carpeta /src/
Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares,
etc. Inicialmente, Andorid Studio creará por nosotros el código básico de la pantalla (Activity)
principal de la aplicación, siempre bajo la estructura del paquete java definido.
Carpeta src/main/java
Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares,
etc. Inicialmente, Eclipse creará por nosotros el código básico de la pantalla (Activity) principal
de la aplicación, siempre bajo la estructura del paquete java definido.
Carpeta src/main/res
Contiene todos los archivos de recursos necesarios para la aplicación: audio, videos, bases de
datos, cadenas de texto, layouts, etc. Los diferentes tipos de recursos se deberán distribuir
entre las siguientes carpetas:
/res/drawable/. Contienen las imágenes de la aplicación. Se puede dividir en: /drawable-ldpi,
/drawable-mdpi, etc para utilizar diferentes recursos dependiendo de la resolución del
dispositivo.
Es mucho más lento que el primero, pero nos ayuda a testear nuestras aplicaciones cuando no
contamos con un dispositivo Android a la mano. La guía oficial y más información puedes
encontrar en: http://developer.android.com/intl/es/tools/devices/index.html
Para ambos casos, Además puedes revisar esta guía paso a paso o esta otra las cuales pueden
resultar muy útiles para poder utilizar cualquiera de las 2 opciones y ejecutar nuestra
aplicación.
Un dispositivo virtual Android o AVD es una configuración del emulador, lo que permite crear
un modelo de un dispositivo Android. Esto hace que sea posible probar el funcionamiento de
nuestras aplicaciones en una amplia gama de dispositivos de una forma fácil. Con un
dispositivo virtual de Android, se puede especificar el hardware y el software del emulador de
Android que quieres emular.
La mejor forma de crear un dispositivo virtual de Android es a través del AVD Manager, que se
puede acceder seleccionando Android > AVD Manager desde el menú Tools.
Desde esta ventana podemos crear y administrar todos nuestros dispositivos virtuales
Android. Para crear uno, debemos dar clic en el botón “New” y nos mostrará la siguiente
pantalla, donde podemos elegir y colocar los datos que se muestran a continuación:
Para utilizar su AVD recién creada, seleccione de la lista en el administrador de AVD, y haga clic
en Inicio ... a la derecha. Si su AVD está correctamente configurado, el emulador de Android
debería lanzar una aplicación como se muestra en la
siguiente imagen.
Con el emulador de Android ya en marcha, es el momento de ejecutar su aplicación
seleccionando Run 'App' del menú Run.
Una de las grandes debilidades de utilizar un AVD para testear nuestras aplicaciones es la
lentitud de ejecución de nuestra aplicación en el emulador. Algunas opciones que ahora se
aplican para mejorar y solucionar este problema son las siguientes:
Instalar genymotion
Genymotion es un tercer emulador que es mucho más rápido que el emulador por defecto en
Android Studio. Puede revisar las instrucciones sobre cómo descargar e instalar genymotion.
Es necesario registrarse para obtener una cuenta gratuita con genymotion con el fin de
descargar el software.
Configuración de VM Aceleración