0% encontró este documento útil (0 votos)
50 vistas36 páginas

Docx

Android es un sistema operativo de código abierto para dispositivos móviles desarrollado por Google y Open Handset Alliance, que permite a los desarrolladores crear aplicaciones utilizando Java. Su arquitectura incluye un sistema operativo basado en Linux, un marco de aplicaciones, y diversas librerías que facilitan el desarrollo. Este manual proporciona una guía para comenzar a desarrollar en Android, incluyendo la configuración del entorno de desarrollo y las herramientas necesarias.

Cargado por

shirley
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
50 vistas36 páginas

Docx

Android es un sistema operativo de código abierto para dispositivos móviles desarrollado por Google y Open Handset Alliance, que permite a los desarrolladores crear aplicaciones utilizando Java. Su arquitectura incluye un sistema operativo basado en Linux, un marco de aplicaciones, y diversas librerías que facilitan el desarrollo. Este manual proporciona una guía para comenzar a desarrollar en Android, incluyendo la configuración del entorno de desarrollo y las herramientas necesarias.

Cargado por

shirley
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Introduccin

Qu es Android?

Android es un nuevo conjunto de herramientas de software de cdigo


abierto para telfonos mviles que fueron creadas por Google y Open
Handset Alliance. La idea de Android se resume en:

"Android - La imaginacin es el lmite"

Tanto si es usted un aficionado o un programador profesional, si lo est


haciendo por diversin o con fines de lucro, es el momento para aprender
ms sobre el desarrollo de Android. Este manual le ayudar a empezar.

Historia de Android (Open Handset Alliance)

Los dispositivos mviles constituyen cada vez ms una realidad que


ofrece al usuario, en un mismo y reducido aparato, funciones de
comunicacin y procesamiento de datos que van mucho ms all de las
simples llamadas telefnicas o la ejecucin de aplicaciones bsicas. El
gigante de Internet Google ha presentado un nuevo sistema operativo para
este tipo de dispositivos, Android, que busca ser una firme alternativa a otros
sistemas, ya ampliamente extendidos, como Symbian o Windows Mobile.
Android es un sistema operativo del mvil que utiliza una versin modificada
del kernel de Linux.

Fu desarrollado inicialmente por Android Inc, una firma ms tarde


comprada por Google, y actualmente por el Open Handset Alliance. Se
permite a los desarrolladores escribir cdigo usando el lenguaje Java, y
controlar el dispositivo a travs de bibliotecas Java.

El descubrimiento de la distribucin de Android, el 5 de noviembre de


2007 fu anunciado por la fundacin Open Handset Alliance, un consorcio de
47 empresas de hardware, software y telecomunicaciones dedicadas al
fomento de estndares abiertos para dispositivos mviles. Google sin
embargo, ha sido quien ha publicado la mayora del cdigo fuente de Android
bajo la licencia de Software Apache, una licencia de software libre y de cdigo
abierto a cualquier desarrollador.

Caractersticas

Marco de aplicacin que permite la reutilizacin y el reemplazo de


los componentes.

Dalvik optimizado para dispositivos mviles.

Navegador integrado basado en la apertura del motor WebKit.

Grficos mejorados con la biblioteca de grficos 2D; grficos en


3D basado en la especificacin OpenGL ES 1.0.

SQLite para el almacenamiento de datos estructurados.

Soporte para audio, vdeo, y formatos de imagen (MPEG4, H.264,


MP3, AAC, AMR, JPG, PNG, GIF).

Telefona GSM (dependiente del hardware).

Bluetooth, EDGE, 3G, y Wi-Fi (dependiente del hardware).

Cmara, GPS, brjula, y acelermetro (dependiente del


hardware).

Entorno de desarrollo muy completo, incluyendo un emulador,


herramientas de depuracin, de memoria, perfiles de rendimiento, y
un plug-in para el IDE de Eclipse.

Aplicaciones en Android

Una aplicacin Android corre dentro de su propio proceso Linux, por tanto,
una caracterstica fundamental de Android es que el tiempo y ciclo de vida de
una aplicacin no est controlado por la misma aplicacin sino que lo
determina el sistema a partir de una combinacin de estados como pueden
ser qu aplicaciones estn funcionando, qu prioridad tienen para el usuario y
cunta memoria queda disponible en el sistema.

Una aplicacin en Android debe declarar todas sus actividades, los puntos
de entrada, la comunicacin, las capas, los permisos, y las intenciones a
travs de AndroidManifest.xml (ver punto 3.2 Interfaces de Usuario). Es muy
importante tener en consideracin cmo estos componentes impactan en el
tiempo de vida del proceso asociado con una aplicacin, porque si no son
empleados de manera apropiada, el sistema detendr el proceso de la
aplicacin an cuando se est haciendo algo importante.
7.1. Arquitectura de una aplicacin mvil Android.

Como ya se ha mencionado, Android es una plataforma para dispositivos


mviles que contiene una pila de software donde se incluye un sistema
operativo, middleware y aplicaciones bsicas para el usuario.

