Curso Android - 04 Leccion - Teoria

6
Experiencia y Conocimiento para tu Vida Curso de Android con Java © Todos los Derechos Reservados Global Mentoring 1

description

Curso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - TeoriaCurso Android - 04 Leccion - Teoriav

Transcript of Curso Android - 04 Leccion - Teoria

Page 1: Curso Android - 04 Leccion - Teoria

Experiencia y Conocimiento para tu Vida

Curso de Android con Java

© Todos los Derechos Reservados Global Mentoring 1

Page 2: Curso Android - 04 Leccion - Teoria

Experiencia y Conocimiento para tu Vida

En esta lección estudiaremos el tema de Intents, probablemente es el tema más importante a estudiar enAndroid. Los Intents son el mecanismo para enviar mensajes entre actividades o aplicaciones.

Con los Intents podemos iniciar de manera explícita un Servicio o una Actividad en particular, simplementeutilizando el nombre de la clase que deseamos iniciar. Además, podemos generar eventos a nivel delsistema (broadcast) y así notificar que un evento ha ocurrido.

Podemos utilizar los Intents para soportar la interacción entre aplicaciones, por ejemplo, si nuestraaplicación necesita utilizar la aplicación que captura una fotografía, no es necesario que nosotros creemosesta aplicación, sino simplemente utilizaremos un Intent con el objetivo de solicitar el inicio de la capturade la fotografía, y una vez concluida, recibiremos de vuelta la fotografía capturada.

Existen 2 tipos de Intents:

Intents Explícitos: Este tipo de Intents especifica cuál es la actividad o servicio que deseamos iniciar,indicando el nombre de la clase Java.

Intents Implícitos: Este tipo de Intents no indica una actividad o servicio en particular a iniciar, sino quese configura de manera que pueda responder a una acción o a cierta información generada por elsistema.

También es posible utilizar broadcasts Intents con el objetivo de notificar cambios a nivel del sistema. Lasaplicaciones también pueden registrar broadcast receivers para responder o escuchar a eventos debroadcasts Intents generados por el sistema.

Los tipos de avisas son cambios en la contectividad a Internet (ej. Pérdida de la conexión), niveles bajos debatería, etc. Las aplicaciones nativas como la de llamadas de teléfono, registran componentes que estánescuchando si hay una llamada entrante, un SMS recibido, o un Email a enviar, y responden de acuerdo alevento generado. Como resultado, podemos reemplazar muchas de las aplicaciones nativas registrandoBroadcast Receivers propios o de terceros que escuchan y esperan los mismos eventos generados.

El uso de Intents, incluso dentro de la misma aplicación, promueve el bajo acoplamiento de componentes,y así podemos reemplazar los elementos de una aplicación con el menor impacto posible. De igual maneraprovee las bases de un modelo simple, pero poderoso para extender la funcionalidad de una aplicación.

Curso de Android con Java

© Todos los Derechos Reservados Global Mentoring 2

Page 3: Curso Android - 04 Leccion - Teoria

Experiencia y Conocimiento para tu Vida

El uso más común de los Intents es enlazar componentes de una aplicación y establecer una comunicaciónentre ellos.

Como podemos observar en la figura, si estamos dentro de la aplicación de Email, y seleccionamos alguno,nos llevará al detalle del mismo; esto ya utiliza un Intent para cambiar entre actividades de la mismaaplicación. Posteriormente, en el detalle del email, nos envía hacia una página Web, para ello, se solicita laaplicación del Navegador Web o cualquiera que despliegue información Web, y así visualizar el contenidodel link. Esto implica utilizar otro Intent, el cual abre una actividad fuera de nuestra aplicación.

Finalmente, de manera similar, solicitamos un video que se visualiza en nuestro navegador Web, para elloutilizamos otro Intent que procesará y mostrará el video. Dependiendo de las aplicaciones que puedanprocesar video, serán las opciones que se mostrarán. En el caso de la figura se mostrará la aplicación deYouTube, y así se desplegará finalmente una actividad donde se visualizará el video.

Para iniciar de manera explícita un Intent, basta con utilizar el siguiente código:

Intent intent = new Intent(MiActividad.this, MiOtraActividad.class);startActivity( intent );

En la primera línea de código, estamos creando un Intent de manera explicita, ya que estamos indicandocual es la actividad que queremos abrir. Como primer parámetro especificamos el contexto actual, es decir,la actividad en la que estamos trabajando, por ello utilizamos MiActividad.this. El segundo parámetro es laactividad que queremos iniciar, para ello proporcionamos el nombre de la clase Java respectiva.

