Android
Quick Start v2.0
        Jesús Fontecha Diezma




  University of Castilla-La Mancha, Spain
           MAmI Research Lab
                                            1
Introducción
                             • SSOO de Google
                                • Diseñado para ser ejecutado en dispositivos móviles.
                                • Origen: 2007  Open Handset Alliance (OHA)




Introducción a Android
   Elementos
   Ciclo de vida: Activity
   Patrones de diseño
Desarrollo con Android
   Entorno de trabajo
      SDK Android
      MVC                       • Basado en el Kernel de Linux
      Primeros Pasos
   Views y Eventos              • Permite ejecutar aplicaciones en Java + XML
   Adaptadores
   Intents y Bundles
   Ejecurión y Depuración                                                            2
   Librerías
Actividades
                               • Activity
                                     • El más importante
                                     • Representa una pantalla individual
                                     • Presenta una interfaz gráfica al usuario
                                                                    Listado de nombres y teléfonos


                                                                          public class Activity extends ApplicationContext {
Introducción a Android
                                                                            protected void onCreate(Bundle savedInstanceState);
    Elementos
    Ciclo de vida: Activity                                                   protected void onStart();
    Patrones de diseño                                                        protected void onRestart();
Desarrollo con Android         Agenda
    Entorno de trabajo                                                        protected void onResume();
                              telefónica
       SDK Android                                                            protected void onPause();
       MVC
                                                                              protected void onStop();
       Primeros Pasos
    Views y Eventos                                                           protected void onDestroy();
    Adaptadores                                                           }
    Intents y Bundles
    Ejecurión y Depuración     Información detallada del contacto                                                           3
    Librerías
Ciclo de vida
                                                                               Primera vez


                                                                               Cuando es visible




Introducción a Android              Asignación de memoria
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
                              Otra actividad en primer plano
       SDK Android
       MVC
       Primeros Pasos
                                                                                Cuando se oculta
    Views y Eventos
    Adaptadores
    Intents y Bundles                                                          Finaliza
    Ejecurión y Depuración                                                                         4
    Librerías
Services y Broadcast Receivers
                              • Services
                                 • No tiene interfaz gráfica
                                 • Puede ejecutarse en background (= demonio Linux)

                                           Capturar datos acelerómetro     Capturar posición GPS



Introducción a Android
    Elementos                 • Broadcast receivers
    Ciclo de vida: Activity
    Patrones de diseño
                                 • No tienen interfaz gráfica
Desarrollo con Android           • Detecta y reacciona ante mensajes o eventos del
    Entorno de trabajo
       SDK Android
                                   sistema  Notificaciones broadcast.
       MVC
       Primeros Pasos
    Views y Eventos             Batería Baja   Llamada   Tarjeta SD      Cambio zona horaria   Otras aplicaciones
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                                          5
    Librerías
Intents y Views
                              • Intents
                                  • Elemento básico de comunicación
                                       • Variables/objetos entre componentes
                                       • Definen “qué se debe hacer”        Iniciar un servicio


                               Mostrar una actividad desde otra     Enviar mensaje broadcast    Iniciar otra aplicación

Introducción a Android
    Elementos
    Ciclo de vida: Activity   • Views
    Patrones de diseño
Desarrollo con Android            • Componentes básicos para la construcción de la UI
    Entorno de trabajo
       SDK Android                • Análogo a los controles de Java o .NET
       MVC
       Primeros Pasos              Listas        Cuadros de          Barras de
    Views y Eventos                                                                   Botones        Imágenes
                                desplegables       texto          desplazamiento
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                                         6
    Librerías
Content Providers y Widgets
                              • Content providers                 Agenda del sistema

                                 • Mecanismos para compartir
                                   datos entre aplicaciones.
                                 • Podemos acceder a datos de
                                   otras aplicaciones
                                                           Mi
                                                         Agenda
Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño        • Widgets
Desarrollo con Android
    Entorno de trabajo           • Elementos         visuales e
       SDK Android
       MVC
                                   interactivos
       Primeros Pasos            • Se muestran en la pantalla
    Views y Eventos
    Adaptadores                    principal del terminal
    Intents y Bundles
    Ejecurión y Depuración                                                             7
    Librerías
Fragmentos
                              • Y a partir de Android 3.0 ¡Fragments!
                                   • Solución a la “fragmentación mala”.




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores               Más de 4000 dispositivos Android: “muchas resoluciones, muchos tamaños” Argh!!
    Intents y Bundles
    Ejecurión y Depuración                                                                              8
    Librerías
Fragmentos
                              • ¿Qué supone?
                                   • En aplicaciones antiguas:
                                       •  Uso de librerías de apoyo a la compatibilidad
                                         (support libraries).
                                       •  Reescritura de clases
                                   • En aplicaciones nuevas:
Introducción a Android
                                       •  Versatilidad: Misma app compatible para cualquier
    Elementos                            dispositivo.
    Ciclo de vida: Activity
    Patrones de diseño
                                       •  Aumentar la importancia del diseño de las
