Análisis y Diseño      de SoftwareTema 4.4Intenciones y ServiciosPreferencias e Intenciones       Carlos A. Iglesias <cif@...
LeyendaTeoríaEjercicio práctico en el ordenadorAmpliación de conocimientosLectura / Vídeo / PodcastPráctica libre / Experi...
Temario●   4.1 Introducción a Android [Gar10, cap1-2 ]●   4.2 Desarrollo con Android [Gar10, cap3-5]●   4.3 Interfaces de ...
Bibliografía●   Libro de texto:    – [Gar10] Learning Android, Marko Gargenta,        OReilly, 2010, Cap 7-8. Disponible e...
Objetivos● Aprender a hacer aplicaciones que tienen configuración de los usuarios● Aprender a hacer aplicaciones con más d...
Motivación● En nuestra práctica, tenemos que hardcodear” / poner a fuego el usuario y la contraseña● Sería deseable que si...
Preferencias● Laspreferencias permiten que el usuario pueda dar valor a propiedades● Son   pares clave-valor, con tipos bá...
Recurso prefs.xml●   Proyecto o fichero New->Android XML File                         Intenciones y Servicios   8
Prefs.xml (II)●   Añadimos elementos                         Intenciones y Servicios   9
Prefs.xml (III)        Intenciones y Servicios   10
Prefs (IV)Nombre variable   Texto para el usuario                  Ayuda para                  que lo rellene             ...
Prefx.xml – Vista xmlAdemás de EditTextPreference (un valor), podemos ponerCheckBoxPreference (escoger un valor de varios)...
Actividad PrefsActivity                   En vez de setContentView()            Intenciones y Servicios             13
Actualizamos Manifiesto            Intenciones y Servicios   14
Versión actual deres/values/strings.xml            Intenciones y Servicios   15
Activando la Actividad con un          menú (I)●   Creamos un recurso menu.xml                       Intenciones y Servici...
Menú Android (II)         Intenciones y Servicios   17
Menú Android (III)          Intenciones y Servicios   18
Menú Android (IV)        Aquí sí completa icono          Intenciones y Servicios   19
Recursos del Sistema en              Android● Elicono lo hemos tomado de @android:drawable/ic_menu_preferences● Android no...
Lanzando el menú● La actividad debe crear el menú a partir de menu.xml● El proceso es  –   Cuando el usuario pinche en men...
StatusActivity                         Crea un objeto Java                            para insuflar                       ...
Lanzando la aplicación (I)              Intenciones y Servicios   23
Lanzando la aplicación (II)              Intenciones y Servicios   24
SharedPreferences● Para acceder a las preferencias desde Java, se utiliza la clase SharedPreferences● Debemos    –   Decla...
StatusActivity (I)(versión actual)          Intenciones y Servicios   26
StatusActivity (II)          Intenciones y Servicios   27
StatusActivity (III)           Intenciones y Servicios   28
StatusActivity (IV)          Intenciones y Servicios   29
StatusActivity (V)                                                      Propiedad y Valor por                             ...
StatusActivity (VI)                            Cambiamos twitter                             por getTwitter()          Int...
El sistema de ficheros●    Podemos navegar por el sistema de    ficheros del dispositivo: Open Perspective    → DDMS → Fil...
Sistema de ficheros          Intenciones y Servicios   33
Particiones del sistema de               ficheros● Haytres particiones del sistema de ficheros. En el emulador están en ~/...
Intenciones (Intention)●   Cuando el usuario seleccionaba una    opción del menú, creábamos una intención●   Vamos a ver  ...
Actividades e Intenciones● En Android    una Aplicación contiene un conjunto de Actividades● Cada Actividad:  –   Debe fij...
Actividades e Intenciones                                                    Aplicación             Actividad Main        ...
Invocar una intención●   startActivity(intent) → lanza una actividad●    sendBroadcast(intent) → envía una    intención a ...
Parámetros de las                  Intenciones●   Acción: acción que queremos ejecutar,    predefinida (ACTION_VIEW,    AC...
Ejemplo pares acción / datos● ACTION_VIEW   content://contacts/people/1 – muestra información sobre la persona con id 1● A...
Parámetros adicionales● Además   de los parámetros principales, podemos detallar más● Category: información adicional de l...
Resolución de intenciones●   Explícita: indicamos el componente (clase    exacta) que va a ejecutar la intención●    Implí...
Ej. Block de notas (I)http://developer.android.com/reference/android/content/Intent.htmlhttp://developer.android.com/resou...
Ej. Filtros de NotesList (II)●    Indica que es una actividad ppal, y se    lanza cuando lanzas la aplicación (MAIN) y    ...
Ej. Filtros de NotesList (III)●    Indica que podemos editar (EDIT), ver    (VIEW) y escoger un valor (PICK) de una    not...
Acciones estándar para            Intenciones● ACTION_MAIN                      ● ACTION_ANSWER● ACTION_VIEW              ...
Ejemplo. Activar Acciones          estándar●Vamos  a hacer un ejemplo –   Llamar a     intenciones     estándar –   Lanzar...
Crear Lista Opciones                     ListView para ver una lista                     @android:id/list → layout        ...
Crear Lista opciones                               ListActivity en vez                                   de Activity      ...
¡Lanzamos!      Intenciones y Servicios   50
Vamos a usar Intenciones             Intenciones y Servicios   51
Acción estándar: llamar            Intenciones y Servicios   52
Acción estándar: listar contactosHay que crearlos   en elemulador            Intenciones y Servicios   53
Acción estándar:editar/ver contacto          Intenciones y Servicios   54
Acción estándar: ver web             Intenciones y Servicios   55
Acción estándar: mandar correo         Intenciones y Servicios   56
Emulador vs realNo encuentra actividad que      mande correo Sí va en el teléfono                             Intenciones ...
Seleccionar un contacto●   En este caso llamo a una actividad    –   Me devuelve un resultado●   Con el resultado llamo a ...
Seleccionar un contacto            Intenciones y Servicios   59
Seleccionar un contacto                               Necesario para el                                código anterior    ...
Lo que llevamos hecho...             Intenciones y Servicios   61
Resumen●   En este tema hemos aprendido a    –   Definir preferencias de usuario, y usarlas en un        programa    –   Q...
¿Preguntas?      Intenciones y Servicios   63
Upcoming SlideShare
Loading in …5
×

Tema 4 4_1_intenciones_servicios

1,061 views
925 views

Published on

Tema 4.4.1 Intenciones y Servicios

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,061
On SlideShare
0
From Embeds
0
Number of Embeds
191
Actions
Shares
0
Downloads
49
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tema 4 4_1_intenciones_servicios

  1. 1. Análisis y Diseño de SoftwareTema 4.4Intenciones y ServiciosPreferencias e Intenciones Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  2. 2. LeyendaTeoríaEjercicio práctico en el ordenadorAmpliación de conocimientosLectura / Vídeo / PodcastPráctica libre / Experimentación Intenciones y Servicios 2
  3. 3. Temario● 4.1 Introducción a Android [Gar10, cap1-2 ]● 4.2 Desarrollo con Android [Gar10, cap3-5]● 4.3 Interfaces de Usuario [Gar10, cap6]● 4.4 Intenciones y Servicios [Gar10, cap7-8] 4.4.1 Preferencias, Sistema de Ficheros, – Menú de Opciones e Intenciones (cap 7) – 4.4.2 Servicios (cap 8)● 4.5 Acceso a Datos [Gar10, cap9] Intenciones y Servicios 3
  4. 4. Bibliografía● Libro de texto: – [Gar10] Learning Android, Marko Gargenta, OReilly, 2010, Cap 7-8. Disponible en http://ofps.oreilly.com/titles/9781449390501/● Android Developers – http://developer.android.com/guide/topics/fundamentals.html – http://developer.android.com/guide/topics/ui/index.html Intenciones y Servicios 4
  5. 5. Objetivos● Aprender a hacer aplicaciones que tienen configuración de los usuarios● Aprender a hacer aplicaciones con más de una pantalla● Entender cómo funciona el mecanismo de Intenciones en Android Intenciones y Servicios 5
  6. 6. Motivación● En nuestra práctica, tenemos que hardcodear” / poner a fuego el usuario y la contraseña● Sería deseable que si la distribuimos los usuarios pueden configurar esto Intenciones y Servicios 6
  7. 7. Preferencias● Laspreferencias permiten que el usuario pueda dar valor a propiedades● Son pares clave-valor, con tipos básicos int, boolean y String● El proceso será 1. Crear un recurso preferencias: prefs.xml 2. Implementar una actividad, PrefsActivity.java, que insufle el fichero prefs.xml 3. Registrar la actividad en el manifiesto 4. Hacer que la aplicación lance esta actividad. Vamos a usar un menú de opciones, que es la opción estándar. 1. Crear recurso menu.xml 2. Actualizar la actividad StatusActivity para que insufle el menú y lance la actividad Intenciones y Servicios 7
  8. 8. Recurso prefs.xml● Proyecto o fichero New->Android XML File Intenciones y Servicios 8
  9. 9. Prefs.xml (II)● Añadimos elementos Intenciones y Servicios 9
  10. 10. Prefs.xml (III) Intenciones y Servicios 10
  11. 11. Prefs (IV)Nombre variable Texto para el usuario Ayuda para que lo rellene Intenciones y Servicios 11
  12. 12. Prefx.xml – Vista xmlAdemás de EditTextPreference (un valor), podemos ponerCheckBoxPreference (escoger un valor de varios) oListPreference (), RingTonePreference(), ... Intenciones y Servicios 12
  13. 13. Actividad PrefsActivity En vez de setContentView() Intenciones y Servicios 13
  14. 14. Actualizamos Manifiesto Intenciones y Servicios 14
  15. 15. Versión actual deres/values/strings.xml Intenciones y Servicios 15
  16. 16. Activando la Actividad con un menú (I)● Creamos un recurso menu.xml Intenciones y Servicios 16
  17. 17. Menú Android (II) Intenciones y Servicios 17
  18. 18. Menú Android (III) Intenciones y Servicios 18
  19. 19. Menú Android (IV) Aquí sí completa icono Intenciones y Servicios 19
  20. 20. Recursos del Sistema en Android● Elicono lo hemos tomado de @android:drawable/ic_menu_preferences● Android nos ofrece recursos – Están en android-sdk/platforms/android- <version>/data/res/ – P.ej. Android-sdk-linux/platforms/android-15/data/res● Podemos acceder a ellos: – Desde Java: android.R (en vez de R) – Desde XML: @android:drawable (en vez de @drawable) Intenciones y Servicios 20
  21. 21. Lanzando el menú● La actividad debe crear el menú a partir de menu.xml● El proceso es – Cuando el usuario pinche en menú del teléfono, Android llama a onCreateOptionsMenu(Menu menu) de la actividad. Se lee el XML y se mantiene el menú en memoria hasta que se destruye la actividad – Cuando el usuario pincha en una opción, se llama a onOptionsItemSelected(MenuItem item) Intenciones y Servicios 21
  22. 22. StatusActivity Crea un objeto Java para insuflar menu.xml Muestra menú Según la opción del menú, hacemos algo. Ahora sólo hay una opción Lanzamos una Intención que lanza una actividad Consumo el evento Intenciones y Servicios 22
  23. 23. Lanzando la aplicación (I) Intenciones y Servicios 23
  24. 24. Lanzando la aplicación (II) Intenciones y Servicios 24
  25. 25. SharedPreferences● Para acceder a las preferencias desde Java, se utiliza la clase SharedPreferences● Debemos – Declarar un objeto preferencias – Inicializarlo – Escuchar posibles cambios de las preferencias, e inicializar el objeto Twitter Intenciones y Servicios 25
  26. 26. StatusActivity (I)(versión actual) Intenciones y Servicios 26
  27. 27. StatusActivity (II) Intenciones y Servicios 27
  28. 28. StatusActivity (III) Intenciones y Servicios 28
  29. 29. StatusActivity (IV) Intenciones y Servicios 29
  30. 30. StatusActivity (V) Propiedad y Valor por defecto - Implementa la interfazOnSharedPreferenceChangeListener - Invalidamos el objeto twitter, y serecreará cuando vuelva a hacer falta (inicialización vaga, lazy) Intenciones y Servicios 30
  31. 31. StatusActivity (VI) Cambiamos twitter por getTwitter() Intenciones y Servicios 31
  32. 32. El sistema de ficheros● Podemos navegar por el sistema de ficheros del dispositivo: Open Perspective → DDMS → File Explorer Intenciones y Servicios 32
  33. 33. Sistema de ficheros Intenciones y Servicios 33
  34. 34. Particiones del sistema de ficheros● Haytres particiones del sistema de ficheros. En el emulador están en ~/.android/avd/. – /system/ – sistema operativo android – /mnt/sdcard/ – almacenamiento de ficheros, música, etc. Se guarda en ~/.android/avd/ para cada dispositivo virtual. Se corresponde con la tarjeta SD en un dispositivo real. – /data/ – datos de usuario. Almacena aplicaciones (/data/app/) y datos de las mismas (/data/data/). En este directorio hay un subdirectorio por aplicación, con los permisos de esa aplicación (un usuario en linux). En el emulador, somos superusuarios (root) y tenemos acceso a todo. Intenciones y Servicios 34
  35. 35. Intenciones (Intention)● Cuando el usuario seleccionaba una opción del menú, creábamos una intención● Vamos a ver – Qué son las intenciones – Para qué valen – Cómo se usan Intenciones y Servicios 35
  36. 36. Actividades e Intenciones● En Android una Aplicación contiene un conjunto de Actividades● Cada Actividad: – Debe fijar su interfaz con setContentView() – Es independiente del resto de actividades, pero puede cooperar con ellas – Una actividad es la actividad principal, que es la que se activa al lanzarse (fijado en AndroidManifest.xml) – Las actividades se comunican entre sí de una forma indirecta y asíncrona – Para cambiar de actividad, una actividad debe ejecutar una intención Intenciones y Servicios 36
  37. 37. Actividades e Intenciones Aplicación Actividad Main Android Intent Result Intent Sub-Actividad 1 Sub-actividad 2 Intenciones y Servicios 37
  38. 38. Invocar una intención● startActivity(intent) → lanza una actividad● sendBroadcast(intent) → envía una intención a todos los componentes BroadcastReceiver● startService(intent) o bindService(intent, …) → se comunica con un servicio de fondo Intenciones y Servicios 38
  39. 39. Parámetros de las Intenciones● Acción: acción que queremos ejecutar, predefinida (ACTION_VIEW, ACTION_DIAL, …) o creada por el usuario.● Datos: datos sobre los que opera la acción expresados como una URI (número de teléfono, contacto, ...) http://developer.android.com/reference/android/content/Intent.html http://developer.android.com/guide/topics/intents/intents-filters.html Intenciones y Servicios 39
  40. 40. Ejemplo pares acción / datos● ACTION_VIEW content://contacts/people/1 – muestra información sobre la persona con id 1● ACTION_DIAL content://contacts/people/1 – muestra el teléfono con el número marcado de la persona con id 1● ACTION_VIEW (o ACTION_DIAL) tel:134 – muestra el teléfono con el número 134 marcado● ACTION_EDIT content://contacts/people/1 – edita la información del contacto con id 1● ACTION_VIEW content://contacts/people – muestra una lista de contactos Intenciones y Servicios 40
  41. 41. Parámetros adicionales● Además de los parámetros principales, podemos detallar más● Category: información adicional de la acción. P. ej. CATEGORY_LAUNCHER indica que debe aparecer en el lanzador como una aplicación principal● Type: MIME type, normalmente se pone bien solo.● Component: fijamos qué clase queremos que procese la intención● Extras:añadir más datos para una acción. P.ej. Para email (subject, body, …). Intenciones y Servicios 41
  42. 42. Resolución de intenciones● Explícita: indicamos el componente (clase exacta) que va a ejecutar la intención● Implícita: el sistema determina (resuelve) qué componente debe procesar al intención. Para esto – Las actividades de las aplicaciones registran qué intenciones saben responder en el manifiesto en la sección <intent-filter>, donde indican acción, categoría y datos Intenciones y Servicios 42
  43. 43. Ej. Block de notas (I)http://developer.android.com/reference/android/content/Intent.htmlhttp://developer.android.com/resources/samples/NotePad/index.html Intenciones y Servicios 43
  44. 44. Ej. Filtros de NotesList (II)● Indica que es una actividad ppal, y se lanza cuando lanzas la aplicación (MAIN) y que se lista en el lanzador de aplicaciones (LAUNCHER) Intenciones y Servicios 44
  45. 45. Ej. Filtros de NotesList (III)● Indica que podemos editar (EDIT), ver (VIEW) y escoger un valor (PICK) de una nota (vnd.android.cursor.dit/vnd.google.note). Pone una categoría por defecto (DEFAULT) porque es obligatorio para poder usar startActivity. Intenciones y Servicios 45
  46. 46. Acciones estándar para Intenciones● ACTION_MAIN ● ACTION_ANSWER● ACTION_VIEW ● ACTION_INSERT● ACTION_ATTACH_DATA ● ACTION_DELETE ● ACTION_RUN● ACTION_EDIT ● ACTION_SYNC● ACTION_PICK ● ACTION_PICK_ACTIVITY● ACTION_CHOOSER ● ACTION_SEARCH● ACTION_GET_CONTENT ● ACTION_WEB_SEARCH● ACTION_DIAL ● ACTION_FACTORY_TEST● ACTION_CALL● ACTION_SEND● ANCTION_SENDTO http://developer.android.com/reference/android/content/Intent.html Intenciones y Servicios 46
  47. 47. Ejemplo. Activar Acciones estándar●Vamos a hacer un ejemplo – Llamar a intenciones estándar – Lanzar otras actividades Intenciones y Servicios 47
  48. 48. Crear Lista Opciones ListView para ver una lista @android:id/list → layout de Android para listas @android:id/empty → si la lista está vacía Intenciones y Servicios 48
  49. 49. Crear Lista opciones ListActivity en vez de Activity Fuente de datos Adaptador de lista, simple_list_item_1 está predefinido Listener de la selección Intenciones y Servicios 49
  50. 50. ¡Lanzamos! Intenciones y Servicios 50
  51. 51. Vamos a usar Intenciones Intenciones y Servicios 51
  52. 52. Acción estándar: llamar Intenciones y Servicios 52
  53. 53. Acción estándar: listar contactosHay que crearlos en elemulador Intenciones y Servicios 53
  54. 54. Acción estándar:editar/ver contacto Intenciones y Servicios 54
  55. 55. Acción estándar: ver web Intenciones y Servicios 55
  56. 56. Acción estándar: mandar correo Intenciones y Servicios 56
  57. 57. Emulador vs realNo encuentra actividad que mande correo Sí va en el teléfono Intenciones y Servicios 57
  58. 58. Seleccionar un contacto● En este caso llamo a una actividad – Me devuelve un resultado● Con el resultado llamo a otra actividad● Para esto, uso – startActivityForResult() – onActivityResult() Intenciones y Servicios 58
  59. 59. Seleccionar un contacto Intenciones y Servicios 59
  60. 60. Seleccionar un contacto Necesario para el código anterior Intenciones y Servicios 60
  61. 61. Lo que llevamos hecho... Intenciones y Servicios 61
  62. 62. Resumen● En este tema hemos aprendido a – Definir preferencias de usuario, y usarlas en un programa – Qué son las intenciones, y comunicar actividades mediante ellas – Algunas acciones estándar para lanzar actividades Intenciones y Servicios 62
  63. 63. ¿Preguntas? Intenciones y Servicios 63

×