android uc3m sesión 2

47
www.solusoft.es Mecanismos de desarrollo en Android

Upload: topoos

Post on 28-Jul-2015

137 views

Category:

Technology


1 download

TRANSCRIPT

www.solusoft.es

Mecanismos de desarrollo en Android

www.solusoft.es

Indiceavanzandoenandroid

Tipos de AplicacionesControles elementalesControles avanzadosPreferenciasTrabajando en segundo planoLogsDemo Google PlayReferencia

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 frecuenciacontrolesbasicos

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

usados con frecuenciacontrolesavanzados

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

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

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

Menucontrolesavanzados

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

WebViewscontrolesavanzados

www.solusoft.es

Trabajando en segundo planosegundoplano

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

UIsegundoplano

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

Threadssegundoplano

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

Alarmssegundoplano

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

Broadcastsegundoplano

Declaración y permiso necesario

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

Servicessegundoplano

Permiso necesario

www.solusoft.es

Preguntas sin resolverdudaspendientes

www.solusoft.es

LOGs para depurardudaspendientes

Logcat Almacenamiento

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

Permiso necesario

www.solusoft.es

Llegando a los usuariosdemogoogleplay

www.solusoft.es

Es hora de probarcodetime

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