En las siguientes lneas se dar una visin global por capas de cul es la
arquitectura empleada en Android. Cada una de estas capas utiliza servicios
ofrecidos por las anteriores, y ofrece a su vez los suyos propios a las capas
de niveles superiores, tal como muestra la siguiente figura ((c) Google):
Aplicaciones: Este nivel contiene, tanto las incluidas por defecto de
Android como aquellas que el usuario vaya aadiendo posteriormente,
ya sean de terceras empresas o de su propio desarrollo. Todas estas
aplicaciones utilizan los servicios, las API y libreras de los niveles
anteriores.

Framework de Aplicaciones: Representa fundamentalmente el


conjunto de herramientas de desarrollo de cualquier aplicacin. Toda
aplicacin que se desarrolle para Android, ya sean las propias del
dispositivo, las desarrolladas por Google o terceras compaas, o
incluso las que el propio usuario cree, utilizan el mismo conjunto de API
y el mismo "framework", representado por este nivel.

Entre las API ms importantes ubicadas aqu, se pueden encontrar las


siguientes:

Activity Manager: Conjunto de API que gestiona el ciclo de


vida de las aplicaciones en Android.

Window Manager: Gestiona las ventanas de las aplicaciones


y utiliza la librera Surface Manager.

Telephone Manager: Incluye todas las API vinculadas a las


funcionalidades propias del telfono (llamadas, mensajes, etc.).

Content Provider: Permite a cualquier aplicacin compartir


sus datos con las dems aplicaciones de Android. Por ejemplo,
gracias a esta API la informacin de contactos, agenda, mensajes,
etc. ser accesible para otras aplicaciones.
View System: Proporciona un gran nmero de elementos
para poder construir interfaces de usuario (GUI), como listas,
mosaicos, botones, "check-boxes", tamao de ventanas, control de
las interfaces mediante teclado, etc. Incluye tambin algunas vistas
estndar para las funcionalidades ms frecuentes.

Location Manager: Posibilita a las aplicaciones la obtencin


de informacin de localizacin y posicionamiento.

Notification Manager: Mediante el cual las aplicaciones,


usando un mismo formato, comunican al usuario eventos que
ocurran durante su ejecucin: una llamada entrante, un mensaje
recibido, conexin Wi-Fi disponible, ubicacin en un punto
determinado, etc. Si llevan asociada alguna accin, en Android
denominada Intent, (por ejemplo, atender una llamada recibida)
sta se activa mediante un simple clic.

XMPP Service: Coleccin de API para utilizar este protocolo


de intercambio de mensajes basado en XML.

Libreras: La siguiente capa se corresponde con las libreras utilizadas por


Android. stas han sido escritas utilizando C/C++ y proporcionan a Android la
mayor parte de sus capacidades ms caractersticas. Junto al ncleo basado
en Linux, estas libreras constituyen el corazn de Android.

Entre las libreras ms importantes ubicadas aqu, se pueden encontrar las


siguientes:

Librera libc: Incluye todas las cabeceras y funciones segn


el estndar del lenguaje C. Todas las dems libreras se definen en
este lenguaje.

Librera Surface Manager: Es la encargada de componer los


diferentes elementos de navegacin de pantalla. Gestiona tambin
las ventanas pertenecientes a las distintas aplicaciones activas en
cada momento.
OpenGL/SL y SGL: Representan las libreras grficas y, por
tanto, sustentan la capacidad grfica de Android. OpenGL/SL
maneja grficos en 3D y permite utilizar, en caso de que est
disponible en el propio dispositivo mvil, el hardware encargado de
proporcionar grficos 3D. Por otro lado, SGL proporciona grficos
en 2D, por lo que ser la librera ms habitualmente utilizada por la
mayora de las aplicaciones. Una caracterstica importante de la
capacidad grfica de Android es que es posible desarrollar
aplicaciones que combinen grficos en 3D y 2D.

Librera Media Libraries: Proporciona todos los cdecs


necesarios para el contenido multimedia soportado en Android
(vdeo, audio, imgenes estticas y animadas, etc.)

FreeType: Permite trabajar de forma rpida y sencilla con


distintos tipos de fuentes.

Librera SSL: Posibilita la utilizacin de dicho protocolo para


establecer comunicaciones seguras.

Librera SQLite: Creacin y gestin de bases de datos


relacionales.

Librera WebKit: Proporciona un motor para las aplicaciones


de tipo navegador y forma el ncleo del actual navegador incluido
por defecto en la plataforma Android.

Tiempo de ejecucin de Android: Al mismo nivel que las librerias de


Android se sita el entorno de ejecucin. ste lo constituyen las Core
Libraries, que son librerias con mulititud de clases Java y la mquina
vistual Dalvik.

Ncleo Linux: Android utiliza el ncleo de Linux 2.6 como una capa
de abstraccin para el hardware disponible en los dispositivos mviles.
Esta capa contiene los drivers necesarios para que cualquier
componente hardware pueda ser utilizado mediante las llamadas
correspondientes. Siempre que un fabricante incluye un nuevo
elemento de hardware, lo primero que se debe realizar para que pueda
ser utilizado desde Android es crear las librerias de control o drivers
necesarios dentro de este kernel de Linux embebido en el propio
Android.

7.2. Configuracin, principales libreras y herramientas de desarrollo.

Entorno de Desarrollo

En este apartado se exponen los pasos necesarios para empezar a


desarrollar y a entender aplicaciones para Android.

El entorno normal para desarrollar aplicaciones en Android es Eclipse,


