introducción al desarrollo android, sesión 2

47
www.solusoft.es Mecanismos de desarrollo en Android

Upload: findemor

Post on 03-Jul-2015

438 views

Category:

Technology


0 download

DESCRIPTION

Slides para la segunda sesión de formación en plataformas móviles (Android) en UC3M

TRANSCRIPT

Page 1: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Mecanismos de desarrollo en Android

Page 2: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Indice

avanzandoenandroid

Tipos de Aplicaciones

Controles elementales

Controles avanzados

Preferencias

Trabajando en segundo plano

Logs

Demo Google Play

Referencia

Page 3: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde se desarrollan?

tiposdeapps

Web

Nativas

Híbridas

Page 4: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde se desarrollan?

tiposdeapps

Aplicaciones Nativas

•Pensadas para ejecutarse en una

plataforma específica.

•En Android se desarrollan en Java.

•Se ejecutan de forma eficiente.

•Pueden acceder a todos los

servicios y sensores del dispositivo.

•La aplicación se compila y

distribuye (son muy visibles).

•No requiere conexión a internet.

Page 5: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde se desarrollan?

tiposdeapps

Aplicaciones Web Móviles

•Se ejecutan dentro del navegador.

•Son Multiplataforma y reutilizables.

•HTML(5), CSS y Javascript.

•No requieren aprobación.

•El mantenimiento es responsabilidad

nuestra.

•No son eficientes.

•El acceso a recursos del teléfono es

limitado.

•No se distribuyen en el market.

Page 6: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde se desarrollan?

tiposdeapps

Aplicaciones Híbridas

•Una parte de la aplicación es

específica de la plataforma, otra es

multiplataforma y reutilizable.

•El desarrollo es algo más

complicado.

•La comunicación con los recursos

del teléfono se realiza mediante

comunicadores.

•No son especialmente eficientes.

•Se distribuyen en el market.

Page 7: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde están los datos?

tiposdeapps

Aisladas

Conectadas

Sincronizadas

Page 8: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde están los datos?

tiposdeapps

Aplicaciones Aisladas

•Los datos y el procesamiento se

encuentran en el dispositivo.

•No requiere conexión a internet.

•El mantenimiento se centraliza.

•Es más fácil de distribuir.

•La comunicación entre dispositivos

no es posible.

•Padece un alto grado de

fragmentación.

•Es muy difícil migrar a otras

plataformas.

Page 9: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde están los datos?

tiposdeapps

Aplicaciones Conectadas

•Los datos y el procesamiento se

alojan en un servicio web.

•Requiere conexión a internet

constante.

•El mantenimiento no es centralizado.

•Su distribución es más compleja.

•Permite comunicación entre

dispositivos.

•Padece un grado medio de

fragmentación.

•Se facilita migrar a otras

plataformas.

Page 10: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

¿Dónde están los datos?

tiposdeapps

Aplicaciones Sincronizadas

•Los datos y el procesamiento se

alojan en la web y parte en el

dispositivo.

•Permite su uso sin conexión a

internet.

•Su implementación es más

complicada.

•Los datos no están siempre

actualizados.

•Ventajas y desventajas de ambos

tipos.

Page 11: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

usados con frecuencia

controlesbasicos

Page 12: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

usados con frecuencia

controlesbasicos

Controles de Entrada

Eventos relevantes:

•onClick()

•onLongClick()

•onFocusChange()

•onKey()

•onTouch()

Métodos frecuentes:

•getText /getValue

•setText / setValue

•setEnabled

•setVisibility

Page 13: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

usados con frecuencia

controlesbasicos

Ejemplo de uso

El botón estará deshabilitado

hasta que la caja de texto

tenga algo escrito.onKey()

setEnabled

onClick()

getText

Page 14: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

usados con frecuencia

controlesavanzados

Page 15: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView

controlesavanzados

ListView

•Muestra una lista

desplazable de

elementos.

•Por defecto serán titulo

y descripción.

•Se rellenan utilizando

un Adapter que inyecta

contenidos.

•Admiten mucha

personalización.

Page 16: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView

controlesavanzados

Page 17: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView

controlesavanzados

Elementos personalizados

•Es frecuente definir el

layout de los

elementos individuales

que se muestran en la

lista.

•Basta con generar un

layout para el elemento y

especificar como se

rellena en el Adapter

correspondiente.

Page 18: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView

controlesavanzados

Page 19: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView

controlesavanzados

Actividad y Adaptador

•La actividad que

controla la lista debería

extender la clase

ListActivity

•Para representar items

con layouts complejos

hay que implementar un

CustomAdaptater que

controlará como se

muestra cada elemento

Page 20: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView Adapter

controlesavanzados

public class ControladorLista extends ListActivity {

/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.lista);

// Obtenemos la lista de LibrosArrayList<Libro> Libros = getItems();// Entregamos la lista de Libros al adaptador de la listasetListAdapter(new LibroAdapter(this, R.layout.lista_item, Libros));

}

Page 21: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView Adapter

controlesavanzados

