SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
Análisis y Diseño
      de Software
Tema 4.4
Intenciones y Servicios
Preferencias e Intenciones

       Carlos A. Iglesias <cif@gsi.dit.upm.es>
      Departamento de Ingeniería de Sistemas Telemáticos
                                  http://moodle.dit.upm.es
Leyenda
Teoría


Ejercicio práctico en el ordenador


Ampliación de conocimientos


Lectura / Vídeo / Podcast


Práctica libre / Experimentación



                    Intenciones y Servicios   2
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
Bibliografía
●   Libro de texto:
    – [Gar10] Learning Android, Marko Gargenta,
        O'Reilly, 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
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
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
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
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

                                   Intenciones y Servicios   11
Prefx.xml – Vista xml




Además de EditTextPreference (un valor), podemos poner
CheckBoxPreference (escoger un valor de varios) o
ListPreference (), RingTonePreference(), ...



                                          Intenciones y Servicios   12
Actividad PrefsActivity




                   En vez de setContentView()


            Intenciones y Servicios             13
Actualizamos Manifiesto




            Intenciones y Servicios   14
Versión actual de
res/values/strings.xml




            Intenciones y Servicios   15
Activando la Actividad con un
          menú (I)
●   Creamos un recurso menu.xml




                       Intenciones y Servicios   16
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 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
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
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
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
    –   Declarar un objeto preferencias
    –   Inicializarlo
    –   Escuchar posibles cambios de las
        preferencias, e inicializar el objeto Twitter



                                 Intenciones y Servicios   25
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
                                                            defecto




       - Implementa la interfaz
OnSharedPreferenceChangeListener
 - Invalidamos el objeto twitter, y se
recreará cuando vuelva a hacer falta
      (inicialización vaga, lazy)
                                         Intenciones y Servicios              30
StatusActivity (VI)




                            Cambiamos twitter
                             por getTwitter()




          Intenciones y Servicios               31
El sistema de ficheros
●    Podemos navegar por el sistema de
    ficheros del dispositivo: Open Perspective
    → DDMS → File Explorer




                           Intenciones y Servicios   32
Sistema de ficheros




          Intenciones y Servicios   33
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
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
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
Actividades e Intenciones

                                                    Aplicación
             Actividad Main                         Android


   Intent                 Result       Intent


        Sub-Actividad 1




                     Sub-actividad 2




                              Intenciones y Servicios            37
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
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
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
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
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
Ej. Block de notas (I)




http://developer.android.com/reference/android/content/Intent.html
http://developer.android.com/resources/samples/NotePad/index.html
                                            Intenciones y Servicios   43
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
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
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
Ejemplo. Activar Acciones
          estándar
●Vamos  a hacer un
 ejemplo
 –   Llamar a
     intenciones
     estándar
 –   Lanzar otras
     actividades



                     Intenciones y Servicios   47
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
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
¡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 contactos




Hay que
 crearlos
   en el
emulador




            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 real




No encuentra actividad que
      mande correo



 Sí va en el teléfono


                             Intenciones y Servicios   57
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
Seleccionar un contacto




            Intenciones y Servicios   59
Seleccionar un contacto

                               Necesario para el
                                código anterior




            Intenciones y Servicios                60
Lo que llevamos hecho...




             Intenciones y Servicios   61
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
¿Preguntas?




      Intenciones y Servicios   63

Weitere ähnliche Inhalte

Andere mochten auch

Nc cuarto cuadrante
Nc cuarto cuadranteNc cuarto cuadrante
Nc cuarto cuadranteamtlucca
 
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.Carlos A. Iglesias
 
Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]
Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]
Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]Websec México, S.C.
 

Andere mochten auch (7)

Nc cuarto cuadrante
Nc cuarto cuadranteNc cuarto cuadrante
Nc cuarto cuadrante
 
March 22, 2013 Revenue Generation Task Force Meeting
March 22, 2013 Revenue Generation Task Force MeetingMarch 22, 2013 Revenue Generation Task Force Meeting
March 22, 2013 Revenue Generation Task Force Meeting
 
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
 
Tema 4.8 Preferencias
Tema 4.8 PreferenciasTema 4.8 Preferencias
Tema 4.8 Preferencias
 
Inventfarm avance
Inventfarm avanceInventfarm avance
Inventfarm avance
 
Android basics
Android basicsAndroid basics
Android basics
 
Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]
Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]
Búsqueda de vulnerabilidades en aplicaciones de Android [GuadalajaraCON 2013]
 

Ähnlich wie Android Intenciones y Servicios

Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioCarlos A. Iglesias
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicaciónEmilio Aviles Avila
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"Alberto Ruibal
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de AndroidJavier Muñoz
 
Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)
Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)
Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)aeliasnet
 
Tema 4 5_2_receptores_difusion
Tema 4 5_2_receptores_difusionTema 4 5_2_receptores_difusion
Tema 4 5_2_receptores_difusionCarlos A. Iglesias
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto Ruibal
 
Curso Android Tema 2
Curso Android Tema 2Curso Android Tema 2
Curso Android Tema 2Frank Jorge
 

Ähnlich wie Android Intenciones y Servicios (20)

Tema
Tema Tema
Tema
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Android
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicación
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de Android
 
Seminario Android
Seminario AndroidSeminario Android
Seminario Android
 