pero por suerte, todos aquellos que usan NetBeans, tambin disponen
de un entorno para el desarrollo de aplicaciones pero para usarlo
debern instalar varios complementos, que darn toda la funcionalidad
necesaria para trabajar con esta plataforma, lo que lo hace mas
complejo.

No podemos desarrollar nada sin las herramientas adecuadas. Las


instrucciones de instalacin aqu descritas se basan en el sistema
operativo Windows XP , y en el entorno de desarrollo Eclipse Classic
versin 3.4, conocida como Ganymede, ya que es un software libre
multiplataforma con soporte para numerosos lenguajes de
programacin, entre ellos Android. Aunque esta gua de instalacin no
los contempla, el SDK de Android tambin puede correr en otros
sistemas operativos como Mac OS X o Linux .

Descargar Eclipse
Desde su url de descarga:
http://www.eclipse.org/downloads/

Descargaremos la versin Classic a nuestro ordenador. Descomprimiremos


el archivo en nuestro ordenador y ejecutaremos el archivo eclipse.exe.

Finalizada la descarga, no se realiza ningn proceso de instalacin;


simplemente se deben descomprimir los ficheros y pulsar el ejecutable para
abrir la aplicacin. La primera vez que se inicie Eclipse, aparece por defecto
una localizacin para el workspace, donde se ubicarn todos los proyectos
desarrollados. Tras seleccionar la carpeta en la que guardaremos nuestro
trabajo y cerrar la ventana de informacin de Eclipse, nos encontramos ante
la interfaz de Eclipse:

Cerramos la pestaa y aparecera la interfaz inicial del programa donde


podremos empezar a trabajar que es:

Instalar plug-in

El siguiente paso consiste en instalar un plug-in especfico de Android para


la plataforma Eclipse. Esta herramienta, llamada ADT (Android
Development Tools), facilita enormemente la creacin de proyectos, su
implementacin, depuracin y ejecucin, por lo que es altamente
recomendable si se quiere trabajar con Android.

Para instalar el plug-in ADT en Eclipse Ganymede, es necesario seguir las


siguientes indicaciones:

1. Acceder al men : Help -> Software Updates.

Desde aqui podemos controlar todas las actualizaciones y plugins de


Eclipse. Nosotros necesitaremos aadir una nueva direccin para que el
sistema localice e instale el plug-in de Android.

2. Pulsamos sobre Add site y en la nueva ventana que se abre(la


mostrada en la imagen) debemos insertar en el campo Location:

Nota: Si no os reconoce la direccin probad con http en vez de https.

3. Una vez aadido el sitio, marcamos e instalamos el nuevo


plugin que nos aparecer en la lista. En caso de que nos
pidiera instalar otro plugin, lo buscaremos mediante el buscador de plugin y lo
instalaremos de la misma manera que hemos instalado el de
Android.Una vez instalado todo reiniciamos Eclipse.

Referenciar el SDK de Android


Tras abrir de nuevo Eclipse, debe indicarse en las preferencias de Eclipse la
localizacin del SDK a utilizar para los proyectos de Android:
Por ultimo falta indicarle a Eclipse donde se encuentra el SDK de Android.

Para ello pinchamos en el men Windows Preferences. All nos


aparecer una ventana como la siguiente:

Marque la etiqueta de Android en el panel izquierdo.A continuacin


pulse el botn Browse, busque y aada la direccin donde haba guardado el
SDK, la cual se visualizar en el campo SDK Location.

Pulse el botn Apply y despus OK.

Llegados a este punto, ya tiene su entorno listo para poder desarrollar


programas para Android.

Actualizaciones del plug-in


Es posible que con el tiempo haya disponible una nueva versin del ADT
correspondiente a la versin del SDK de Android instalado. Para comprobar
las posibles actualizaciones a travs de Eclipse, se debe realizar lo siguiente:

1. Iniciar Eclipse.

2. Seleccionar la pestaa Help > Software Updates.


Esta accin abrir una nueva ventana llamada Software Update and Add-
ons.

3. Elegir la pestaa Installed Software.

4. Pulsar el botn Update.

5. Si existe alguna actualizacin para el ADT, seleccionarla y pulsar el botn


Finish.

https://sites.google.com/site/swcuc3m/home/android/desarrollo
7.2.1. Lista de Libreras Android

Android ofrece una serie de APIs para el desarrollo de sus aplicaciones. La


siguiente lista proporciona una visin de lo que est disponible.Todos los
dispositivos Android ofrecen al menos estas APIs:

android.util :

El paquete bsico de servicios pblicos contiene las clases de bajo


nivel, como contenedores especializados, formateadores de cadenas, y
de anlisis XML de servicios pblicos.

android.os

El paquete de sistema operativo permite el acceso a los servicios


bsicos como el paso de mensajes, la comunicacin entre procesos
y funciones de reloj.

android.graphics

La API de grficos, es el suministro de las clases de bajo nivel como


lienzos de apoyo, colores y las primitivas de dibujo. Tambin le permite
dibujar sobre lienzos.

android.text

Las herramientas de procesamiento de texto para mostrarlo y


analizarlo.

android.database
Proporciona las clases de bajo nivel necesario para la manipulacin de
cursores cuando se trabaja con bases de datos.

