Curso android - Clase 2

28
Nivel I Desarrollo de Aplicaciones Móviles Facultad de Ciencia y Tecnología – Oro Verde - 2014 Facultad de Ciencia y Tecnología – Oro Verde - 2014

description

Curso android clase 2- Gugler

Transcript of Curso android - Clase 2

Page 1: Curso android - Clase 2

Nivel I

Desarrollo de Aplicaciones Móviles

Facultad de Ciencia y Tecnología – Oro Verde - 2014Facultad de Ciencia y Tecnología – Oro Verde - 2014

Page 2: Curso android - Clase 2

Android como Sistema Operativo Móvil

Elementos Básicos de una Aplicación

Historia y Evolución de Android

Aspectos a tener en Cuenta en el Desarrollo

Capítulo 1: Introducción al Mundo MóvilCapítulo 1: Introducción al Mundo Móvil

Page 3: Curso android - Clase 2

Clase 2: Android como Sistema Operativo MóvilClase 2: Android como Sistema Operativo Móvil

¿Qué es Android?● Es un conjunto de Software que contiene un Kernel basado en

Linux, una interfaz de usuario, aplicaciones y una API de desarrollo.

● Es un software de código abierto mantenido por Google y por la Open Handset Alliance de muy fácil adaptabilidad.

● Contiene muchas aplicaciones que podemos invocar, así como también una poderosa API de desarrollo.

● Se basa en el uso de una Máquina Virtual, DalvikVM creada por Dan Borenstein en conjunto con ingenieros de Google.

● Su idea principal es facilitar las tareas de desarrollo, ocultando complejidad y abstrayendo al desarrollador del hardware.

Page 4: Curso android - Clase 2

Clase 2: Android como Sistema Operativo MóvilClase 2: Android como Sistema Operativo Móvil

Arquitectura de Android

● Aplicaciones

● Framework de Aplicaciones

● Librerías

● Android Runtime.

● Kernel de Linux

Page 5: Curso android - Clase 2

Clase 2: Android como Sistema Operativo MóvilClase 2: Android como Sistema Operativo Móvil

Aplicaciones● Incluyen un cliente de correo electrónico, programa de SMS,

calendario, mapas, navegador, gps, entre otros.

● Todas las aplicaciones están desarrolladas en Java.

● Podemos invocarlas mediante mensajes o intentos.

● Toda aplicación tiene definidos usos y permisos.

● En este nivel se encuentran las aplicaciones que desarrollaremos.

Page 6: Curso android - Clase 2

Clase 2: Android como Sistema Operativo MóvilClase 2: Android como Sistema Operativo Móvil

Framework de Aplicaciones● Tenemos acceso completo a la API de desarrollo, usada por las

aplicaciones base.

● Está pensado y diseñado para simplificar el uso y reutilización de componentes.

● Permite a una aplicación enviar mensajes y compartir información o capacidades con otras.

● Permite que el desarrollador inclusive cree componentes o reutilice los existentes.

● Contiene herramientas para gestionar recursos, actividades, noticaciones y otras características del Sistema Operativo.

Page 7: Curso android - Clase 2

Clase 2: Android como Sistema Operativo MóvilClase 2: Android como Sistema Operativo Móvil

Librerías● Android incluye un conjunto de librerías escritas en C y C++

para trabajar con componentes del sistema.

● Utiliza una librería en C al igual que Linux para dialogar con el núcleo.

● Contiene librerías SQLite para almacenar y trabajar con información.

● Contiene OpenGL, una potente librería para desarrollo en 2D y 3D.

● La librería Webkit nos permite visualizar y navegar páginas Web.

Page 8: Curso android - Clase 2

Clase 2: Android como Sistema Operativo MóvilClase 2: Android como Sistema Operativo Móvil

Android Runtime● Se basa en el uso de una Máquina Virtual, DalvikVM creada por

Dan Borenstein en conjunto con ingenieros de Google.

● Esta máquina virtual ejecuta todas las aplicaciones no nativas de Android.

● A la hora de desarrollar nuestras aplicaciones (código fuente Java) son compiladas a un formato que es luego interpretado en cualquier otra plataforma android (archivos .dex) .

● El código binario de Dalvik no es compatible con el bytecoode de Java, sólo se utiliza Java como lenguaje de programación.

● En Android KitKat 4.4, se cambia DalvikVM se reemplaza por ART Runtime para una mejor performance y funcionamiento.

Page 9: Curso android - Clase 2

Clase 2: Android como Sistema Operativo MóvilClase 2: Android como Sistema Operativo Móvil

Kernel de Linux● Android utiliza el mismo kernel de Linux para su simplicidad.