Preguntas sobre android
Preguntas sobre androidPreguntas sobre android
Preguntas sobre android
 
Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)
Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)
Iniciación a la programación para Android - Murcia GTUG (Murcia Lan Pary 2011)
 
Tema 4 5_2_receptores_difusion
Tema 4 5_2_receptores_difusionTema 4 5_2_receptores_difusion
Tema 4 5_2_receptores_difusion
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Cuestionario android
Cuestionario androidCuestionario android
Cuestionario android
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 
Preguntas sobre android
Preguntas sobre androidPreguntas sobre android
Preguntas sobre android
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Yo
YoYo
Yo
 
Curso Android Tema 2
Curso Android Tema 2Curso Android Tema 2
Curso Android Tema 2
 
Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
 
Preguntas sobre android
Preguntas sobre androidPreguntas sobre android
Preguntas sobre android
 

Mehr von Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 
Tema 4.9 Hebras
Tema 4.9 HebrasTema 4.9 Hebras
Tema 4.9 Hebras
 

Android Intenciones y Servicios

  • 1. Análisis y Diseño de Software Tema 4.4 Intenciones y Servicios Preferencias e Intenciones Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  • 2. Leyenda Teoría Ejercicio práctico en el ordenador Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Intenciones y Servicios 2
  • 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. Bibliografía ● Libro de texto: – [Gar10] Learning Android, Marko Gargenta, O'Reilly, 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. 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. 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. 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. Recurso prefs.xml ● Proyecto o fichero New->Android XML File Intenciones y Servicios 8
  • 9. Prefs.xml (II) ● Añadimos elementos Intenciones y Servicios 9
  • 10. Prefs.xml (III) Intenciones y Servicios 10
  • 11. Prefs (IV) Nombre variable Texto para el usuario Ayuda para que lo rellene Intenciones y Servicios 11
  • 12. Prefx.xml – Vista xml Además de EditTextPreference (un valor), podemos poner CheckBoxPreference (escoger un valor de varios) o ListPreference (), RingTonePreference(), ... Intenciones y Servicios 12
  • 13. Actividad PrefsActivity En vez de setContentView() Intenciones y Servicios 13
  • 14. Actualizamos Manifiesto Intenciones y Servicios 14
  • 15. Versión actual de res/values/strings.xml Intenciones y Servicios 15
  • 16. Activando la Actividad con un menú (I) ● Creamos un recurso menu.xml Intenciones y Servicios 16
  • 17. Menú Android (II) Intenciones y Servicios 17
  • 18. Menú Android (III) Intenciones y Servicios 18
  • 19. Menú Android (IV) Aquí sí completa icono Intenciones y Servicios 19
  • 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. 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. 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. Lanzando la aplicación (I) Intenciones y Servicios 23
  • 24. Lanzando la aplicación (II) Intenciones y Servicios 24
  • 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. StatusActivity (I) (versión actual) Intenciones y Servicios 26
  • 27. StatusActivity (II) Intenciones y Servicios 27
  • 28. StatusActivity (III) Intenciones y Servicios 28
  • 29. StatusActivity (IV) Intenciones y Servicios 29
  • 30. StatusActivity (V) Propiedad y Valor por defecto - Implementa la interfaz OnSharedPreferenceChangeListener - Invalidamos el objeto twitter, y se recreará cuando vuelva a hacer falta (inicialización vaga, lazy) Intenciones y Servicios 30
  • 31. StatusActivity (VI) Cambiamos twitter por getTwitter() Intenciones y Servicios 31
  • 32. El sistema de ficheros ● Podemos navegar por el sistema de ficheros del dispositivo: Open Perspective → DDMS → File Explorer Intenciones y Servicios 32
  • 33. Sistema de ficheros Intenciones y Servicios 33
  • 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. 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. 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. Actividades e Intenciones Aplicación Actividad Main Android Intent Result Intent Sub-Actividad 1 Sub-actividad 2 Intenciones y Servicios 37
  • 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. 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. 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. 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. 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. Ej. Block de notas (I) http://developer.android.com/reference/android/content/Intent.html http://developer.android.com/resources/samples/NotePad/index.html Intenciones y Servicios 43
  • 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. 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. 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. Ejemplo. Activar Acciones estándar ●Vamos a hacer un ejemplo – Llamar a intenciones estándar – Lanzar otras actividades Intenciones y Servicios 47
  • 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. 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. ¡Lanzamos! Intenciones y Servicios 50
  • 51. Vamos a usar Intenciones Intenciones y Servicios 51
  • 52. Acción estándar: llamar Intenciones y Servicios 52
  • 53. Acción estándar: listar contactos Hay que crearlos en el emulador Intenciones y Servicios 53
  • 54. Acción estándar: editar/ver contacto Intenciones y Servicios 54
  • 55. Acción estándar: ver web Intenciones y Servicios 55
  • 56. Acción estándar: mandar correo Intenciones y Servicios 56
  • 57. Emulador vs real No encuentra actividad que mande correo Sí va en el teléfono Intenciones y Servicios 57
  • 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. Seleccionar un contacto Intenciones y Servicios 59
  • 60. Seleccionar un contacto Necesario para el código anterior Intenciones y Servicios 60
  • 61. Lo que llevamos hecho... Intenciones y Servicios 61
  • 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. ¿Preguntas? Intenciones y Servicios 63