android.content

El contenido de la API se utiliza para admirar el acceso a los datos y a


la publicacin, proporcionando los servicios para hacer frente a los
recursos, los proveedores de contenido y los paquetes.

android.view

Las vistas son un ncleo de la interfaz de usuario. Todos los elementos


de la interfaz se construyen utilizando una serie de vistas que
proporcionan los componentes de interaccin con el usuario.

android.widget

Construido sobre el paquete de Vista, estan las clases widget "aqu


est uno que creamos antes", elementos de la interfaz de usuario para
su uso en las aplicaciones. Se incluyen listas, botones y diseos.

com.google.android.maps

API de alto nivel que proporciona acceso a los controles de mapas que
usted puede utilizar en su aplicacin. Incluye el control MapView as
como la superposicin y la clase MapController utilizados para anotar
y controlar dichos mapas.

android.app

Paquete de alto nivel que proporciona el acceso al modelo de solicitud.


Este, incluye la actividad de servicios y las API que forman la base de
todas sus aplicaciones.

android.provider
Para facilitar el acceso a los desarrolladores a determinados
proveedores de contenidos estndar, el paquete proveedor ofrece
clases para todas sus distribciones.

android.telephony

Las APIs de telefona le dan la posibilidad de interactuar directamente


con el dispositivo de Telfono, permitindole realizar,recibir y controlar
las llamadas de telfono,su estado y mensajes SMS.

android.webkit

Ofrece funciones para trabajar con contenido basado en web,


incluyendo un control WebView para incrustar los navegadores en sus
actividades y un administrador de cookies.

https://sites.google.com/site/swcuc3m/home/android/librerias_espanol

7.4. Virtual Machine(Dalvit)

Dalvik VM

Es el nombre de la mquina virtual que utiliza Android (DalvikVM), la cual


est basada en registro, diseada y escrita por "Dan Bornstein" y algunos otros
ingenieros de Google. En ella podemos encontrar una gran diferencia con
respecto a la mquina virtual Java (JVM), ya que la mquina virtual de Google
no est basada en una pila.

Dalvik.equals(Java) == false

Por qu " Dalvik "? ste nombre fue elegido por Bornstein en honor
a Dalvk, un pueblo de pescadores de Eyjafjrur (Islandia), donde vivieron
algunos de sus antepasados.

Dalvik VM es un intrprete que slo ejecuta los archivos ejecutables con


formato .dex (Dalvik Executable). Este formato est optimizado para el
almacenamiento eficiente de la memoria, lo cual consigue delegando en el
kernel la gestin de hilos (multithreading), de memoria y de procesos.

La herramienta "dx" incluida en el SDK de Android permite transformar las


clases compiladas (.class) por un compilador de lenguaje Java en formato .dex.

La Dalvik VM tambin ha sido optimizada para correr mltiples instancias con


muy baja huella.

Diferencias con una mquina virtual Java normal

En primer lugar, la mquina virtual de Dalvik toma los archivos generados por
las clases Java y los combina en uno o ms archivos ejecutables Dalvik (. dex),
los cuales a su vez son comprimidos en un slo fichero .apk (Android
Package) en el dispositivo. De esta forma, reutiliza la informacin duplicada por
mltiples archivos .class, reduciendo as la necesidad de espacio (sin comprimir)
a la mitad de lo que ocupara un archivo .jar.

En segundo lugar, Google ha mejorado la recoleccin de basura en la mquina


virtual de Dalvik, pero ha preferido omitir just-in-time (JIT), en esta versin por
lo menos. La empresa justifica esta eleccin diciendo que muchas de las
bibliotecas centrales de Android, incluyendo las bibliotecas de grficos, estn
implementadas en C y C++. Del mismo modo, Android proporciona una
biblioteca de C optimizada para acceder a la base de datos SQLite, pero esta
biblioteca est encapsulada en un nivel superior del API de Java. Dado que la
mayora del cdigo del ncleo se encuentra en C y C++, Google argument que
el impacto de la compilacin JIT no sera significativo.

Por ltimo, la mquina virtual de Dalvik utiliza un tipo diferente de montaje para
la generacin del cdigo, en el que se utilizan los registros como las unidades
primarias de almacenamiento de datos en lugar de la pila. Hay que sealar que
el cdigo ejecutable final de Android, como resultado de la mquina virtual de
Dalvik, no se basa en el bytecode de Java, sino que se basa en los archivos
.dex. Esto significa que no se puede ejecutar directamente el Bytecode de
Java, sino que hay que comenzar con los archivos .class de Java y luego
convertirlos en archivos .dex.

Formato de un fichero .dex

https://sites.google.com/site/swcuc3m/home/android/generalidades/aplic
acionesandroid

7.5. Aplicacin Hola Mundo para la plataforma Android.

Aplicacion Hola Mundo

La mejor forma de empezar a comprender las caractersticas de cualquier


nuevo entorno de desarrollo es mediante la creacin de un ejemplo sencillo. En
este caso, y como viene siendo habitual, se crear una aplicacin que mostrar
por pantalla el mensaje Hola Mundo. Para ello debemos realizar los
siguientes pasos:

Crear un proyecto

La creacin de un nuevo proyecto de Android no representa mayor dificultad