private class LibroAdapter extends ArrayAdapter<Libro> {

private ArrayList<Libro> items;

public LibroAdapter(Context context, int textViewResourceId, ArrayList<Libro> items) {super(context, textViewResourceId, items);this.items = items;

}

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {

View v = convertView;if (v == null) {

LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

v = vi.inflate(R.layout.lista_item, null);}Libro libro = items.get(position);if (libro != null) {

TextView ttitulo = (TextView) v.findViewById(R.id.titulo);TextView tautor = (TextView) v.findViewById(R.id.autor);if (ttitulo != null) {

ttitulo.setText(libro.getTitulo());}if (tautor != null) {

tautor.setText(libro.getAutor());}

}return v;

}}

Page 22: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

ListView Adapter

controlesavanzados

http://blog.findemor.es/2011/02/como-programar-en-android-guia-4/

http://blog.findemor.es/2011/02/como-programar-en-android-guia-3/

Para ver este ejemplo en detalle…

Page 23: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Menu

controlesavanzados

Menú de aplicación

•Aparecen en la zona

inferior al pulsar el

botón de menú

•Pueden definirse por

XML o Runtime

•Es posible agrupar

opciones, establecer

iconos, etc.

•Recomendado para

opciones secundarias

Page 24: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Menu

controlesavanzados

Page 25: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Preferencias

controlesavanzados

Preferencias

•Permiten almacenar

datos

personales, opciones, et

c, de tipo clave-valor.

•No debe sustituir el uso

de SQLite, ficheros, etc.

•Pueden definirse por

XML (DefaultShared) o

Runtime (Shared)

Page 26: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Preferencias

controlesavanzados

Y para leerlas…

Implementar la Activity…

Page 27: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

WebViews

controlesavanzados

WebView

•Permiten navegar

•Permiten implementar

aplicaciones Web o

Híbridas

•Pueden manejarse

redirecciones, etc.

•Admite mucha

configuración

•Es muy costoso en

rendimiento

Page 28: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

WebViews

controlesavanzados

Page 29: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Trabajando en segundo plano

segundoplano

Page 30: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Trabajando en segundo plano

segundoplano

UI

Thread

Alarm

Broadcast

Service

Page 31: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

UI

segundoplano

UI thread – Main thread

•Es el hilo principal de la app.

•Lo crea el sistema cuando se

ejecuta la aplicación.

•Ejecuta la parte gráfica.

•Nunca debe bloquearse con

operaciones no instantáneas.

•Accede a Android UI toolkit

Page 32: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

UI

segundoplano

Page 33: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Threads

segundoplano

Worker threads - AsyncTasks

•Hilos secundarios y tareas

asíncronas.

•Lo crea el hilo principal cuando

necesita realizar tareas no

instantáneas.

•Ningún hilo secundario debe

acceder a la Android UI toolkit.

•Podemos bloquear la interfaz

usando un

Page 34: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Threads

segundoplano

Page 35: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Alarms

segundoplano

AlarmManager

•Es un hilo secundario.

•La aplicación configura y registra

su disparador en el

AlarmManager.

•Permite programar tareas en el

futuro o ejecutar aplicaciones.

•Se mantiene si el sistema entra

en reposo.

•Se eliminan si el sistema se

apaga o reinicia.

•¡Es más eficiente que un Worker

Thread!.

Page 36: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Alarms

segundoplano

Page 37: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Broadcast

segundoplano

BroadcastReceiver

•Es un hilo secundario.

•El sistema los ejecuta cuando se

genera un mensaje Broadcast.

•Permite detectar eventos del

sistema y desencadenar tareas.

•La aplicación también puede

emitir mensajes Broadcast.

•LocalBroadcastManager es más

eficiente y seguro, pero es de

ámbito local.

Page 38: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Broadcast

segundoplano

Declaración y permiso necesario

Page 39: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Services

segundoplano

Services

•Es una aplicación en sí mismo,

sin interfaz de usuario.

•Los ejecuta algún componente

(como una actividad) llamando a

startService().

•Se ejecuta indefinidamente.

•Admite Bound de otros

componentes para ofrecer una

interfaz cliente-servidor.

•Puede generar hilos a su vez.

•Al tratarse de un componente:

deben declararse en el Manifest.

Page 40: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Services

segundoplano

Permiso necesario

Page 41: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Preguntas sin resolver

dudaspendientes

Page 42: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

LOGs para depurar

dudaspendientes

Logcat Almacenamiento

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

Permiso necesario

Page 43: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Llegando a los usuarios

demogoogleplay

Page 44: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Es hora de probar

codetime

Page 45: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

En caso de duda…

algunasreferencias

http://developer.android.com/guide

Guías de uso del API

Entrenamiento y ejemplos

http://developer.android.com/trainingReferencias API

http://developer.android.com/reference

http://developer.android.com/tools/index.html

Instalar el SDK

https://github.com/findemor/FormacionAndroidEjemplosRepositorio DEMO

http://bit.ly/soluAndroid2Estas diapositivas

http://blog.findemor.es/category/android/Guías en mi blog

Page 46: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Es hora de jugar

playtime

Tag V1 Ejercicio propuesto

Servicio en segundo plano que almacena posiciones, que serán mostradas en una lista y se verán en un mapa al seleccionar una.

Fecha corrección: 30/11/2012

Page 47: Introducción al desarrollo Android, Sesión 2

www.solusoft.es

En caso de duda consulte a su farmacéutico

contactme

Manuel J. García

Técnico de Innovación

en solusoft

[email protected]

@findemor

Foro de Imagineware

http://foro.imagineware.info