Desarrollo con Android                   actividades.  Más difícil diseñar una buena app.
    Entorno de trabajo
       SDK Android
                                       •  Reutilización de fragmentos.
       MVC                         • Cambian “un poco” aspectos iniciales de las actividades.
       Primeros Pasos
    Views y Eventos
    Adaptadores               Actividades compuestas por componentes vs Actividades compuestas por fragmentos
    Intents y Bundles
    Ejecurión y Depuración                                                                              9
    Librerías
Patrones de Diseño
                              • Objetivo
                                 • Unificar y mejorar la apariencia de la interfaz gráfica
                                 • http://www.androidpatterns.com/
                                                , listas, pestañas, menús, etc.


Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración           “No es una obligación, pero sí una recomendación”   10
    Librerías
Barras de acción
                              • Action Bar
                                 • Similar a una barra de tareas
                                 • Permite agrupar acciones
                                 • De acceso intuitivo y rápido


Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                         11
    Librerías
Ejemplo: Comparación (I)
                              • Misma Aplicación, diferentes dispositivos
                              Galaxy S



                                                Fragmentos
                                    Actividad




Introducción a Android
    Elementos
    Ciclo de vida: Activity
                                                                                  Posibles transiciones
    Patrones de diseño        Galaxy tab 10”
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                                12
    Librerías
Ejemplo: Comparación (II)
                              • Misma Aplicación, mismo dispositivo, diferente orientación




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC                        Más trabajo de diseño, pero…
       Primeros Pasos             • ¡Reutilizamos código!
    Views y Eventos
                                  • ¡La aplicación se adapta a cualquier dispositivo Android!
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                      13
    Librerías
Desarrollo con Android
                              • ¿Qué necesitamos?
                                                                  Librerías

                                                                  Emulador

                                                                   DVM




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                    14
    Librerías
SDK ANDROID (sobre Eclipse)
                              1. Instalar Eclipse
                              2. Instalar SDK Android
                                 http://developer.android.com/sdk/index.html
                                 •       Instalar las librerías necesarias

                              3. Añadir un AVD – SDK Manager
                                 •       Tools > Manage AVDs > New
                                 •       Definir características y crear
Introducción a Android        4. Configurar Plugin ADT - Eclipse
    Elementos
    Ciclo de vida: Activity      •       Help > Install New Software
    Patrones de diseño           •       Introducir url proveedor: https://dl-ssl.google.com/android/eclipse/
Desarrollo con Android
    Entorno de trabajo        5. ¡Ya podemos crear nuestro primer proyecto!
       SDK Android
       MVC
       Primeros Pasos
                                     También se puede instalar en otros IDEs - Netbeans (ver Android Basics v.1)
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                                         15
    Librerías
Modelo Vista Controlador
                               • La separación de lógica e interfaz favorece la aplicación del
                                 patrón Modelo-Vista-Controlador (MVC)


                                                                        -Responsable de eventos
                                                                        - Lógica tras la interacción del usuario
                                                          Controlador

Introducción a Android
    Elementos
    Ciclo de vida: Activity                                                               -Representación de la
    Patrones de diseño                                                                     información
                              - Interfaz de usuario
Desarrollo con Android
    Entorno de trabajo
       SDK Android                                Vista                             Modelo
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                                 16
    Librerías
Primeros Pasos
                              1.   New Project > Android Application
                                   Project
                              2.   Definir las propiedades iniciales de la
                                   App
                                   •    Nombre
                                   •    SDK desarrollo
                                   •    Mínimo SDK requerido
                                   •    Icono de aplicación
                                   •    Actividad inicial (opcional)
Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                   17
    Librerías
¿Qué es todo esto?




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                         18
    Librerías
Estructura de directorios

                                 • /src – Clases java y archivo R.java
                                      • R.java: Autogenerado por Android (vbles. sistema)
                                 • /res/drawable – Imágenes de la aplicación y recursos
                                   XML
                                      • Posibles subdirectorios
                                 • /res/layout – Vistas de la aplicación en XML
                                      • Posibles subdirectorios
                                 • /res/values – Archivos XML con las variables de la
Introducción a Android             aplicación
    Elementos                    • Libraries – El IDE referencia al SDK de Android
    Ciclo de vida: Activity      • AndroidManifest.xml – Archivo de manifiesto
    Patrones de diseño
                                            • Define todas las actividades, servicios,…
Desarrollo con Android
    Entorno de trabajo
                                            • Define la configuración del proyecto
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                  19
    Librerías
Ejemplo de Manifiesto




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                            20
    Librerías
Vista de diseño

                                                                                             Jerarquía
                                                                                             Layouts-
                                                                                           Componentes




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
                              Views/Componentes     Área de trabajo   Propiedades Componente selección
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                       21
    Librerías
Layouts (I)
                              • Layouts. Distribución de componentes en pantalla
                                <?xml version="1.0" encoding="utf-8"?>
                                <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                                 android:orientation="vertical" android:layout_width="fill_parent"
                                                 android:layout_height="fill_parent">

                                                  <Button android:text="Button01" android:id="@+id/Button01"
                                                                   android:layout_width="wrap_content"
                                                  android:layout_height="wrap_content" />

                                                  <Button android:text="Button02" android:id="@+id/Button02"
                                                                   android:layout_width="wrap_content"                     Linear Layout
                                                  android:layout_height="wrap_content" />