que crear cualquier otro tipo de proyecto en Eclipse. Una vez abierto este
entorno de desarrollo, deben realizarse los siguientes pasos:

1. Crear el proyecto. Pulsamos sobre el men File > New > Project...
Seleccionamos Android Project y pulsamos sobre el botn Next.

2. Especificar las propiedades. A continuacin, se muestra una ventana


donde es necesario detallar algunas propiedades del proyecto. En
concreto, se precisa asignar un valor para:
Project Name: Es el nombre del proyecto. En la prctica, ser el
nombre que reciba la carpeta donde se guardar todo lo relativo al
presente proyecto, dentro del workspace. Por
ejemplo, HelloAndroidSWC.

Package Name: Nombre del paquete bajo el cual ser desarrollado


todo el cdigo. Por ejemplo, se le puede asignar el
valor uc3m.it.swc.hello.

Activity Name: Representa al nombre de la clase Activity que ser


creada de forma automtica por el plug-in. Esta clase Activity
simplemente es una clase ejecutable, capaz de realizar alguna tarea, y
es imprescindible en la mayora de las aplicaciones para Android. Por
ejemplo, pngase el nombre Hello.

Application Name: Nombre de la aplicacin que se va a desarrollar.


Constituye el nombre visible para el usuario del dispositivo mvil. Por
ejemplo, Hello, Android.

Debe introducir todos los datos citados anteriormente en la pantalla:


Pulsmos sobre Finish. Tras hacerlo, Eclipse mostrar en el explorador de
paquetes los elementos que conforman el actual proyecto.

Aadir una interfaz de usuario

Android nos ofrece la posibilidad de crear la fachada de la aplicacin


mediante ficheros XML.De esta forma nos podemos centrar en el aspecto
funcional (cdigo java) o puramente esttico(cdigo XML).

Para continuar con el ejemplo, debe desplegarse en el explorador de


paquetes la carpeta denominada src. En esta carpeta
existe un fichero: Hello.java y en la carpeta denominada
gen existe un fichero R.java. Ambos constituyen hasta el momento los
dos nicos ficheros fuente del proyecto.

El objetivo es crear una simple interfaz de usuario que permita mostrar el


mensaje Hola Mundo. Para ello, el cdigo ha de ser el siguiente:

En Android, la interfaz de usuario est compuesta de un jerarqua de clases


llamadas "Views. Una "View" es simplemente un objeto que puede ser
pintado en la pantalla, tal como una animacin o un botn. El nombre
especfico para la subclase de "View" que manipula texto es "TextView" cuya
sintaxis para crear objetos de este tipo es:

TextView tv = new TextView(this);

El argumento que se le pasa al constructor de "TextView" es una instancia


de "Context". Un "Context" es simplemente un enlace hacia el sistema y es lo
que provee el acceso a recursos como el acceso a la base de datos o la
configuracin de ciertas caractersticas de la aplicacin.
La clase "Activity" hereda de "Context" y debido a que nuestra aplicacin
es un subclase de "Activity", entonces tambin lo es de Context", de ese
modo, la clase Hello tambin es un contexto vlido en Android y podemos
referenciarla usando"this" como argumento del constructor "TextView".

Una vez creada la etiqueta de texto, para asignarle un valor simplemente se


llama al mtodo setText() con la cadena Hola Mundo como argumento.

tv.setText("Hello, Android");

Como paso final, deben vincularse los elementos visuales que se hayan
creado (las vistas, como TextView) con la pantalla que la aplicacin
mostrar al usuario. Este paso se realiza mediante el
mtodo setContentView() de la clase Activity, que indica al sistema
que View debe ser asociada con la UI de la "Activity". Si una "Activity" no
llama a este mtodo ninguna UI ser presentada y el sistema simplemente
mostrar una pantalla en blanco. setContentView(tv);

https://sites.google.com/site/swcuc3m/home/android/4-desarrollo-de-
aplicaciones/hello

7.6. Android Software Stack y el ciclo de vida de una


aplicacin Android
Pila de software Android se clasifican en cinco partes:

1. kernel de Linux

2. bibliotecas nativas (middleware),

3. Android Runtime

4. Marco de aplicacin

5. aplicaciones

Vamos a ver la arquitectura androide primero.

1) ncleo de Linux
Es el corazn de la arquitectura androide que existe en la raz de la
arquitectura androide. Kernel de Linux es responsable de controladores de
dispositivos, gestin de energa, gestin de memoria, gestin de dispositivos y
acceso a los recursos.

2) Bibliotecas nativos

En la parte superior del ncleo de Linux, su son bibliotecas nativas tales


como WebKit, OpenGL, FreeType, SQLite, los medios de comunicacin,
bibliotecas de ejecucin de C (libc), etc.

La biblioteca WebKit es responsable de soporte de los navegadores, SQLite


es para la base de datos, para poder trabajar con fuentes FreeType, los
medios de comunicacin para reproducir y grabar los formatos de audio y
vdeo.

3) Tiempo de ejecucin Android

En tiempo de ejecucin androide, existen bibliotecas del ncleo y DVM (Dalvik


Virtual Machine) que se encarga de ejecutar la aplicacin androide. DVM es
como JVM pero est optimizado para dispositivos mviles. Se consume
menos memoria y proporciona un rendimiento rpido.

