Interfaces Alto Nivel Android

download Interfaces Alto Nivel Android

of 32

Transcript of Interfaces Alto Nivel Android

  • 7/24/2019 Interfaces Alto Nivel Android

    1/32

    SERVICIO NACIONAL DE APRENDIZAJEDIRECCIN GENERAL

    DIRECCIN DE FORMACIN PROFESIONALSistema Integrado de Mejora Continua

    MATERIAL DE APOYO

    FORMATO PE04

    Arquitectura de aplicaciones en Android

    Android es un entorno operativo completo basado en el kernel Linux V2.6. Inicialmente,el objetivo de implementacin para Android fue el rea de telfonos mviles, inclusotelfonos inteligentes y dispositivos de telfonos con tapa de bajo costo. Sin embargo, elrango completo de servicio de computacin de Android y el vasto soporte funcional tienenel potencial para extenderse ms all del mercado de telfonos mviles. Android puedeser til para otras plataformas y aplicaciones. En la figura 1, se puede apreciar laarquitectura de software para el despliegue de servicios basados en Plataforma Android.

    Fig 1. Arquitectura para aplicaciones Android. Fuente:https://sites.google.com/site/swcuc3m/home/android/generalidades/2-2-arquitectura-de-

    android.

    La plataforma para dispositivos mviles Android contienen una pila de software dondese incluye un sistema operativo, middlewarey aplicaciones bsicas para el usuario. Lascapas de la arquitectura de su arquitectura son:

    https://sites.google.com/site/swcuc3m/home/android/generalidades/2-2-arquitectura-de-androidhttps://sites.google.com/site/swcuc3m/home/android/generalidades/2-2-arquitectura-de-androidhttps://sites.google.com/site/swcuc3m/home/android/generalidades/2-2-arquitectura-de-androidhttps://sites.google.com/site/swcuc3m/home/android/generalidades/2-2-arquitectura-de-androidhttps://sites.google.com/site/swcuc3m/home/android/generalidades/2-2-arquitectura-de-android
  • 7/24/2019 Interfaces Alto Nivel Android

    2/32

    Aplicaciones:Este nivel contiene, tanto las incluidas por defecto de Android comoaquellas que el usuario vaya aadiendo posteriormente, ya sean de tercerasempresas 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 deherramientas de desarrollo de cualquier aplicacin. Toda aplicacin que sedesarrolle para Android, ya sean las propias del dispositivo, las desarrolladas porGoogle o terceras compaas, o incluso las que el propio usuario cree, utilizan elmismo conjunto de API y el mismo "Framework", representado por este nivel.

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

    Act iv i ty Manager:Conjunto de API que gestiona el ciclo de vida de lasaplicaciones en Android.

    Window Manager:Gestiona las ventanas de las aplicaciones y utiliza la libreraSurface Manager.

    Telephone Manager:Incluye todas las API vinculadas a las funcionalidadespropias del telfono (llamadas, mensajes, etc.).

    Content Provider :Permite a cualquier aplicacin compartir sus datos con lasdems aplicaciones de Android. Por ejemplo, gracias a esta API la informacin decontactos, agenda, mensajes, etc. ser accesible para otras aplicaciones.

    View System : Proporciona un gran nmero de elementos para poder construirinterfaces de usuario (GUI), como listas, mosaicos, botones, "check-boxes",tamao de ventanas, control de las interfaces mediante teclado, etc. Incluyetambin algunas vistas estndar para las funcionalidades ms frecuentes.

    Locat ion Manager:Posibilita a las aplicaciones la obtencin de informacinde localizacin y posicionamiento.

    Notif ication Manager:Mediante el cual las aplicaciones, usando un mismoformato, comunican al usuario eventos que ocurran durante su ejecucin: una

    llamada entrante, un mensaje recibido, conexin Wi-Fi disponible, ubicacin en unpunto determinado, etc. Si llevan asociada alguna accin, en Androiddenominada Intent, (por ejemplo, atender una llamada recibida) sta se activamediante un simple clic.

    XMPP Service:Coleccin de API para utilizar este protocolo de intercambio demensajes basado en XML.

  • 7/24/2019 Interfaces Alto Nivel Android

    3/32

    Libreras: La siguiente capa se corresponde con las libreras utilizadas porAndroid. stas han sido escritas utilizando C/C++ y proporcionan a Android lamayor parte de sus capacidades ms caractersticas. Junto al ncleo basado enLinux, estas libreras constituyen el corazn de Android.

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

    Librera libc: Incluye todas las cabeceras y funciones segn el estndar dellenguaje C. Todas las dems libreras se definen en este lenguaje.

    Librera Surface Manager:Es la encargada de componer los diferenteselementos de navegacin de pantalla. Gestiona tambin las ventanaspertenecientes a las distintas aplicaciones activas en cada momento.

    OpenGL/SL y SGL : Representan las libreras grficas y, por tanto, sustentan lacapacidad grfica de Android. OpenGL/SL maneja grficos en 3D y permite utilizar,en caso de que est disponible en el propio dispositivo mvil, el hardwareencargado de proporcionar grficos 3D. Por otro lado, SGL proporciona grficos en2D, por lo que ser la librera ms habitualmente utilizada por la mayora de lasaplicaciones. Una caracterstica importante de la capacidad grfica de Android esque es posible desarrollar aplicaciones que combinen grficos en 3D y 2D.

    Li br era Med ia L ib rari es: Proporciona todos los cdecs necesarios para elcontenido multimedia soportado en Android (vdeo, audio, imgenes estticas yanimadas, etc.)

    FreeType:Permite trabajar de forma rpida y sencilla con distintos tipos defuentes.

    L ib rera SSL :Posibilita la utilizacin de dicho protocolo para establecercomunicaciones seguras.

    L ib rera SQLite: Creacin y gestin de bases de datos relacionales.

    L ib rera 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 libreras de Android sesita el entorno de ejecucin. ste lo constituyen las Core Libraries, que sonlibrerias con mulititud de clases Java y la mquina virtual Dalvik.

  • 7/24/2019 Interfaces Alto Nivel Android

    4/32

    Ncleo Linux: Android utiliza el ncleo de Linux 2.6como una capa deabstraccin para el hardware disponible en los dispositivos mviles. Esta capacontiene los drivers necesarios para que cualquier componente hardware puedaser utilizado mediante las llamadas correspondientes. Siempre que un fabricanteincluye un nuevo elemento de hardware, lo primero que se debe realizar para que

    pueda ser utilizado desde Android es crear las libreras de control o driversnecesarios dentro de este kernel de Linux embebido en el propio Android.

    DESARROLLO DE APLICACIONES EN PLATAFORMA ANDROID

    Teniendo un IDE para android, desde el men de opciones seleccionamos : File -> New-> Android Application Project

    En este dilogo especificamos el nombre de la aplicacin y proyecto (pueden seriguales) y el nombre del paquete java donde se almacenarn los archivos java quecreemos (normalmente la url de su empresa al revs).

    Ahora empezaremos a presionar el botn next para pasar a otras configuracionesde nuestra aplicacin, por el momento dejaremos todos los valores por defecto en

    cada una de los dilogos que aparece (son 5 dilogos actualmente), en el ltimodilogo debe aparecer el botn "Finish" el cual presionamos.

  • 7/24/2019 Interfaces Alto Nivel Android

    5/32

    El ADT nos genera todos los directorios y archivos bsicos para iniciar nuestroproyecto:

    La interfaz visual de nuestro programa para Android se almacena en un archivoXML en la carpeta res, subcarpeta layout y el archivo se llama activity_main.xml.En esta carpeta tenemos creada nuestra primer pantalla.

    Al seleccionar este archivo el ADT nos permite visualizar el contenido en "vista dediseo (Graphical Layout)":

  • 7/24/2019 Interfaces Alto Nivel Android

    6/32

    Si seleccionamos la otra pestaa podemos visualizar el archivo activity_main.xmlen formato de texto:

  • 7/24/2019 Interfaces Alto Nivel Android

    7/32

    El ADT ya insert un control de tipo RelativeLayout que permite ingresar controlesvisuales alineados a los bordes y a otros controles que haya en la ventana (msadelante analizaremos este layout).

    Ya veremos que podemos modificar todo este archivo para que se adapte a la

    aplicacin que queremos desarrollar.

    Luego contenido en el control RelativeLayout hay otro control de tipo TextView quees bsicamente una etiqueta o label que mostrar en pantalla el valor almacenadoen la propiedad text.

    Podemos modificar directamente el archivo xml o en "vista de diseo" modificar losvalores de las propiedades. Elegimos nuevamente la pestaa "Graphical Layout" yseleccionamos el TextView con el mouse y vemos que en la parte derecha de lapantalla aparece una ventana llamada "properties":

  • 7/24/2019 Interfaces Alto Nivel Android

    8/32

    Y estando seleccionado el TextView buscamos la propiedad Text y cargamos: "Miprimer programa para Android" y presionamos enter, podemos ver que seactualiza la vista:

    Con esto ya podemos probar nuestra primer aplicacin para un dispositivoAndroid. SELECCIONAMOS con el mouse en la ventana de la izquierda (Package

  • 7/24/2019 Interfaces Alto Nivel Android

    9/32

    Explorer) el proyecto001 y presionamos el cono de Run (tringulo verde) o desdeel men. Seleccionamos que se ejecute como aplicacin "Android Application".

    Ahora se abrir el AVD(Android Virtual Device) esto tarda bastante tiempo, es muyimportante recordar que luego de ver ejecutndose el programa NO debemoscerrar el AVD para que la prxima ejecucin se inicie ms rpido (podemos

    minimizar el AVD)Ahora podemos ver nuestra primer aplicacin corriendo en el emulador deAndroid:

    Actividades, Controles y Layouts

    La Actividad en una aplicacin Android es una clase java que contiene todo elcdigo necesario para llevar a cabo una determinada tarea. Si tomamos como

    ejemplo una aplicacin para leer email, podemos identificar fcilmente tareas que

    pueden ser tratadas como actividades:

    Descargar del servidor los nuevos mensajes recibidos

    Presentar la lista de mensajes existentes

    Leer un mensaje

    Responder a un mensaje

    Escribir un nuevo mensaje

  • 7/24/2019 Interfaces Alto Nivel Android

    10/32

    Normalmente, la realizacin de una actividad requiere algn tipo de interaccin

    con el usuario. Para conseguir esta interaccin, la actividad crea en la pantalla una

    serie de elementos grficos denominados genricamente controles como lo

    son: Las cajas de texto, botones, campos de formulario, imgenes, etc

    La disposicin de los controles sobre la pantalla est determinada por un

    conjuntos de Layouts. Layout es la denominacin genrica que se aplica tantoa Views como a ViewGroups, en donde:

    Un View es un conjunto de controles dispuestos de determinada manera.

    Un ViewGroup es un conjunto de Vistas dispuestas de determinada manera.

    Una aplicacin sencilla constar de una nica Actividad, y un nico Layout que

    contiene uno o varios Controles.

    Ejemplo de Actividad

    En el proyecto Hola que acabamos de crear, la Actividad est en el ficherosrc/com/javaya/Proyecto001/MainActivity.java y su contenido es el siguiente:

  • 7/24/2019 Interfaces Alto Nivel Android

    11/32

    Como vemos, la Actividad extiende la clase Activity, en la que se definen los

    mtodos por defecto para todos los eventos que pueden generarse.

    El programador debe realizar implementaciones especficas de estos mtodos

    mediante la keyword @Override. Normalmente, se implementan los mtodosonCreate y onCreateOptionsMenu. El mtodo onCreate simplemente realiza una

    llamada a setContentView para visualizar el layout activity_main.

    Ejemplo de Layout

    El layout activity_mainque utiliza la aplicacin se encuentra definido en el fichero

    res/layout/activity_main.xml, y su contenido es:

    Como vemos, se trata de un layout que ocupa toda la pantalla (el valor de with yheight es match_parent), y que slo contiene un elemento de tipo TextView.El

    elemento se inicializa en la lnea 11 con el valor literal @string/hello_world.

    Eventos del Botn

    Los eventos del botn en una aplicacin de Android deben ser activados desde la

    interfaz (xml) y realizar las operaciones respectivas de captura del tipo String yposteriormente parsear los datos para su operacin. En el siguiente ejemplo se

    muestra una aplicacin que permite sumar dos nmeros y ejecutar el mtodo

    escucha del botn para desplegar el resultado.

    La interfaz se va a disear de la siguiente forma:

    mailto:@Overridemailto:@Overridemailto:@stringmailto:@stringmailto:@stringmailto:@Override
  • 7/24/2019 Interfaces Alto Nivel Android

    12/32

    Desde la ventana "Palette" seleccionamos de la pestaa "Form Widgets" el control

    "TextView" y lo arrastramos a la ventana de diseo de nuestra interfaz:

    Ahora lo seleccionamos y en la ventana de propiedades especificamos la

    propiedad text y escribimos el texto "Ingrese el primer valor:"

  • 7/24/2019 Interfaces Alto Nivel Android

    13/32

    Tambin vamos a especificar la propiedad "Id", la misma aparece primera en la

    paleta de propiedades y le asignaremos el valor@+id/tv1 (el nombre es el que seindica luego de la barra es decir cambiamos textView1 por tv1) Cuidado de noborrar @+id/

    mailto:@+idmailto:@+idmailto:@+idmailto:@+id
  • 7/24/2019 Interfaces Alto Nivel Android

    14/32

    Hemos entonces asignado como nombre a este objeto: tv1 (recordemos que setrata de un objeto de la clase TextView)

    Ahora de la paleta de componentes seleccionamos la pestaa "Text Fields" yarrastramos el primero (el que tiene la etiqueta abc)

  • 7/24/2019 Interfaces Alto Nivel Android

    15/32

    En la ventana de properties estando seleccionado el EditText configuramos la

    propiedad Id... con el nombre et1 (este nombre haremos referencia posteriormentedesde Java)

    Efectuamos los mismos pasos para crear el segundo TextView y EditText(inicializamos las propiedades respectivas) Definimos los id con los nombres tv2 yet2, el resultado visual debe ser algo semejante a esto:

  • 7/24/2019 Interfaces Alto Nivel Android

    16/32

    De la pestaa "Form Widgets" arrastramos un control de tipo "Button":

  • 7/24/2019 Interfaces Alto Nivel Android

    17/32

    Inicializamos la propiedad text con el texto "Sumar" y la propiedad id la dejamoscon el valor ya creado llamado "button1".

    Para terminar con nuestra interfaz visual arrastramos un tercer objeto de tipoTextView y definimos la propiedad id con el valor "tv3" y la propiedad text con eltexto "resultado", recordemos que la interfaz final debe ser semejante a esta:

  • 7/24/2019 Interfaces Alto Nivel Android

    18/32

    Si en este momento ejecutamos la aplicacin aparece la interfaz visualcorrectamente pero cuando presionemos el botn no mostrar la suma.

    Es fundamental una vez finalizada la interfaz visual proceder a grabarla(icono de los diskettes) o la opcin File->Save para que se actualicen losarchivos que se generan automticamente.

    Hasta ahora hemos trabajado solo con el archivo xml (activity_main.xml) donde sedefinen los controles visuales de la ventana que estamos creando.

  • 7/24/2019 Interfaces Alto Nivel Android

    19/32

    Abrimos seguidamente el archivo MainActivity.java que lo podemos ubicar en lacarpeta src:

    Captura de eventos.

    Ahora viene la parte donde definimos variables en java donde almacenamos lasreferencias a los objetos definidos en el archivo XML.

    Definimos tres variables, dos de tipo EditText y finalmente una de tipo TextView(estas dos clases se declaran en el paquete android.widget, es necesario importardichas clases para poder definir las variables de dichas clases). Tambien se defineun metdo sumar para ejecutar las operaciones:

  • 7/24/2019 Interfaces Alto Nivel Android

    20/32

    Ahora debemos ir al archivo XML e inicializar la propiedad OnClick del objetobutton1 con el nombre del mtodo que acabamos de crear (este paso esfundamental para que el objeto de la clase Button pueda llamar al mtodo sumarque acabamos de crear):

  • 7/24/2019 Interfaces Alto Nivel Android

    21/32

    Finalmente implementamos la lgica para realizar la suma, quedando la clasecompleta de la siguiente forma:

  • 7/24/2019 Interfaces Alto Nivel Android

    22/32

    Si ejecutamos nuestro programa podemos ver ahora que luego de cargar dosvalores al presionar el botn aparece en el tercer TextView el resultado de la sumade los dos EditText:

  • 7/24/2019 Interfaces Alto Nivel Android

    23/32

    RadioGroup y RadioButton

    Para implementar una seleccin exclusiva en android, se debe implementar ungrupo de botones del tipo radio, y luego realizar las estructuras condicionales paravalidar los datos seleccionados.

  • 7/24/2019 Interfaces Alto Nivel Android

    24/32

    Ejemplo

    Pedir dos nmeros por teclado y con un RadioGroup seleccionar si quiere realizaruna suma o una resta

    Solucin:Inicialmente se debe agregar un elemento del tipo ButtonGroup (este control seencuentra en la paleta de componentes en la pestaa Form Widgets)

    Cuando arrastramos el control RadioGroup al formulario se generanautomticamente 3 objetos de la clase RadioButton contenidos dentro delRadioGroup, podemos fcilmente identificar que los controles RadioButtonpertenecen a dicho RadioGroup viendo la ventana de "Outline" del Eclipse (dondenos muestra todos los controles insertados hasta el momento):

  • 7/24/2019 Interfaces Alto Nivel Android

    25/32

    La implementacin de la actividad quedara de la siguiente forma:

  • 7/24/2019 Interfaces Alto Nivel Android

    26/32

    Checkbox en Android

    El checkbox permite la seleccin de uno o varios Items para ejecutar una accin del tipoactividad.

    Ejemplo:

  • 7/24/2019 Interfaces Alto Nivel Android

    27/32

    Control Spinner

    El control Spinner en una aplicacin Android muestra una lista de String y nos permiteseleccionar uno de ellos. Cuando se lo selecciona se abre y muestra todos sus elementospara permitir seleccionar el que se necesite

    Ejemplo

    Solicitar dos numero y por medio de un elemento de control tipo Spinner seleccionar siqueremos sumar, restar, multiplicar o dividir dichos valores. Finalmente mediante uncontrol de tipo Button efectuamos la operacin respectiva. Mostramos el resultado en unTextView.

  • 7/24/2019 Interfaces Alto Nivel Android

    28/32

  • 7/24/2019 Interfaces Alto Nivel Android

    29/32

    ListView

    El control ListView a diferencia del Spinner que se cierra luego de seleccionar unelemento permanecen visibles varios elementos (se lo utiliza cuando hay quemostrar muchos elementos)

    Si la lista no entra en el espacio que hemos fijado para el ListView nos permitehacer scroll de los mismos.El control ListView se encuentra en la pestaa"Compositive".

    Ejemplo:

    Disponer un ListView con los nombres de paises de sudamrica. Cuando seseleccione un pas mostrar en un TextView la cantidad de habitantes del passeleccionado.

  • 7/24/2019 Interfaces Alto Nivel Android

    30/32

  • 7/24/2019 Interfaces Alto Nivel Android

    31/32

    AlertDialog

    Los AlertDialog son ventanas que se muestran delante de las actividades, y puedenrecibir acciones del usuario. El dilogo de tipo alerta se crea a partir de una instanciade la clase AlertDialog y puede contener:

    un ttulo (icono + texto),

    un mensaje de texto,

    de 1 a 3 botones,

    una lista de Radiobuttons o Checkboxes,

    En el siguiente ejemplo se puede apreciar el uso de alertas con botones y textossimples (Toast. makeText).

    Inicialmente importamos la librera AlertDialog y definimos una instancia para crear unobjeto del tipo AlertDialog denominado dialogo 1.

    Luego implementamos el contenido del mensaje a desplegar en la alerta, y lasacciones de los botonos aceptar y cancelar al ser presionados.

  • 7/24/2019 Interfaces Alto Nivel Android

    32/32

    Al implementar las acciones de los botones aceptar y cancelar, se invocar en el metodoaceptar un elemento del tipo Toast.makeText que se encarga de imprimir una alerta de textobasica, al llamar al metodo cancelar se cierra la ventana por medio del metodo finish().