Introducción a Android          </LinearLayout>
    Elementos
                                <?xml version="1.0" encoding="utf-8"?>
    Ciclo de vida: Activity     <TableLayout android:id="@+id/TableLayout01"
    Patrones de diseño                           android:layout_width="fill_parent" android:layout_height="fill_parent“
                                                 xmlns:android="http://schemas.android.com/apk/res/android">
Desarrollo con Android
    Entorno de trabajo                            <TableRow android:id="@+id/TableRow01">
       SDK Android                                               <TextView android:id="@+id/TextView01"
                                                                 android:text="First Name:" android:width="100px" />
       MVC                                                       <EditText android:id="@+id/EditText01" android:width="220px" />
       Primeros Pasos                             …
                                                  <TableRow android:id="@+id/TableRow03">
    Views y Eventos
                                                                 <Button android:id="@+id/Button01“ …
    Adaptadores                                                  android:layout_height="wrap_content" android:text="Submit" />
    Intents y Bundles                                            <Button android:id="@+id/Button02" android:layout_                Table Layout
                                                                 width="wrap_content" android:layout_...
    Ejecurión y Depuración                        </TableRow>                                                                             22
    Librerías                   </TableLayout>
Layouts (II)
                               <?xml version="1.0" encoding="utf-8"?>
                               <RelativeLayout android:id="@+id/RelativeLayout01"
                                                android:layout_width="fill_parent“ android:layout_height="fill_parent"
                                                xmlns:android="http://schemas.android.com/apk/res/android">

                                                <TextView android:id="@+id/TextView01 … />
                                                <EditText android:id="@+id/EditText01" android:layout_width="220px“ …
                                                                  android:layout_toRightOf="@+id/TextView01"
                                                                 android:layout_below="@+id/RelativeLayout01" />
                                                <EditText android:id="@+id/EditText02" … android:layout_below="@+id/EditText01"
                                                android:layout_alignLeft="@+id/EditText01" />

                                                <TextView android:id="@+id/TextView02" android:layout_width=…
                                                                                                                                  Relative Layout
                                                <Button android:text="Submit" android:id="@+id/Button01” …
                                                android:layout_below="@id/EditText02" android:layout_alignLeft="@id/EditText02" />
                                                <Button android:text="Reset" android:id="@+id/Button02“ …
Introducción a Android                          android:layout_below="@id/EditText02" android:layout_alignRight="@id/EditText02" />
    Elementos                  </RelativeLayout>
    Ciclo de vida: Activity
    Patrones de diseño
                              <?xml version="1.0" encoding="utf-8"?>
Desarrollo con Android        <AbsoluteLayout android:id="@+id/AbsoluteLayout01"
    Entorno de trabajo                         android:layout_width="fill_parent" android:layout_height="fill_parent"
                                               xmlns:android="http://schemas.android.com/apk/res/android">
       SDK Android
       MVC                                     <EditText android:id="@+id/EditText01" android:layout_width="200px"
       Primeros Pasos                          android:layout_height="wrap_content" android:layout_x="12px" android:layout_y="12px" />

    Views y Eventos                           <Button android:text="Search" android:id="@+id/Button01" android:layout_width="100px"
    Adaptadores                               android:layout_height="wrap_content" android:layout_x="220px" android:layout_y="12px" />
                              </AbsoluteLayout>
    Intents y Bundles
    Ejecurión y Depuración                                                                                         Absolute Layout           23
    Librerías
Layouts (III)
                              <?xml version="1.0" encoding="utf-8"?>
                              <FrameLayout android:id="@+id/FrameLayout01" android:layout_width="fill_parent"
                                               android:layout_height="fill_parent"
                                               xmlns:android="http://schemas.android.com/apk/res/android">

                                               <ImageView android:id="@+id/ImageView01" android:src="@drawable/android"
                                                              android:layout_width="fill_parent"
                                                              android:layout_height="fill_parent" android:scaleType="center" />

                                               <TextView android:text="Android Partaker" android:id="@+id/TextView01"
                                                               android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                               android:layout_marginBottom="20dip" android:layout_gravity="center_horizontal|bottom"
                                                               android:padding="10dip" android:textColor="#AA0000"
                                                               android:textStyle="bold" android:textSize="20px" android:background="#00000000" />
                              </FrameLayout>

                                                                                                        Frame Layout
Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores                Source: http://androidpartaker.wordpress.com/2010/07/03/introduction-to-android-ui-layouts/
    Intents y Bundles
    Ejecurión y Depuración                                                                                                                      24
    Librerías
Vistas Actividad




Introducción a Android
    Elementos
                                           MainActivity.java
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                     25
    Librerías
Fragmento en Actividad
                                                       Fragmento.java




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                        26
    Librerías
Procedural vs Declarativo

                              • Ejemplo: Programación de un componente

                                         Archivo Java                    Archivo XML
                              TextView tv= new TextView(this)   <TextView
                              tv.setWidth(100);                  android:id="@+id/nameLabel"
                              tv.setHeight(60);                  android:text="phone:"
                              tv.setText("phone");               android:layout_width="100"
                              setContentView(tv);                android:layout_height="60"/>
Introducción a Android
    Elementos
    Ciclo de vida: Activity   • Vale, entonces… ¿Cómo lo hago?  Depende
    Patrones de diseño