4) Marco de Android

En la parte superior de las bibliotecas nativas y tiempo de ejecucin androide,


no hay marco androide. Android incluye marco de Android API , tales como la
interfaz de usuario (User Interface), telefona, recursos, lugares, proveedores
de contenido (datos) y gestores de paquetes. Ofrece una gran cantidad de
clases e interfaces para el desarrollo de aplicaciones para Android.

5) Aplicaciones

En la parte superior del marco androide, existen aplicaciones. Todas las


aplicaciones, tales como el hogar, contactos, configuraciones, juegos,
navegadores estn utilizando marco androide que utiliza Android Runtime y
bibliotecas. tiempo de ejecucin de Android y bibliotecas nativas estn
utilizando Linux meollo.

Ciclo de vida de una actividad

El hecho de que cada aplicacin se ejecuta en su propio proceso aporta


beneficios en cuestiones bsicas como seguridad, gestin de memoria, o la
ocupacin de la CPU del dispositivo mvil. Android se ocupa de lanzar y parar
todos estos procesos, gestionar su ejecucin y decidir qu hacer en funcin de
los recursos disponibles y de las rdenes dadas por el usuario.

El usuario desconoce este comportamiento de Android. Simplemente es


consciente de que mediante un simple clic pasa de una a otra aplicacin y
puede volver a cualquiera de ellas en el momento que lo desee. No debe
preocuparse sobre cul es la aplicacin que realmente est activa, cunta
memoria est consumiendo, ni si existen o no recursos suficientes para abrir
una aplicacin adicional. Todo eso son tareas propias del sistema operativo.

Android lanza tantos procesos como permitan los recursos del dispositivo.
Cada proceso, correspondiente a una aplicacin, estar formado por una o
varias actividades independientes (componentes Activity) de esa aplicacin.
Cuando el usuario navega de una actividad a otra, o abre una nueva aplicacin,
el sistema duerme dicho proceso y realiza una copia de su estado para poder
recuperarlo ms tarde. El proceso y la actividad siguen existiendo en el
sistema, pero estn dormidos y su estado ha sido guardado. Es entonces
cuando crea, o despierta si ya existe, el proceso para la aplicacin que debe
ser lanzada, asumiendo que existan recursos para ello.

Cada uno de los componentes bsicos de Android tiene un ciclo de vida


bien definido; esto implica que el desarrollador puede controlar en cada
momento en qu estado se encuentra dicho componente, pudiendo as
programar las acciones que mejor convengan. El componente Activity,
probablemente el ms importante, tiene un ciclo de vida como el mostrado en
la siguiente figura.

Ciclo de vida de una actividad


De la figura anterior, pueden sacarse las siguientes conclusiones:

onCreate(), onDestroy(): Abarcan todo el ciclo de vida. Cada uno de estos


mtodos representan el principio y el fin de la actividad.

onStart(), onStop(): Representan la parte visible del ciclo de vida. Desde


onStart() hasta onStop(), la actividad ser visible para el usuario, aunque es
posible que no tenga el foco de accin por existir otras actividades
superpuestas con las que el usuario est interactuando. Pueden ser llamados
mltiples veces.

onResume(), onPause(): Delimitan la parte til del ciclo de vida. Desde


onResume() hasta onPause(), la actividad no slo es visible, sino que adems
tiene el foco de la accin y el usuario puede interactuar con ella.

Tal y como se ve en el diagrama de la figura anterior, el proceso que


mantiene a esta Activity puede ser eliminado cuando se encuentra en
onPause() o en onStop(), es decir, cuando no tiene el foco de la aplicacin.
Android nunca elimina procesos con los que el usuario est interactuando en
ese momento. Una vez se elimina el proceso, el usuario desconoce dicha
situacin y puede incluso volver atrs y querer usarlo de nuevo. Entonces el
proceso se restaura gracias a una copia y vuelve a estar activo como si no
hubiera sido eliminado. Adems, la Activity puede haber estado en segundo
plano, invisible, y entonces es despertada pasando por el estado onRestart().

Pero, qu ocurre en realidad cuando no existen recursos suficientes?


Obviamente, los recursos son siempre limitados, ms an cuando se est
hablando de dispositivos mviles. En el momento en el que Android detecta
que no hay los recursos necesarios para poder lanzar una nueva aplicacin,
analiza los procesos existentes en ese momento y elimina los procesos que
sean menos prioritarios para poder liberar sus recursos.
Cuando el usuario regresa a una actividad que est dormida, el sistema
simplemente la despierta. En este caso, no es necesario recuperar el estado
guardado porque el proceso todava existe y mantiene el mismo estado. Sin
embargo, cuando el usuario quiere regresar a una aplicacin cuyo proceso ya
no existe porque se necesitaba liberar sus recursos, Android lo crea de nuevo y
utiliza el estado previamente guardado para poder restaurar una copia fresca
del mismo. Como se ya ha explicado, el usuario no percibe esta situacin ni
conoce si el proceso ha sido eliminado o est dormido.

http://www.javatpoint.com/android-software-stack

7.7.

7.8. Principales componentes: Introduccin al uso de


Actividades y la gestin de Recursos.

Componentes

Activity: Sin duda es el componente ms habitual de las aplicaciones para