El método startActivity() recibe la intención a ejecutar, la cual inicia la actividad proporcionada llamadaMiOtraActividad.class. Si queremos recibir una notificación al terminar de ejecutarse MiOtraActividad, esnecesario utilizar el método startActivityForResult(). Este método lo estudiaremos a más detalleposteriormente.

Recordemos que cada actividad debe estar registrada en el archivo AndroidManifest.xml para poder serutilizada por un Intent. Si no hemos registrado nuestra actividad en el archivo de manifiesto no se mostraráy marcará errores.

Curso de Android con Java

© Todos los Derechos Reservados Global Mentoring 3

Page 4: Curso Android - 04 Leccion - Teoria

Experiencia y Conocimiento para tu Vida

Cuando creamos un Intent, es posible registrar de manera anónima cual será el Intent que procesará unaacción o una petición. A esto se les conoce como Intents Implícitos. Esto significa que podemos pedirle alsistema que comience una nueva Actividad para ejecutar una acción, sin conocer qué aplicación o actividad seiniciará.

Por ejemplo, si tenemos una aplicación en la que deseamos capturar una fotografía, no hay necesidad dedesarrollar nuestra propia aplicación con esta funcionalidad, sino podemos registrar un Intent, y así indicar alsistema que deseamos utilizar alguna aplicación disponible que procese dicha acción. Por ejemplo:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent,0);

En la primera línea, registramos un Intent, en el cual indicamos una acción de captura de imagen. De tal manera que cuando iniciemos este Intent, se abrirá una aplicación y una actividad que procese la captura de imágenes.

En la segunda línea, usamos el método startActivityForResult con el cual indicamos que estamos esperando una respuesta una vez que haya terminado el Intent. Para procesar el resultado, una vez capturada la foto, debemos sobreescribir el método onActivityResult() y así procesar el resultado. Dentro de este método, recibimos el resultado del Intent, y podemos recuperar la imagen capturada. Por ejemplo:

Bitmap imagenCapturada = (Bitmap) intent.getExtras().get("data");

Con la referencia del Intent de regreso, utilizamos el método getExtras() para solicitar el dato procesado, en este caso la fotografía tomada. Si queremos enviar información al Intent desde nuestra aplicación, podemos utilizar el método putExtras(). El concepto de Extras son el mecanismo en que podemos enviar y recibir información entre Intents. Para recuperar todos los extras, podemos utilizar el método getExtras().

El manejo de Intents Implícitos es una de las características más importantes de Android, ya que es posible tanto enviar información entre distintas Actividades/Aplicaciones y también recibir y procesar información como resultado de ejecutar otra Actividad/Aplicación.

Por último, es posible crear nuestros propios Intents Implícitos y así crear una aplicación de captura de Fotos propia, ofreciendo otra opción al usuario, o incluso sustituir por completo alguna aplicación nativa de Android. En los ejercicios pondremos en práctica tanto Intents Explícitos, como Intents Implícitos.

Curso de Android con Java

© Todos los Derechos Reservados Global Mentoring 4

Page 5: Curso Android - 04 Leccion - Teoria

Experiencia y Conocimiento para tu Vida

Curso de Android con Java

© Todos los Derechos Reservados Global Mentoring 5

Page 6: Curso Android - 04 Leccion - Teoria

Experiencia y Conocimiento para tu Vida

En Global Mentoring promovemos la Pasión por la Tecnología Java.

Te invitamos a visitar nuestro sitio Web donde encontrarás cursos Java Online desde Niveles Básicos,Intermedios y Avanzados.

Además agregamos nuevos cursos para que continúes con tu preparación como consultor Java de maneraprofesional.

A continuación te presentamos nuestro listado de cursos en constante crecimiento:

Fundamentos de Java

Programación con Java

Java con JDBC

HTML, CSS y JavaScript

Servlets y JSP’s

Struts Framework

Hibernate Framework

Spring Framework

JavaServer Faces

Java EE (EJB, JPA y Web Services)

JBoss Administration

Android con Java

Datos de Contacto:

Sitio Web: www.globalmentoring.com.mx

Email: [email protected]

Ayuda en Vivo: www.globalmentoring.com.mx/chat.html

6Todos los Derechos Reservados Global Mentoring

Curso de Android con Java