Desarrollo con Android
                              • Recomendación: Declarar XML siempre que se pueda
    Entorno de trabajo             • ¡En layouts siempre!
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos                      ¿Seguimos con algo de programación?
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                 27
    Librerías
Eventos sobre componentes (I)

                                          Views




Introducción a Android
    Elementos
                              Eventos
    Ciclo de vida: Activity
    Patrones de diseño        • Handlers
Desarrollo con Android
    Entorno de trabajo             • Maneja eventos de entrada sin importar dónde está el foco.
       SDK Android                 • No están necesariamente asociados a un view.
       MVC
       Primeros Pasos              • Botón atrás, tocar pantalla,…
    Views y Eventos           • Listeners
    Adaptadores
    Intents y Bundles              • Maneja eventos generados por un view o viewgroup.
    Ejecurión y Depuración                                                                        28
    Librerías
Eventos sobre componentes (II)
                               • Button




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
                              “Android recomienda que la actividad
    Adaptadores               implemente la interfaz onXXXListener en
    Intents y Bundles         lugar de usar clases anónimas”
    Ejecurión y Depuración                                              29
    Librerías
Eventos sobre componentes (III)
                              • EditText




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                           30
    Librerías
Eventos sobre componentes (IV)
                              • ImageView




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                         31
    Librerías
Eventos sobre componentes (V)
                              • CheckBox




Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                        32
    Librerías
Eventos sobre componentes (VI)
                              • Más Eventos
                                 • onLongClick, onFocusChange, onTouch, onKeyDown, onKeyUp,…
                              • Más Componentes
                                 •   Texto  TextView, AutocompleteTextView,…
                                 •   Botón  ImageButton, TogleButton, RadioButton,…
                                 •   Vistas compuestas  ExpandableListView,       …
                                 •   Barras  ProgressBar, SeekBar, RatinBar,…
Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
                                ListItem
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
                               ¿Cómo lleno
    Ejecurión y Depuración       la lista?                                                33
    Librerías
Adaptadores (I)
                              • ¿Qué es?
                                 • Objeto que proporciona una interfaz común para cada modelo de
                                   datos detrás de un control de selección.
                              • Tipos
                                  • ListAdapter
                                  • ArrayAdapter
Introducción a Android            • SpinnerAdapter
    Elementos
    Ciclo de vida: Activity       • SimpleCursorAdapter
    Patrones de diseño
Desarrollo con Android
                                  • CustomAdapters
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                  34
    Librerías
Adaptadores (II)
                               • Ejemplo                                  <?xml version="1.0" encoding="utf-8"?>
                                                                          <resources>
                                                                             <string-array name="comidas">
                                                                                <item>Salchichas</item>
                                                                                <item>Huevos</item>
                                                                                <item>Tomates</item>
                                                                             </string-array>
                              //Creamos el adaptador                      </resources>
                              ArrayAdapter<CharSequence> adapter =
                              ArrayAdapter.createFromResource(this,R.array.comidas,android.R.layout.simple_spinner_item);
Introducción a Android
                              //Añadimos el layout para el menú
    Elementos
                              adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    Ciclo de vida: Activity
                              //Le indicamos al spinner el adaptador a usar
    Patrones de diseño
                              prueba.setAdapter(adapter);
Desarrollo con Android
    Entorno de trabajo
       SDK Android                 ¡Los datos no tienen porque proceder de recursos estáticos!
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                                                         35
    Librerías
Eventos sobre elementos Hw
                               • Interfaz SensorEventListener
                                                                                            Recuperamos el sensor
                              mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
                              List<Sensor> listSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);

                              Método                  onSensorChanged()

                               • Sensores

Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración          http://developer.android.com/reference/android/hardware/Sensor.html        36
    Librerías
Más sobre Actividades y Fragmentos
                              • Tipos de Actividades y Fragmentos
                                   • ListActivity  Diseñada especialmente para trabajar con ListViews.
                                   • ListFragment  Idem.
                                   • Alguna más: TabActivity.
                                   • ¡Los fragmentos se “inflan” dentro de las actividades!

                                            View view = inflater.inflate(R.layout.fragment_edit_name, container);

                              • Intents
Introducción a Android             • Objetos utilizados para enviar mensajes asíncronos dentro de una
    Elementos                        aplicación o entre varias aplicaciones.
    Ciclo de vida: Activity
    Patrones de diseño
                                   • Posibilitan la transición entre actividades.
Desarrollo con Android             • Permiten la comunicación entre componentes.
    Entorno de trabajo
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración           http://androideity.com/2011/10/17/trabajando-con-intents-en-android-overview/   37
    Librerías
Intents y Bundles (I)
                              • Bundle
                                   • Contenedor para agrupar los datos.
                                   • Pueden ser usados conjuntamente con Intents.
                              • Ejemplo Intent
                                                        Intent intent = new Intent();
                                                        intent.setClass(getActivity(),
                                                        NuevaActividad.class);
                                                        intent.putExtra("identificador", id);
Introducción a Android
                                                        intent.putExtra("nombre", nombre);
    Elementos
    Ciclo de vida: Activity
                                                        startActivity(intent);
    Patrones de diseño
