Introducción al desarrollo Android, Sesión 2

Post on 03-Jul-2015

439 views 0 download

description

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

Transcript of Introducción al desarrollo Android, Sesión 2

www.solusoft.es

Mecanismos de desarrollo en Android

www.solusoft.es

Indice

avanzandoenandroid

Tipos de Aplicaciones

Controles elementales

Controles avanzados

Preferencias

Trabajando en segundo plano

Logs

Demo Google Play

Referencia

www.solusoft.es

¿Dónde se desarrollan?

tiposdeapps

Web

Nativas

Híbridas

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.

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.

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.

www.solusoft.es

¿Dónde están los datos?

tiposdeapps

Aisladas

Conectadas

Sincronizadas

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.

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.

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.

www.solusoft.es

usados con frecuencia

controlesbasicos

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

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

www.solusoft.es

usados con frecuencia

controlesavanzados

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.

www.solusoft.es

ListView

controlesavanzados

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.

www.solusoft.es

ListView

controlesavanzados

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

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));

}

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;

}}

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…

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

www.solusoft.es

Menu

controlesavanzados

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)

www.solusoft.es

Preferencias

controlesavanzados

Y para leerlas…

Implementar la Activity…

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

www.solusoft.es

WebViews

controlesavanzados

www.solusoft.es

Trabajando en segundo plano

segundoplano

www.solusoft.es

Trabajando en segundo plano

segundoplano

UI

Thread

Alarm

Broadcast

Service

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

www.solusoft.es

UI

segundoplano

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

www.solusoft.es

Threads

segundoplano

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!.

www.solusoft.es

Alarms

segundoplano

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.

www.solusoft.es

Broadcast

segundoplano

Declaración y permiso necesario

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.

www.solusoft.es

Services

segundoplano

Permiso necesario

www.solusoft.es

Preguntas sin resolver

dudaspendientes

www.solusoft.es

LOGs para depurar

dudaspendientes

Logcat Almacenamiento

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

Permiso necesario

www.solusoft.es

Llegando a los usuarios

demogoogleplay

www.solusoft.es

Es hora de probar

codetime

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

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

www.solusoft.es

En caso de duda consulte a su farmacéutico

contactme

Manuel J. García

Técnico de Innovación

en solusoft

mgarcia@solusoft.es

@findemor

Foro de Imagineware

http://foro.imagineware.info