2. avanzandoenandroid
Indice
Tipos de Aplicaciones
Controles elementales
Controles avanzados
Preferencias
Trabajando en segundo plano
Logs
Demo Google Play
Referencia
www.solusoft.es
4. tiposdeapps
¿Dónde se desarrollan?
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
5. tiposdeapps
¿Dónde se desarrollan?
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
6. tiposdeapps
¿Dónde se desarrollan?
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
7. tiposdeapps
¿Dónde están los datos?
Aisladas
Conectadas
Sincronizadas
www.solusoft.es
8. tiposdeapps
¿Dónde están los datos?
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
9. tiposdeapps
¿Dónde están los datos?
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
10. tiposdeapps
¿Dónde están los datos?
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
13. controlesbasicos
usados con frecuencia
Ejemplo de uso
El botón estará deshabilitado
hasta que la caja de texto
tenga algo escrito.
onKey()
setEnabled
onClick()
getText
www.solusoft.es
15. controlesavanzados
ListView
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
17. controlesavanzados
ListView
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
19. controlesavanzados
ListView
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
20. controlesavanzados
ListView Adapter
public class ControladorLista extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lista);
// Obtenemos la lista de Libros
ArrayList<Libro> Libros = getItems();
// Entregamos la lista de Libros al adaptador de la lista
setListAdapter(new LibroAdapter(this, R.layout.lista_item, Libros));
}
www.solusoft.es
21. controlesavanzados
ListView Adapter
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;
}
@Override
public 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
22. controlesavanzados
ListView Adapter
Para ver este ejemplo en detalle…
http://blog.findemor.es/2011/02/como-programar-en-android-guia-3/
http://blog.findemor.es/2011/02/como-programar-en-android-guia-4/
www.solusoft.es
23. controlesavanzados
Menu
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
25. controlesavanzados
Preferencias
Preferencias
•Permiten almacenar
datos personales,
opciones, etc, de tipo
clave-valor.
•No debe sustituir el uso
de SQLite, ficheros, etc.
•Pueden definirse por
XML (DefaultShared) o
Runtime (Shared)
www.solusoft.es
26. controlesavanzados
Preferencias
Implementar la Activity…
Y para leerlas…
www.solusoft.es
27. controlesavanzados
WebViews
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
30. segundoplano
Trabajando en segundo plano
UI
Thread
Alarm
Broadcast
Service
www.solusoft.es
31. segundoplano
UI
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
33. segundoplano
Threads
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
35. segundoplano
Alarms
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
37. segundoplano
Broadcast
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
38. segundoplano
Broadcast
Declaración y permiso necesario
www.solusoft.es
39. segundoplano
Services
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
45. algunasreferencias
En caso de duda…
Estas diapositivas
http://bit.ly/soluAndroid2
Guías de uso del API
http://developer.android.com/guide
Entrenamiento y ejemplos
http://developer.android.com/training
Referencias API
http://developer.android.com/reference
Instalar el SDK
http://developer.android.com/tools/index.html
Repositorio DEMO
https://github.com/findemor/FormacionAndroidEjemplos
Guías en mi blog
http://blog.findemor.es/category/android/
www.solusoft.es
46. playtime
Es hora de jugar
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
47. contactme
En caso de duda consulte a su farmacéutico
Manuel J. García
Técnico de Innovación
en solusoft
mgarcia@solusoft.es
@findemor
Foro de Imagineware
http://foro.imagineware.info
www.solusoft.es