Desarrollo con Android                                       identificador
    Entorno de trabajo
                                                               nombre
       SDK Android
       MVC                          Actividad 1                                        Actividad 2
       Primeros Pasos
    Views y Eventos
    Adaptadores                String id = getActivity().getIntent().getStringExtra("identificador");
    Intents y Bundles          String nombre = getActivity().getIntent().getStringExtra("nombre");
    Ejecurión y Depuración                                                                              38
    Librerías
Intents y Bundles (II)
                              • Ejemplo Bundle
                              Bundle b=new Bundle();           Bundle extras = intent.getExtras();
                              b.putString("myname", nombre);   String key = extras.getString("mynkey");


                                             ¡también podemos pasar objetos!



Introducción a Android
                                              Serializable       Parcelable
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android        • ¡Hay mucho más!  Evolución constante
    Entorno de trabajo
                                   • Nuevos firmwares
       SDK Android
       MVC
                                   • Nuevas funciones
       Primeros Pasos
    Views y Eventos
    Adaptadores                      ¡Esto sólo ha sido el comienzo de una ¿gran? amistad!
    Intents y Bundles
    Ejecurión y Depuración                                                                           39
    Librerías
Ejecución de aplicaciones
                                                                    Dispositivos conectados



                                                                 Poner en modo depuracion




                                                                             Emuladores
Introducción a Android
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
       SDK Android            Dalvik Virtual Machine (DVM)
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles           !NO OLVIDES LA DEPURACIÓN!
    Ejecurión y Depuración                                                           40
    Librerías
Uso de Librerías
                              • Hay librerías para todo y para todos
                                  • Almacenamiento de datos (SQLite)
                                  • Bibliotecas de medios
                                  • Bibliotecas gráficas (2D y 3D –OpenGL)
                                  • Servicios Web (Ksoap)
                                  • Mapas (API Google Maps)
Introducción a Android
                                  • …¡y muchas más!
    Elementos
    Ciclo de vida: Activity
    Patrones de diseño
Desarrollo con Android
    Entorno de trabajo
                               REFERENCIA: http://developer.android.com/index.html
       SDK Android
       MVC
       Primeros Pasos
    Views y Eventos
    Adaptadores
    Intents y Bundles
    Ejecurión y Depuración                                                           41
    Librerías
Android Quick Start V2.0   Jesús Fontecha Diezma




                                                   42