Android. Un componente Activity refleja una determinada actividad llevada a
cabo por una aplicacin, y que lleva asociada tpicamente una ventana o
interfaz de usuario; es importante sealar que no contempla nicamente el
aspecto grfico, sino que ste forma parte del componente Activity a travs de
vistas representadas por clases como View y sus derivadas. Este componente
se implementa mediante la clase de mismo nombre Activity. La mayora de las
aplicaciones permiten la ejecucin de varias acciones a travs de la existencia
de una o ms pantallas. Por ejemplo, pinsese en una aplicacin de mensajes
de texto. En ella, la lista de contactos se muestra en una ventana. Mediante el
despliegue de una segunda ventana, el usuario puede escribir el mensaje al
contacto elegido, y en otra tercera puede repasar su historial de mensajes
enviados o recibidos. Cada una de estas ventanas debera estar representada
a travs de un componente Activity, de forma que navegar de una ventana a
otra implica lanzar una actividad o dormir otra. Android permite controlar por
completo el ciclo de vida de los componentes Activity.

Tal y como se puede ver en el siguiente punto, una actividad tiene un ciclo de
vida muy definido, que ser igual para todas las actividades. Este ciclo de vida
es impuesto por el SDK de Android. Las actividades tienen cuatro posibles
estados: Activa, pausada, parada y reiniciada.

A la hora de disear una aplicacin en Android hay que tener en cuenta su


ciclo de vida.

Intent: Un Intent consiste bsicamente en la voluntad de realizar alguna


accin, generalmente asociada a unos datos. Lanzando un Intent, una
aplicacin puede delegar el trabajo en otra, de forma que el sistema se
encarga de buscar qu aplicacin de entre las instaladas, es la que puede
llevar a cabo la accin solicitada. Por ejemplo, abrir una URL en algn
navegador web, o escribir un correo electrnico desde algn cliente de
correo. Los Intents estn incluidos en el AndroidManifest porque describen
dnde y cundo puede comenzar una actividad. Cuando una actividad
crea un Intent, ste puede tener descriptores de lo que se quiere hacer.
Una vez se est ejecutando la aplicacin, Android compara esta
informacin del Intent con los Intents de cada aplicacin, eligiendo el ms
adecuado para realizar la operacin especificada por el llamante.

Broadcast Intent Receiver: Un componente Broadcast Intent Receiver se


utiliza para lanzar alguna ejecucin dentro de la aplicacin actual cuando
un determinado evento se produzca (generalmente, abrir un componente
Activity). Por ejemplo, una llamada entrante o un SMS recibido. Este
componente no tiene interfaz de usuario asociada, pero puede utilizar el
API Notification Manager para avisar al usuario del evento producido a
travs de la barra de estado del dispositivo mvil. Este componente se
implementa a travs de una clase de nombre BroadcastReceiver. Para
que Broadcast Intent Receiver funcione, no es necesario que la aplicacin
en cuestin sea la aplicacin activa en el momento de producirse el
evento. El sistema lanzar la aplicacin si es necesario cuando el evento
monotorizado tenga lugar.

Service: Un componente Service representa una aplicacin ejecutada sin


interfaz de usuario, y que generalmente tiene lugar en segundo plano
mientras otras aplicaciones (stas con interfaz) son las que estn activas
en la pantalla del dispositivo. Un ejemplo tpico de este componente es un
reproductor de msica. La interfaz del reproductor muestra al usuario las
distintas canciones disponibles, as como los tpicos botones de
reproduccin, pausa, volumen, etc. En el momento en el que el usuario
reproduce una cancin, sta se escucha mientras se siguen visualizando
todas las acciones anteriores, e incluso puede ejecutar una aplicacin
distinta sin que la msica deje de sonar. La interfaz de usuario del
reproductor sera un componente Activity, pero la msica en reproduccin
sera un componente Service, porque se ejecuta en background. Este
elemento est implementado por la clase de mismo nombre Service.

Content Provider: Con el componente Content Provider, cualquier


aplicacin en Android puede almacenar datos en un fichero, en una base
de datos SQLite o en cualquier otro formato que considere. Adems, estos
datos pueden ser compartidos entre distintas aplicaciones. Una clase que
implemente el componente Content Provider contendr una serie de
mtodos que permiten almacenar, recuperar, actualizar y compartir los
datos de una aplicacin.

Existe una coleccin de clases para distintos tipos de gestin de datos en el


paquete android.provider. Adems, cualquier formato adicional que se quiera
implementar deber pertenecer a este paquete y seguir sus estndares de
funcionamiento.

No todas las aplicaciones tienen que tener los cuatro componentes, pero
cualquier aplicacin ser una combinacin de estos.

Estado de los procesos


Como se ha mencionado anteriormente, cada aplicacin de Android corre
en su propio proceso, el cual es creado por la aplicacin cuando se ejecuta y
permanece hasta que la aplicacin deja de trabajar o el sistema necesita
memoria para otras aplicaciones. Android sita cada proceso en una jerarqua
de "importancia" basada en estados, como se puede ver a continuacin:

Procesos en primer plano (Active process): Es un proceso que aloja


una Activity en la pantalla y con la que el usuario est interactuando (su
mtodo onResume() ha sido llamado) o que un IntentReceiver est
ejecutndose. Este tipo de procesos sern eliminados como ltimo recurso
si el sistema necesitase memoria.

