Introducción al desarrollo Android, Sesión 2
-
Upload
findemor -
Category
Technology
-
view
441 -
download
0
description
Transcript of Introducción al desarrollo Android, Sesión 2
![Page 2: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/2.jpg)
www.solusoft.es
Indice
avanzandoenandroid
Tipos de Aplicaciones
Controles elementales
Controles avanzados
Preferencias
Trabajando en segundo plano
Logs
Demo Google Play
Referencia
![Page 4: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/4.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/7.jpg)
www.solusoft.es
¿Dónde están los datos?
tiposdeapps
Aisladas
Conectadas
Sincronizadas
![Page 8: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/8.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/10.jpg)
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 12: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/13.jpg)
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 15: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/15.jpg)
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 17: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/17.jpg)
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 19: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/19.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/20.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/21.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/22.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/23.jpg)
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 25: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/25.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/26.jpg)
www.solusoft.es
Preferencias
controlesavanzados
Y para leerlas…
Implementar la Activity…
![Page 27: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/27.jpg)
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 30: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/30.jpg)
www.solusoft.es
Trabajando en segundo plano
segundoplano
UI
Thread
Alarm
Broadcast
Service
![Page 31: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/31.jpg)
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 33: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/33.jpg)
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 35: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/35.jpg)
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 37: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/37.jpg)
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 39: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/39.jpg)
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 42: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/42.jpg)
www.solusoft.es
LOGs para depurar
dudaspendientes
Logcat Almacenamiento
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Permiso necesario
![Page 45: Introducción al desarrollo Android, Sesión 2](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/45.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/46.jpg)
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](https://reader035.fdocuments.co/reader035/viewer/2022062220/5595a0d91a28ab14448b46c3/html5/thumbnails/47.jpg)
www.solusoft.es
En caso de duda consulte a su farmacéutico
contactme
Manuel J. García
Técnico de Innovación
en solusoft
@findemor
Foro de Imagineware
http://foro.imagineware.info