Android Basics v2.0

  • 1.
    Android Quick Start v2.0 Jesús Fontecha Diezma University of Castilla-La Mancha, Spain MAmI Research Lab 1
  • 2.
    Introducción • SSOO de Google • Diseñado para ser ejecutado en dispositivos móviles. • Origen: 2007  Open Handset Alliance (OHA) Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC • Basado en el Kernel de Linux Primeros Pasos Views y Eventos • Permite ejecutar aplicaciones en Java + XML Adaptadores Intents y Bundles Ejecurión y Depuración 2 Librerías
  • 3.
    Actividades • Activity • El más importante • Representa una pantalla individual • Presenta una interfaz gráfica al usuario Listado de nombres y teléfonos public class Activity extends ApplicationContext { Introducción a Android protected void onCreate(Bundle savedInstanceState); Elementos Ciclo de vida: Activity protected void onStart(); Patrones de diseño protected void onRestart(); Desarrollo con Android Agenda Entorno de trabajo protected void onResume(); telefónica SDK Android protected void onPause(); MVC protected void onStop(); Primeros Pasos Views y Eventos protected void onDestroy(); Adaptadores } Intents y Bundles Ejecurión y Depuración Información detallada del contacto 3 Librerías
  • 4.
    Ciclo de vida Primera vez Cuando es visible Introducción a Android Asignación de memoria Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo Otra actividad en primer plano SDK Android MVC Primeros Pasos Cuando se oculta Views y Eventos Adaptadores Intents y Bundles Finaliza Ejecurión y Depuración 4 Librerías
  • 5.
    Services y BroadcastReceivers • Services • No tiene interfaz gráfica • Puede ejecutarse en background (= demonio Linux) Capturar datos acelerómetro Capturar posición GPS Introducción a Android Elementos • Broadcast receivers Ciclo de vida: Activity Patrones de diseño • No tienen interfaz gráfica Desarrollo con Android • Detecta y reacciona ante mensajes o eventos del Entorno de trabajo SDK Android sistema  Notificaciones broadcast. MVC Primeros Pasos Views y Eventos Batería Baja Llamada Tarjeta SD Cambio zona horaria Otras aplicaciones Adaptadores Intents y Bundles Ejecurión y Depuración 5 Librerías
  • 6.
    Intents y Views • Intents • Elemento básico de comunicación • Variables/objetos entre componentes • Definen “qué se debe hacer” Iniciar un servicio Mostrar una actividad desde otra Enviar mensaje broadcast Iniciar otra aplicación Introducción a Android Elementos Ciclo de vida: Activity • Views Patrones de diseño Desarrollo con Android • Componentes básicos para la construcción de la UI Entorno de trabajo SDK Android • Análogo a los controles de Java o .NET MVC Primeros Pasos Listas Cuadros de Barras de Views y Eventos Botones Imágenes desplegables texto desplazamiento Adaptadores Intents y Bundles Ejecurión y Depuración 6 Librerías
  • 7.
    Content Providers yWidgets • Content providers Agenda del sistema • Mecanismos para compartir datos entre aplicaciones. • Podemos acceder a datos de otras aplicaciones Mi Agenda Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño • Widgets Desarrollo con Android Entorno de trabajo • Elementos visuales e SDK Android MVC interactivos Primeros Pasos • Se muestran en la pantalla Views y Eventos Adaptadores principal del terminal Intents y Bundles Ejecurión y Depuración 7 Librerías
  • 8.
    Fragmentos • Y a partir de Android 3.0 ¡Fragments! • Solución a la “fragmentación mala”. Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Más de 4000 dispositivos Android: “muchas resoluciones, muchos tamaños” Argh!! Intents y Bundles Ejecurión y Depuración 8 Librerías
  • 9.
    Fragmentos • ¿Qué supone? • En aplicaciones antiguas: •  Uso de librerías de apoyo a la compatibilidad (support libraries). •  Reescritura de clases • En aplicaciones nuevas: Introducción a Android •  Versatilidad: Misma app compatible para cualquier Elementos dispositivo. Ciclo de vida: Activity Patrones de diseño •  Aumentar la importancia del diseño de las Desarrollo con Android actividades.  Más difícil diseñar una buena app. Entorno de trabajo SDK Android •  Reutilización de fragmentos. MVC • Cambian “un poco” aspectos iniciales de las actividades. Primeros Pasos Views y Eventos Adaptadores Actividades compuestas por componentes vs Actividades compuestas por fragmentos Intents y Bundles Ejecurión y Depuración 9 Librerías
  • 10.
    Patrones de Diseño • Objetivo • Unificar y mejorar la apariencia de la interfaz gráfica • http://www.androidpatterns.com/ , listas, pestañas, menús, etc. Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración “No es una obligación, pero sí una recomendación” 10 Librerías
  • 11.
    Barras de acción • Action Bar • Similar a una barra de tareas • Permite agrupar acciones • De acceso intuitivo y rápido Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 11 Librerías
  • 12.
    Ejemplo: Comparación (I) • Misma Aplicación, diferentes dispositivos Galaxy S Fragmentos Actividad Introducción a Android Elementos Ciclo de vida: Activity Posibles transiciones Patrones de diseño Galaxy tab 10” Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 12 Librerías
  • 13.
    Ejemplo: Comparación (II) • Misma Aplicación, mismo dispositivo, diferente orientación Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Más trabajo de diseño, pero… Primeros Pasos • ¡Reutilizamos código! Views y Eventos • ¡La aplicación se adapta a cualquier dispositivo Android! Adaptadores Intents y Bundles Ejecurión y Depuración 13 Librerías
  • 14.
    Desarrollo con Android • ¿Qué necesitamos? Librerías Emulador DVM Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 14 Librerías
  • 15.
    SDK ANDROID (sobreEclipse) 1. Instalar Eclipse 2. Instalar SDK Android http://developer.android.com/sdk/index.html • Instalar las librerías necesarias 3. Añadir un AVD – SDK Manager • Tools > Manage AVDs > New • Definir características y crear Introducción a Android 4. Configurar Plugin ADT - Eclipse Elementos Ciclo de vida: Activity • Help > Install New Software Patrones de diseño • Introducir url proveedor: https://dl-ssl.google.com/android/eclipse/ Desarrollo con Android Entorno de trabajo 5. ¡Ya podemos crear nuestro primer proyecto! SDK Android MVC Primeros Pasos También se puede instalar en otros IDEs - Netbeans (ver Android Basics v.1) Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 15 Librerías
  • 16.
    Modelo Vista Controlador • La separación de lógica e interfaz favorece la aplicación del patrón Modelo-Vista-Controlador (MVC) -Responsable de eventos - Lógica tras la interacción del usuario Controlador Introducción a Android Elementos Ciclo de vida: Activity -Representación de la Patrones de diseño información - Interfaz de usuario Desarrollo con Android Entorno de trabajo SDK Android Vista Modelo MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 16 Librerías
  • 17.
    Primeros Pasos 1. New Project > Android Application Project 2. Definir las propiedades iniciales de la App • Nombre • SDK desarrollo • Mínimo SDK requerido • Icono de aplicación • Actividad inicial (opcional) Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 17 Librerías
  • 18.
    ¿Qué es todoesto? Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 18 Librerías
  • 19.
    Estructura de directorios • /src – Clases java y archivo R.java • R.java: Autogenerado por Android (vbles. sistema) • /res/drawable – Imágenes de la aplicación y recursos XML • Posibles subdirectorios • /res/layout – Vistas de la aplicación en XML • Posibles subdirectorios • /res/values – Archivos XML con las variables de la Introducción a Android aplicación Elementos • Libraries – El IDE referencia al SDK de Android Ciclo de vida: Activity • AndroidManifest.xml – Archivo de manifiesto Patrones de diseño • Define todas las actividades, servicios,… Desarrollo con Android Entorno de trabajo • Define la configuración del proyecto SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 19 Librerías
  • 20.
    Ejemplo de Manifiesto Introduccióna Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 20 Librerías
  • 21.
    Vista de diseño Jerarquía Layouts- Componentes Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views/Componentes Área de trabajo Propiedades Componente selección Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 21 Librerías
  • 22.
    Layouts (I) • Layouts. Distribución de componentes en pantalla <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:text="Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="Button02" android:id="@+id/Button02" android:layout_width="wrap_content" Linear Layout android:layout_height="wrap_content" /> Introducción a Android </LinearLayout> Elementos <?xml version="1.0" encoding="utf-8"?> Ciclo de vida: Activity <TableLayout android:id="@+id/TableLayout01" Patrones de diseño android:layout_width="fill_parent" android:layout_height="fill_parent“ xmlns:android="http://schemas.android.com/apk/res/android"> Desarrollo con Android Entorno de trabajo <TableRow android:id="@+id/TableRow01"> SDK Android <TextView android:id="@+id/TextView01" android:text="First Name:" android:width="100px" /> MVC <EditText android:id="@+id/EditText01" android:width="220px" /> Primeros Pasos … <TableRow android:id="@+id/TableRow03"> Views y Eventos <Button android:id="@+id/Button01“ … Adaptadores android:layout_height="wrap_content" android:text="Submit" /> Intents y Bundles <Button android:id="@+id/Button02" android:layout_ Table Layout width="wrap_content" android:layout_... Ejecurión y Depuración </TableRow> 22 Librerías </TableLayout>
  • 23.
    Layouts (II) <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent“ android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/TextView01 … /> <EditText android:id="@+id/EditText01" android:layout_width="220px“ … android:layout_toRightOf="@+id/TextView01" android:layout_below="@+id/RelativeLayout01" /> <EditText android:id="@+id/EditText02" … android:layout_below="@+id/EditText01" android:layout_alignLeft="@+id/EditText01" /> <TextView android:id="@+id/TextView02" android:layout_width=… Relative Layout <Button android:text="Submit" android:id="@+id/Button01” … android:layout_below="@id/EditText02" android:layout_alignLeft="@id/EditText02" /> <Button android:text="Reset" android:id="@+id/Button02“ … Introducción a Android android:layout_below="@id/EditText02" android:layout_alignRight="@id/EditText02" /> Elementos </RelativeLayout> Ciclo de vida: Activity Patrones de diseño <?xml version="1.0" encoding="utf-8"?> Desarrollo con Android <AbsoluteLayout android:id="@+id/AbsoluteLayout01" Entorno de trabajo android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> SDK Android MVC <EditText android:id="@+id/EditText01" android:layout_width="200px" Primeros Pasos android:layout_height="wrap_content" android:layout_x="12px" android:layout_y="12px" /> Views y Eventos <Button android:text="Search" android:id="@+id/Button01" android:layout_width="100px" Adaptadores android:layout_height="wrap_content" android:layout_x="220px" android:layout_y="12px" /> </AbsoluteLayout> Intents y Bundles Ejecurión y Depuración Absolute Layout 23 Librerías
  • 24.
    Layouts (III) <?xml version="1.0" encoding="utf-8"?> <FrameLayout android:id="@+id/FrameLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:id="@+id/ImageView01" android:src="@drawable/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="center" /> <TextView android:text="Android Partaker" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dip" android:layout_gravity="center_horizontal|bottom" android:padding="10dip" android:textColor="#AA0000" android:textStyle="bold" android:textSize="20px" android:background="#00000000" /> </FrameLayout> Frame Layout Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Source: http://androidpartaker.wordpress.com/2010/07/03/introduction-to-android-ui-layouts/ Intents y Bundles Ejecurión y Depuración 24 Librerías
  • 25.
    Vistas Actividad Introducción aAndroid Elementos MainActivity.java Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 25 Librerías
  • 26.
    Fragmento en Actividad Fragmento.java Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 26 Librerías
  • 27.
    Procedural vs Declarativo • Ejemplo: Programación de un componente Archivo Java Archivo XML TextView tv= new TextView(this) <TextView tv.setWidth(100); android:id="@+id/nameLabel" tv.setHeight(60); android:text="phone:" tv.setText("phone"); android:layout_width="100" setContentView(tv); android:layout_height="60"/> Introducción a Android Elementos Ciclo de vida: Activity • Vale, entonces… ¿Cómo lo hago?  Depende Patrones de diseño Desarrollo con Android • Recomendación: Declarar XML siempre que se pueda Entorno de trabajo • ¡En layouts siempre! SDK Android MVC Primeros Pasos Views y Eventos ¿Seguimos con algo de programación? Adaptadores Intents y Bundles Ejecurión y Depuración 27 Librerías
  • 28.
    Eventos sobre componentes(I) Views Introducción a Android Elementos Eventos Ciclo de vida: Activity Patrones de diseño • Handlers Desarrollo con Android Entorno de trabajo • Maneja eventos de entrada sin importar dónde está el foco. SDK Android • No están necesariamente asociados a un view. MVC Primeros Pasos • Botón atrás, tocar pantalla,… Views y Eventos • Listeners Adaptadores Intents y Bundles • Maneja eventos generados por un view o viewgroup. Ejecurión y Depuración 28 Librerías
  • 29.
    Eventos sobre componentes(II) • Button Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos “Android recomienda que la actividad Adaptadores implemente la interfaz onXXXListener en Intents y Bundles lugar de usar clases anónimas” Ejecurión y Depuración 29 Librerías
  • 30.
    Eventos sobre componentes(III) • EditText Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 30 Librerías
  • 31.
    Eventos sobre componentes(IV) • ImageView Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 31 Librerías
  • 32.
    Eventos sobre componentes(V) • CheckBox Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 32 Librerías
  • 33.
    Eventos sobre componentes(VI) • Más Eventos • onLongClick, onFocusChange, onTouch, onKeyDown, onKeyUp,… • Más Componentes • Texto  TextView, AutocompleteTextView,… • Botón  ImageButton, TogleButton, RadioButton,… • Vistas compuestas  ExpandableListView, … • Barras  ProgressBar, SeekBar, RatinBar,… Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño ListItem Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles ¿Cómo lleno Ejecurión y Depuración la lista? 33 Librerías
  • 34.
    Adaptadores (I) • ¿Qué es? • Objeto que proporciona una interfaz común para cada modelo de datos detrás de un control de selección. • Tipos • ListAdapter • ArrayAdapter Introducción a Android • SpinnerAdapter Elementos Ciclo de vida: Activity • SimpleCursorAdapter Patrones de diseño Desarrollo con Android • CustomAdapters Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 34 Librerías
  • 35.
    Adaptadores (II) • Ejemplo <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="comidas"> <item>Salchichas</item> <item>Huevos</item> <item>Tomates</item> </string-array> //Creamos el adaptador </resources> ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.comidas,android.R.layout.simple_spinner_item); Introducción a Android //Añadimos el layout para el menú Elementos adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Ciclo de vida: Activity //Le indicamos al spinner el adaptador a usar Patrones de diseño prueba.setAdapter(adapter); Desarrollo con Android Entorno de trabajo SDK Android ¡Los datos no tienen porque proceder de recursos estáticos! MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 35 Librerías
  • 36.
    Eventos sobre elementosHw • Interfaz SensorEventListener Recuperamos el sensor mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); List<Sensor> listSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); Método onSensorChanged() • Sensores Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración http://developer.android.com/reference/android/hardware/Sensor.html 36 Librerías
  • 37.
    Más sobre Actividadesy Fragmentos • Tipos de Actividades y Fragmentos • ListActivity  Diseñada especialmente para trabajar con ListViews. • ListFragment  Idem. • Alguna más: TabActivity. • ¡Los fragmentos se “inflan” dentro de las actividades! View view = inflater.inflate(R.layout.fragment_edit_name, container); • Intents Introducción a Android • Objetos utilizados para enviar mensajes asíncronos dentro de una Elementos aplicación o entre varias aplicaciones. Ciclo de vida: Activity Patrones de diseño • Posibilitan la transición entre actividades. Desarrollo con Android • Permiten la comunicación entre componentes. Entorno de trabajo SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración http://androideity.com/2011/10/17/trabajando-con-intents-en-android-overview/ 37 Librerías
  • 38.
    Intents y Bundles(I) • Bundle • Contenedor para agrupar los datos. • Pueden ser usados conjuntamente con Intents. • Ejemplo Intent Intent intent = new Intent(); intent.setClass(getActivity(), NuevaActividad.class); intent.putExtra("identificador", id); Introducción a Android intent.putExtra("nombre", nombre); Elementos Ciclo de vida: Activity startActivity(intent); Patrones de diseño Desarrollo con Android identificador Entorno de trabajo nombre SDK Android MVC Actividad 1 Actividad 2 Primeros Pasos Views y Eventos Adaptadores String id = getActivity().getIntent().getStringExtra("identificador"); Intents y Bundles String nombre = getActivity().getIntent().getStringExtra("nombre"); Ejecurión y Depuración 38 Librerías
  • 39.
    Intents y Bundles(II) • Ejemplo Bundle Bundle b=new Bundle(); Bundle extras = intent.getExtras(); b.putString("myname", nombre); String key = extras.getString("mynkey"); ¡también podemos pasar objetos! Introducción a Android Serializable Parcelable Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android • ¡Hay mucho más!  Evolución constante Entorno de trabajo • Nuevos firmwares SDK Android MVC • Nuevas funciones Primeros Pasos Views y Eventos Adaptadores ¡Esto sólo ha sido el comienzo de una ¿gran? amistad! Intents y Bundles Ejecurión y Depuración 39 Librerías
  • 40.
    Ejecución de aplicaciones Dispositivos conectados Poner en modo depuracion Emuladores Introducción a Android Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo SDK Android Dalvik Virtual Machine (DVM) MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles !NO OLVIDES LA DEPURACIÓN! Ejecurión y Depuración 40 Librerías
  • 41.
    Uso de Librerías • Hay librerías para todo y para todos • Almacenamiento de datos (SQLite) • Bibliotecas de medios • Bibliotecas gráficas (2D y 3D –OpenGL) • Servicios Web (Ksoap) • Mapas (API Google Maps) Introducción a Android • …¡y muchas más! Elementos Ciclo de vida: Activity Patrones de diseño Desarrollo con Android Entorno de trabajo REFERENCIA: http://developer.android.com/index.html SDK Android MVC Primeros Pasos Views y Eventos Adaptadores Intents y Bundles Ejecurión y Depuración 41 Librerías
  • 42.
    Android Quick StartV2.0 Jesús Fontecha Diezma 42