Procesos visibles (Visible process): Es un proceso que aloja una


Activity pero no est en primer plano (su mtodo onPause() ha sido
llamado). Esto ocurre en situaciones dnde la aplicacin muestra un
cuadro de dilogo para interactuar con el usuario. Este tipo de procesos no
ser eliminado en caso que sea necesaria la memoria para mantener a
todos los procesos del primer plano corriendo.

Procesos de servicio (Started service process): Es un proceso que aloja un


Service que ha sido iniciado con el mtodo startService(). Este tipo de
procesos no son visibles y suelen ser importantes para el usuario
(conexin con servidores, reproduccin de msica).

Procesos en segundo plano (Background process): Es un proceso que


aloja una Activity que no es actualmente visible para el usuario (su
mtodo onStop() ha sido llamado). Normalmente la eliminacin de estos
procesos no suponen un gran impacto para la actividad del usuario. Es
muy usual que existan numerosos procesos de este tipo en el sistema, por
lo que el sistema mantiene una lista para asegurar que el ltimo proceso
visto por el usuario sea el ltimo en eliminarse en caso de necesitar
memoria.
Procesos vacos (Empty process): Es un proceso que no aloja ningn
componente. La razn de existir de este proceso es tener una cach
disponible de la aplicacin para su prxima activacin. Es comn, que el
sistema elimine este tipo de procesos con frecuencia para obtener
memoria disponible.

Segn esta jerarqua, Android prioriza los procesos existentes en el sistema


y decide cules han de ser eliminados, con el fin de liberar recursos y poder
lanzar la aplicacin requerida.

Para los procesos en segundo plano, existe una lista llamada LRU (Least Recently
Used). En funcin de esta lista se van eliminando los procesos; los primeros que se
eliminan son aquellos que llevan ms tiempo sin usarse. As el sistema se asegura
de mantener vivos los procesos que se han usado recientemente.

Modelo de seguridad

La mayora de las medidas de seguridad entre el sistema y las aplicaciones


derivan de los estndares de Linux 2.6, cuyo kernel, constituye el ncleo principal de
Android.

Cada proceso en Android proporciona un entorno seguro de ejecucin, en el


que por defecto, ninguna aplicacin tiene
permiso para realizar ninguna operacin o comportamiento que pueda impactar
negativamente en la ejecucin de otras aplicaciones o del sistema mismo. Por
ejemplo, acciones como leer o escribir ficheros privados del usuario
no estn permitidas. La nica forma de poder saltar estas restricciones
impuestas por Android, es mediante la declaracin explcita de
un permiso que autorice a llevar a cabo una determinada accin habitualment
e
prohibida.

La seguridad en Android abarca desde el despliegue hasta la ejecucin de la


aplicacin.
Con respecto a la implementacin, las aplicaciones de Android tienen que est
ar firmadas con una firma digital para poder instalarlas en el dispositivo. Dicha firma
se hace a travs de un certificado, cuya clave privada ser la del desarrollador de
dicha aplicacin.

No es necesario vincular a una autoridad de certificado, el nico cometido d


el certificado es crear una relacin de confianza entre las aplicaciones. Mediante la
firma, la aplicacin lleva adjunta su autora.

Con respecto a la ejecucin, cada aplicacin Android se ejecuta dentro de un


proceso separado. Cada
uno de estos procesos tiene un ID de usuario nico y permanente (asignado
en el momento de la instalacin). Esto impone un lmite al proceso porque evita
que una aplicacin tenga acceso directo a los datos crticos para el correcto
funcionamiento del terminal.

Uno de los beneficios de este requisito es que una solicitud no puede ser
actualizada con una versin que no fu publicada por el autor original.

Para establecer un permiso para una aplicacin, es necesario declarar uno o ms


elementos <uses-permission> donde se especifica el tipo de permiso que
se desea habilitar. Por ejemplo, si se quisiera permitir que una aplicacin
pueda monitorizar mensajes SMS entrantes, en el fichero AndroidManifest.xml se
encontrara algo como lo que sigue:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.app.myapp"

<uses-permission android:name="android.permission.RECEIVE_SMS" />


</manifest>

En la clase "android.Manifest.Permission" se especifican todos los posibles


permisos que se pueden conceder a una aplicacin.
El elemento <uses-permission> contempla una serie de atributos que definen y
matizan el alcance el permiso dado:

android:name: Especificacin del permiso que se pretende conceder. Debe


ser un nombre de alguno
de los listados en la clase android.Manifest.Permission.

android:label: Una etiqueta o nombre convencional fcilmente legible para el


usuario.

android:permissionGroup: Permite especificar un grupo asociado al


permiso. Los posibles grupos se encuentran listados en la
clase android.Manifest.permission_group.

android:protectionLevel: Determina el nivel de riesgo del permiso, y en


funcin del mismo influye en como el sistema otorga o no el permiso a la
aplicacin. Oscila entre valores desde el 0 hasta el 3.

android:description: Descripcin textual del permiso.

android:icon: Icono grfico que puede ser asociado al permiso.

https://sites.google.com/site/swcuc3m/home/android/gener
alidades/aplicacionespag2

También podría gustarte