Android UC3M Sesión 2
-
Upload
topoos -
Category
Technology
-
view
138 -
download
1
Transcript of Android UC3M Sesión 2
www.solusoft.es
Indiceavanzandoenandroid
Tipos de AplicacionesControles elementalesControles avanzadosPreferenciasTrabajando en segundo planoLogsDemo Google PlayReferencia
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 frecuenciacontrolesbasicos
Controles de Entrada
Eventos relevantes:•onClick()•onLongClick()•onFocusChange()•onKey()•onTouch()
Métodos frecuentes:•getText /getValue•setText / setValue•setEnabled•setVisibility
www.solusoft.es
usados con frecuenciacontrolesbasicos
Ejemplo de uso
El botón estará deshabilitado hasta que la caja de texto tenga algo escrito.
onKey()setEnabled
onClick()getText
www.solusoft.es
ListViewcontrolesavanzados
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
ListViewcontrolesavanzados
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
ListViewcontrolesavanzados
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 Adaptercontrolesavanzados
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
ListView Adaptercontrolesavanzados
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
ListView Adaptercontrolesavanzados
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
Menucontrolesavanzados
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
Preferenciascontrolesavanzados
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
Preferenciascontrolesavanzados
Y para leerlas…
Implementar la Activity…
www.solusoft.es
WebViewscontrolesavanzados
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
Trabajando en segundo planosegundoplano
UI
Thread
Alarm
Broadcast
Service
www.solusoft.es
UIsegundoplano
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
Threadssegundoplano
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
Alarmssegundoplano
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
Broadcastsegundoplano
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
Servicessegundoplano
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
LOGs para depurardudaspendientes
Logcat Almacenamiento
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Permiso necesario
www.solusoft.es
En caso de duda…algunasreferencias
http://developer.android.com/guideGuí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.htmlInstalar el SDK
https://github.com/findemor/FormacionAndroidEjemplosRepositorio DEMO
http://bit.ly/soluAndroid2 Estas diapositivas
http://blog.findemor.es/category/android/Guías en mi blog
www.solusoft.es
Es hora de jugarplaytime
Tag V1
Ejercicio propuestoServicio 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éuticocontactme
Manuel J. García
Técnico de Innovación en solusoft
[email protected]@findemor
Foro de Imagineware
http://foro.imagineware.info