● La idea de ésta arquitectura es la de permitir abstraer al desarrollador del hardware y de brindar seguridad.

● Justamente por ésto, el concepto de “rootear” un sistema Android consiste en tener acceso como root o administrador.

● El Kernel se encarga de todas las tareas de gestión de memoria y recursos.

Page 10: Curso android - Clase 2

Clase 2: Historia y Evolución de AndroidClase 2: Historia y Evolución de Android

Algo de Historia...● Google en primera medida financia el desarrollo de Android Inc, a quien luego

compra en 2005.

● El 5 de noviembre de 2.007 se forma la Open Handset Alliance, con compañías como Samsung, Broadcom, Motorola, Intel y LG (entre otros).

● En un principio el desarrollo de Android se continuaba dentro del Kernel de Linux, pero luego fue removido por motivos de licencias.

● Actualmente nos encontramos con una gran cantidad de versiones distintas disponibles.

Page 11: Curso android - Clase 2

Clase 2: Historia y Evolución de AndroidClase 2: Historia y Evolución de Android

Resumiendo

Page 12: Curso android - Clase 2

Clase 2: Historia y Evolución de AndroidClase 2: Historia y Evolución de Android

Versiones de Android● Cada versión recibe el nombre de un postre en Inglés.

● Comienzan a nomenclarse alfabéticamente.

● Con el pasar del tiempo existieron muchas versiones hasta un gran congelamiento de la versión 4.x.x

● La próxima versión Android 4.6 “Lime Pie” tiene fecha tentativa de junio / julio del corriente año.

Page 13: Curso android - Clase 2

Clase 2: Historia y Evolución de AndroidClase 2: Historia y Evolución de Android

Versiones de Android - Actualidad

Page 14: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Estructura de una Aplicación Android

Librerías o dependencias Android

Código Fuente en Java

Código Generado AutomáticamenteArchivos adicionales

Aplicación empaquetadaLibrerías

Archivos XML

Icono de “Launcher” y Archivos de Configuración

Page 15: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Estructura de una Aplicación Android

● Directorio /res Directorio Principal de recursos

/res/drawable-?dpi Directorio de imágenes o recursos gráficos

/res/layout Archivos XML que definen las vistas de la aplicación

/res/values Archivos XML para almacenar cadenas de texto

● Archivo AndroidManifest.xml Define todas las propiedas de la aplicación

Page 16: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Activity (Actividad)● Componente principal de una Aplicación Android, representan clases que permiten

funcionar como controlador en una aplicación MVC.

● Una aplicación Android está formada por varias actividades, una de ellas es la marcada como “Main” o “Principal”.

● Una actividad puede llamar a otra, esperando o no su respuesta. Al realizar ésta tarea, la actividad origen se detiene.

● Las actividades se gestionan en un formato de pila, las aplicaciones colocan o eliminan elementos de la pila según se necesite.

Page 17: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Activity (Actividad) - Definición● Para crear una actividad deberemos realizar los siguientes pasos:

1. Crear una clase que extienda de Activity:

public class MainActivity extends Activity

2. Añadir la actividad en el archivo AndroidManifest.xml :

<activity android:name="com.example.holamundo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

Page 18: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Activity (Actividad) - Comunicación● Una actividad puede llamar a otra de dos formas:

1. Método Fire and Forget: en éste caso se crea una nueva actividad, pero la actividad creadora continúa su ejecución. La actividad secundaria toma el foco, para realizar ésta tarea se llama al método startActivity.

// Creamos un intento especificando actividad origen y destinoIntent intento = new Intent(this, Actividad2.class);

// Ejecutamos la actividadstartActivity(intento);

Actividad1 Actividad2startActivity()

Page 19: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Activity (Actividad) - Comunicación● Una actividad puede llamar a otra de dos formas:

2. Método Async Callback: en este caso se crea la segunda actividad y cuando la misma finalice invocará un método onActivityResult de la actividad principal. El código de acción de retorno debe ser mayor a 0retorno debe ser mayor a 0.

// Creamos un intento especificando actividad origen y destinoIntent intento = new Intent(this, Actividad2.class);

// Ejecutamos la actividad y especificamos que resultado queremosstartActivityForResult(intento, 1);

// Establecemos el resultado y terminamosIntent intento = new Intent(this,MainActivity.class);

setResult(1, intento);

finish();

Actividad 1

Actividad 2

Page 20: Curso android - Clase 2

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {

// Ejecutamos alguna acción en base al resultadoif (resultCode == 1) {

volver = true;}super.onActivityResult(requestCode, resultCode, data);

}

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Activity (Actividad) - Comunicación● Una actividad puede llamar a otra de dos formas:

2. Método Async Callback: en este caso se crea la segunda actividad y cuando la misma finalice invocará un método de retorno onActivityResult de la actividad principal.

Actividad 1

Actividad1 Actividad2

startActivityforResult()

finish()

onActivityResult

Page 21: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Activity (Actividad) – Ciclo de Vida● Una actividad pasa por N estados durante su ciclo de vida.

● Si deseamos ejecutar alguna acción podemos sobreescribir métodos de nuestra

actividad padre, tales como onCreate(), onStart(), onResume(), onDestroy() u otros.

Page 22: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Activity (Actividad) – Ciclo de Vida● Algunos métodos útiles a sobreescribir:

protected void onCreate(Bundle savedInstanceState)

protected void onResume()

public void onBackPressed()

protected void onDestroy()

protected void onStart()

protected void onPause()

protected void onStop()

Cuando se crea la actividad

Cuando la actividad vuelve a primer plano

Cuando se presiona el botón de volver

Cuando se destruye la actividad

Cuando se inicia la actividad

Cuando se oculta parcialmente la actividad

Cuando la actividad pasa a segundo plano

Page 23: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Intent (Intento)● Es el elemento básico de comunicación entre distintos componentes en Android.

● Son considerados como “mensajes” o “peticiones” que pueden enviarse entre distintos componentes de una aplicación o entre distintas aplicaciones.

● Es una descripción abstracta de una operación que se va a llevar a cabo.

● Permiten invocar actividades e inclusive pasar información entre las mismas.

Page 24: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Comunicando Actividades mediante Intentos● Como vimos anteriormente podemos comunicar actividades mediante intentos:

// Creamos un intento especificando actividad origen y destinoIntent intento = new Intent(this, Actividad2.class);

// Ejecutamos la actividadstartActivity(intento);

● Pero también podemos pasar información mediante un objeto de tipo Bundle// Creamos un intento especificando actividad origen y desitnoIntent intento = new Intent(this, Actividad2.class);

//Creamos un objeto Bundle para poder llenar con informacionBundle recurso = new Bundle();

//Cargamos el recurso con informacionrecurso.putLong("numero", 5l);recurso.putString("cadena", "Esto es una cadena");

//Cargamos el recurso en el intentointento.putExtras(recurso);

// Ejecutamos la actividad y especificamos que resultado queremosstartActivity(intento);

Actividad 1

● Como vimos anteriormente podemos comunicar actividades mediante intentos:

Page 25: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Comunicando Actividades mediante Intentos

Actividad 2

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_actividad2);

//Accedemos al intento que nos invocó, y luego a su BundleBundle recurso = getIntent().getExtras();

//Obtenemos el contenidoLong numero = recurso.getLong("numero");

String cadena = recurso.getString("cadena");

}

● Para recuperar el objeto de recurso accedemos al método getIntent(), el cual nos devuelve cual fue el intento que invocó a la actividad actual.

Page 26: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Intentos y Criterios● Podemos asociar a un intento con una acción, datos y una categoría.

● Cada actividad puede declarar que tipo de acciones pueden llevar a cabo y que datos

pueden gestionar.

● Las acciones son cadenas de texto que describen lo que una actividad puede hacer.

● También pueden definirse categorías, en donde se configura desde donde puede lanzarse la actividad.

<intent-filter> <action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" /></intent-filter>

AndroidManifest.xml

Page 27: Curso android - Clase 2

Clase 2: Elementos Básicos de una AplicaciónClase 2: Elementos Básicos de una Aplicación

Intentos y Criterios● Esto permite que al llamar a una actividad podemos no especificar a cual, sino definir

el criterio sobre el cual se va a invocar.

● En éste caso Android se encarga de determinar a que actividad va a invocar en base a el criterio definido y automáticamente le pasa datos en el formato que especificamos.

public void mandarMail(View view) {

Intent emailIntent = new Intent(Intent.ACTION_SEND);

emailIntent.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"});

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Asunto del mail");

emailIntent.putExtra(Intent.EXTRA_TEXT , "Cuerpo del mail");

startActivity(Intent.createChooser(emailIntent, "Enviar mail..."));

}

Page 28: Curso android - Clase 2

¿Dudas? ¿Consultas?

Información de contacto

http://campusvirtual.gugler.com.ar

[email protected]

[email protected]

[email protected]

Web:

Mail:

Versión 1.0

http://www.facebook.com/gugler.com.ar

http://www.twitter.com/cgugler

http://campusvirtual.gugler.com.ar

http://www.gugler.com.ar