SlideShare una empresa de Scribd logo
1
University of Castilla-La Mancha, Spain
MAmI Research Lab
Android Basics v3
Jesús Fontecha Diezma
http://www.jesusfontecha.name
Contenido
• Generalidades
• Fragmentación
• Actividades y componentes
• Estandarización y diseño
• Desarrollo
– Introducción
– IDEs
– El archivo manifiesto
– Creando un proyecto
– Layouts
– Views
– Acceso a los recursos
– Eventos
– Intents y Bundles
– Ejecución y depuración
• Una aplicación de ejemplo
• Firma de aplicaciones
• Uso de librerías y más
2
Generalidades
3
4
http://www.jesusfontecha.name
5
http://www.jesusfontecha.name
6
http://www.jesusfontecha.name
• Versiones firmware y cuotas de mercado
Source: International Data Corporation
(http://www.idc.com/getdoc.jsp?containerId=prUS25450615)
Source: Android developer
(http://developer.android.com/about/dashboards/index.html)
Próximamente…
7
http://www.jesusfontecha.name
• Dispositivos. Resoluciones y tamaños
Source: Android developer
(http://developer.android.com/about/dashboards/index.html)
¡Fragmentación!
Problema:
Fragmentación
8
9
http://www.jesusfontecha.name
24.093 dispositivos distintos
1.294 fabricantes (Samsung -> 37,8%)
Source: Andro4all
(http://andro4all.com/2015/08/android-fragmentacion-2015)
10
http://www.jesusfontecha.name
• Soluciones
• Fabricantes: Sistema de actualizaciones regulares
• Desarrolladores: Uso de fragmentación
• Aún por resolver…
¿Qué son?
Sección modular de una actividad
• Tiene su propio ciclo de vida
• Recibe sus propios eventos de entrada
• Puede construirse y destruirse en ejecución
• “como una subactividad que puedes reutilizar en distintas actividades”
Principio: Todas las aplicaciones Android deberían funcionar en todos los dispositivos Android
¿Actividad?
Actividades y componentes
11
12
• Actividades (activities)
• El más importante
• Representa una pantalla individual
• Incluye fragmentos y vistas
Componentes de una aplicación Android
• Servicios (services)
• Se ejecutan en segundo plano
• Realizan acciones incluso cuando
las actividades no están visibles
• Proveedores de contenido (content
providers)
• Representan almacenes de datos
compartidos entre aplicaciones
• Gestionan las BBDD de las aplicaciones
• Receptores broadcast (broadcast receivers)
• Creados por aplicaciones que consumen
broadcast intents.
• Intenciones (intents)
• Permiten el paso de información
entre actividades y servicios o al
todo el sistema (broadcast intents)
• Definen “qué se hace”
• Notificaciones (notifications)
• Referente a las notificaciones
del sistema que no
interrumpen la actividad
• Se pueden ver como un tipo
de servicios
• Vistas
• Componentes básicos de la interfaz gráfica
• Análogo a los controles de Java o .NET
http://www.jesusfontecha.name
13
• Actividad y Content Provider
Agenda
telefónica
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
Información detallada del contacto
Listado de nombres y teléfonos
Ejemplos de componentes
Content provider
http://developer.android.com/guide/components/index.html
http://www.jesusfontecha.name
14
Ejemplo de componentes
• Servicios
Capturar posición GPSCapturar datos acelerómetro
• Broadcast receivers
Batería Baja Llamada Cambio zona horariaTarjeta SD Otras aplicaciones
• Intents
Mostrar una actividad desde otra Iniciar un servicioEnviar mensaje broadcast Iniciar otra aplicación
Cuadros de texto BotonesListas desplegables ImágenesBarras de desplazamiento
• Vistas
• Widgets
• Elementos visuales e interactivos
• Se muestran en la pantalla principal del terminal
http://developer.android.com/guide/components/index.html
http://www.jesusfontecha.name
15
Cuando es visible
Primera vez
Cuando se oculta
Asignación de memoria
Finaliza
Otra actividad en primer plano
Ciclo de vida/estados de una actividad
• Clases que extienden de Activity
http://www.jesusfontecha.name
16
Métodos de transición entre estados
• onCreate(Bundle)
• Invocado cuando la actividad arranca por primera vez
• Utilizado para tareas de inicialización como crear la interfaz de usuario de la actividad
• onStart()
• Invocado cuando la actividad va a ser mostrada al usuario
• onResume()
• Invocar cuando la actividad va a empezar a interactuar con el usuario
• onPause()
• Invocado cuando la actividad pasa a segundo plano porque otra actividad es lanzada con mayor
prioridad
• onStop()
• Invocado cuando la actividad deja de ser visible y no se necesitará durante un tiempo
• onRestart()
• Invocado cuando la actividad sale del estado de parada y entra en estado activo
• onDestroy()
• Se invoca cuando la actividad pasa a ser destruida
• onSaveInstanceState(Bundle)
• Permite a la actividad guardar su estado (ej: los valores introducidos en un campo de texto)
• No necesita ser redefinido porque la clase Activity ya guarda todo el estado de por sí.
• onRestoreInstanceState(Bundle)
• Recupera el estado guardado por el método anterior
• Al igual que antes, no necesita ser redefinido
http://www.jesusfontecha.name
17
• Misma Aplicación, diferentes dispositivos
Galaxy tab 10”
Galaxy S
Actividad
Fragmentos
Posibles transiciones
Fragmentos
http://www.jesusfontecha.name
18
• ¿Qué suponen?
• En aplicaciones antiguas:
•  Uso de librerías de apoyo a la compatibilidad (support
libraries).
•  Reescritura de clases
• En aplicaciones nuevas:
•  Versatilidad: Misma app compatible para cualquier dispositivo.
•  Aumentar la importancia del diseño de las actividades. 
Más difícil diseñar una buena app.
•  Reutilización de fragmentos.
• Cambian “un poco” aspectos iniciales de las actividades.
Actividades compuestas por componentes vs Actividades compuestas por fragmentos
Ventajas e inconvenientes de los fragmentos
http://www.jesusfontecha.name
Estandarización y diseño
19
20
• Patrones de diseño
• Unificar y mejorar la apariencia de la interfaz gráfica
, listas, pestañas, menús, etc.
“No es una obligación, pero sí una recomendación”
(en ciertos casos necesaria para poder publicar la app)
Hacia la estandarización de aplicaciones
http://www.jesusfontecha.name
21
• Action Bars
• Similar a una barra de tareas
• Permite agrupar acciones
• De acceso intuitivo y rápido
Hacia la estandarización de aplicaciones
• Estilos y Temas
• http://developer.android.com/guide/topics/ui/themes.html
http://www.jesusfontecha.name
22
• Patrones de interacción
Hacia la estandarización de aplicaciones
http://www.jesusfontecha.name
Source: http://unitid.nl/androidpatterns/
• Soporte para el diseño de componentes
• Unificación y estandarización en el diseño
• Establecimiento del comportamiento de componentes
Operaciones
Desarrollo - Introducción
23
24
• ¿Qué necesitamos?
DVM
Librerías
Emulador
Desarrollo de aplicaciones Android
http://www.jesusfontecha.name
25
• La separación de lógica e interfaz favorece la aplicación del patrón Modelo-
Vista-Controlador (MVC)
• Existen diferentes perspectivas de la arquitectura
Arquitectura Modelo Vista Controlador
http://www.jesusfontecha.name
- Interfaz de usuario -Representación de la
información
-Responsable de eventos
- Lógica tras la interacción del usuario
User
26
Consideraciones previas
• Actividades
• Las aplicaciones Android están formadas por actividades
• Todas las actividades de nuestra aplicación y de otras se
van almacenando en la pila de actividades
• Procesos
• Las aplicaciones no tienen control sobre su ciclo de vida
• Android puede matar sin avisar a los procesos que
considera innecesarios para mantener al sistema estable
• Vistas
• Las interfaces de usuario de una actividad se crean
mediante vistas (views)
• Las vistas se agrupan en diseños (layouts) que muestra la
aplicación
http://www.jesusfontecha.name
27
3. Añadir un AVD – SDK Manager
• Tools > Manage AVDs > New
• Definir características y crear
4. Configurar Plugin ADT - Eclipse
• Help > Install New Software
• Introducir url proveedor: https://dl-ssl.google.com/android/eclipse/
O… descargar el bundle
Instalación del SDK y primeros pasos
http://www.jesusfontecha.name
1. Instalar Eclipse
2. Instalar SDK Android
http://developer.android.com/sdk/index.html
• Instalar las librerías necesarias
• Eclipse
• Android Studio
1. Instalar Android Studio
http://developer.android.com/sdk/index.html
¡Contienen el SDK completo!
Desarrollo - IDEs
28
29
Vista del entorno de desarrollo - Eclipse
http://www.jesusfontecha.name
30
Vista del entorno de desarrollo – Android Studio
http://www.jesusfontecha.name
31
• Código:
• /java – Paquetes y clases java
• Recursos:
• /res/drawable – Imágenes de la aplicación
• /res/layout – Vistas y diseños de la aplicación
• /res/menu – Menús de la aplicación
• /res/mipmap – Iconos de la aplicación
• /res/values – Estilos (colores, dimensiones) y variables de
la aplicación
• Otros:
• /res/xml – Varios
• /res/anim – Animaciones
• Manifiesto:
• /manifests – Archivo de manifiesto de la aplicación
• Gradle Scripts – Usado para temas de compilación
Estructura de directorios
http://www.jesusfontecha.name
32
Views/Componentes Área de trabajo
Jerarquía Layouts-Componentes
Propiedades Componente selección
Detalles vista de diseño IDE
http://www.jesusfontecha.name
Desarrollo – El archivo manifiesto
33
34
El archivo de manifiesto
http://www.jesusfontecha.name
• Contiene información esencial de la
aplicación
• Describe los componentes de la
aplicación
• Actividades, servicios, receivers,
content providers,…
• Declara los permisos de la aplicación
• Permite definir tests de ejecución de
actividades y servicios.
• Declara el firmware mínimo compatible
para el funcionamiento de la app.
• Lista las liberías externas de la
aplicación que deben ser llamadas
Source: http://developer.android.com/guide/topics/manifest/manifest-intro.html
Desarrollo – Creando un proyecto
35
36
Creando un proyecto – Android Studio
http://www.jesusfontecha.name
• File -> New project
Paso 1. Datos aplicación
37
Creando un proyecto – Android Studio
http://www.jesusfontecha.name
Paso 2. Plataforma de ejecución
38
Creando un proyecto – Android Studio
http://www.jesusfontecha.name
Paso 3. Actividad principal
39
Creando un proyecto – Android Studio
http://www.jesusfontecha.name
Paso 4. Datos actividad principal
40
Creando un proyecto – Android Studio
http://www.jesusfontecha.name
• Se crea la estructura de directorios y el archivo de manifiesto
• Se crea el código java de la actividad principal
• Se crea el código xml de la actividad principal
¡Layouts!
Desarrollo - Layouts
41
42
• Contenedor que permite la 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"
android:layout_height="wrap_content" />
</LinearLayout>
Layouts
http://www.jesusfontecha.name
…
Web view
43
• Estáticos
• Diseñados en tiempo de programación (xml) -> programación declarativa
• Dinámicos
• Diseñados en tiempo de ejecución (java) -> programación procedural
Layouts estáticos vs. dinámicos
http://www.jesusfontecha.name
Archivo Java
TextView tv= new TextView(this)
tv.setWidth(100);
tv.setHeight(60);
tv.setText("phone");
setContentView(tv);
Archivo XML
<TextView
android:id="@+id/nameLabel"
android:text="phone:"
android:layout_width="100"
android:layout_height="60"/>
• Vale, entonces… ¿Cómo lo hago?  Depende
• Recomendación: Declarar XML siempre que se pueda
• Aún dejándolos “vacíos” (ya se “rellenarán” en tiempo de ejecución)
44
• Layout dinámico
• Su contenido se crea en tiempo de ejecución
• Se usan adaptadores
• Adaptador
• Son colecciones de datos asignados a una vista para que
sean mostrados.
• Se rellenan dinámicamente de recursos estáticos (xml) o
externos (BBDD, Servicios web, smart devices,…)
• Se usan por medio de un AdapterView
• Ejemplos:
• ArrayAdapter -> el origen de datos es un array
• SimpleCursorAdapter -> el origen de datos es un
cursor
• Los adaptadores también pueden poblar vistas en layouts
estáticos
Layouts dinámicos y adaptadores
http://www.jesusfontecha.name
Grid View
List View
Source: Android developer
http://developer.android.com/guide/topics/ui/declaring-layout.html
Desarrollo – Views
45
46
• En la vista de diseño se pueden añadir views a la actividad
• Arrastrar y soltar
• Código xml generado
Añadiendo views a la actividad desde el IDE
http://www.jesusfontecha.name
Paleta Views
• Vista de propiedades del view
seleccionado
• Tamaño, color, posición, id,…
• Árbol de vistas jerárquico
• Muestran la jeraquía de layouts y
componentes
• Vista textual (descripción xml)
47
• Todos los layouts y vistas pueden ser programados
(java)
• También los eventos asociados a esos
componentes
Añadiendo código a la actividad
http://www.jesusfontecha.name
Source: Hermosa programación
http://www.hermosaprogramacion.com/2014/09/android-layouts-views/
Acceso a componentes (recursos)
Programación eventos
48
• Se usa el método inflate()
• El método setContentView() de
Activity usa un inflado implícito
• Inflar es instanciar un fichero
de diseño XML y añadirlo a una
jerarquía de vistas
• Es un concepto difícil de
entender al principio
• Permite introducir una
estructura de Views en nuestra
jerarquía en tiempo de
ejecución
• Se pueden inflar actividades,
fragmentos y views
Inflado de layouts y views
http://www.jesusfontecha.name
Source: Mhjaso Blog
http://www.mhjaso.com/blog/inflater/
Desarrollo – Acceso a los recursos
49
50
• Clase generada automáticamente
• Identifica todos los componentes de las
actividades de forma unívoca
• Mediante variables estáticas
• Permite acceder a los componentes y
sus propiedades
• Constituye una referencia directa a los
recursos de la aplicación
La clase R
http://www.jesusfontecha.name
Source: Arquitectura Java
http://www.arquitecturajava.com/android-r-java/
51
• En la carpeta /res se almacenan todos los recursos
de la aplicación
• Todos los recursos tienen un nombre y un valor
Ficheros de recursos y acceso
http://www.jesusfontecha.name
Source: Arquitectura Java
http://www.arquitecturajava.com/android-r-java/
• Acceso a un recurso y modificación de una de sus propiedades:
• Desde el código java
• Utilizando la clase R
1. Localizamos el componente TextView
identificado como texto 1
2. Modificamos el texto del componente
Desarrollo - Eventos
52
53
Eventos sobre componentes
http://www.jesusfontecha.name
• Android captura los eventos y se los pasa a la clase encargada (objeto tipo View)
• Dos alternativas
• Escuchador de eventos (Listener)
• Interfaz de la clase View que contiene un método callback a ser
registrado
• El método callback es llamado por Android cuando ocurre la acción
• Maneja eventos generados por un view
• Manejador de eventos (Handler)
• Si creamos un descendiente de la clase View, podemos usar varios
callbacks
• Maneja eventos de entrada sin importar dónde está el foco. No
necesariamente asociados a un View (botón atrás,…)
54
Listado de eventos
http://www.jesusfontecha.name
onClick()
Método de la interfaz View.OnClickListener. Se llama
cuando el usuario selecciona un elemento. Se puede
utilizar cualquier medio como la pantalla táctil, las
teclas de navegación o eltrackball.
onLongClick()
Método de la interfaz View.OnLongClickListener. Se
llama cuando el usuario selecciona un elemento
durante más de un segundo.
onFocusChange()
Método de la interfaz View.OnFocusChangeListener. Se
llama cuando el usuario navega dentro o fuera de un
elemento.
onKey()
Método de la interfaz View.OnKeyListener. Se llama
cuando se pulsa o se suelta una tecla del dispositivo.
onTouch()
Método de la interfaz View.OnTouchListener. Se llama
cuando se pulsa o se suelta o se desplaza en la pantalla
táctil.
onCreateContextMenu()
Método de la
interfaz View.OnCreateContextMenuListener. Se llama
cuando se crea un menú de contexto.
onKeyDown(int keyCode, KeyEvent e)
Llamado cuando una tecla es pulsada.
onKeyUp(int keyCode, KeyEvent e)
Cuando una tecla deja de ser pulsada.
onTrackballEvent(MotionEvent me)
Llamado cuando se mueve el trackball.
onTouchEvent(MotionEvent me)
Cuando se pulsa en la pantalla táctil.
onFocusChanged(boolean obtengoFoco, int direccion
, Rect prevRectanguloFoco)
Llamado cuando cambia el foco.
Escuchadores de eventos (Listeners) Manejadores de eventos (Handlers)
protected void onCreate(Bundle savedValues) {
...
Button boton = (Button)findViewById(R.id.boton);
boton.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
// Acciones a realizar
}
});
...
}
Ejemplo
Source: Android curso
(http://www.androidcurso.com/index.php/tutoriales-android/36-
unidad-5-entradas-en-android-teclado-pantalla-tactil-y-
sensores/144-manejo-de-eventos-de-usuario)
55
• Button
Ejemplos de eventos
http://www.jesusfontecha.name
56
Ejemplos de eventos
• EditText
http://www.jesusfontecha.name
57
Ejemplos de eventos
• ImageView
http://www.jesusfontecha.name
58
Ejemplos de eventos
• CheckBox
http://www.jesusfontecha.name
59
• Otros Componentes
• Texto  TextView, AutocompleteTextView,…
• Botón  ImageButton, TogleButton, RadioButton,…
• Vistas compuestas  ExpandableListView, …
• Barras  ProgressBar, SeekBar, RatinBar,…
• Menús
• ¡Controles compuestos!
ListItem
¿Cómo lleno la lista?
Más eventos y componentes
http://www.jesusfontecha.name
List View
¡Adaptadores!
60
• Interfaz SensorEventListener
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> listSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
Recuperamos el sensor
onSensorChanged()
Método
Eventos sobre elementos hardware
http://www.jesusfontecha.name
Source: Android developer
(http://developer.android.com/guide/topics/sensors/sensors_overview.html)
Desarrollo – Intents y Bundles
61
62
• Intent
• Objeto de comunicación utilizado para enviar mensajes asíncronos dentro de
una aplicación o entre varias aplicaciones.
• Posibilitan la transición entre actividades.
• Permiten iniciar un servicio, iniciar otra aplicación (cambio de contexto),...
Intents
http://www.jesusfontecha.name
Source: Aprende android
(http://www.aprendeandroid.com/l3/fundamentos3.htm)
String nombre = getActivity().getIntent().getStringExtra(“Nombre");
Recuperar información del intent:
63
• Bundle
• Contenedor para agrupar los datos (clave, valor)
• Pueden ser usados conjuntamente con intents
• Permiten también pasar objetos entre actividades
• Parte del intent encargada de encapsular y pasar objetos.
Bundles
http://www.jesusfontecha.name
Bundle extras = getIntent().getExtras();
String key = extras.getString("mynkey");
Bundle b=new Bundle();
b.putString("myname", nombre);
Desarrollo – Ejecución y depuración
64
65
Depuración y ejecución de aplicaciones
• Como desarrollador, existen dos opciones para depurar y ejecutar aplicaciones Android:
• Utilizando el emulador del SDK
• Utilizando un dispositivo real conectado vía USB
• Pasos para utilizar un dispositivo real:
1. Activar el modo depuración USB en el dispositivo (ajustes)
• La ubicación para este proceso depende de la versión Android
http://www.jesusfontecha.name
66
Depuración y ejecución de aplicaciones
2. Conectar el dispositivo vía USB al PC
3. En el IDE, al pulsar “Ejecutar cómo” o “Depurar cómo”, aparece automáticamente
la ventana para selección de dispositivo (o emulador)
4. El apk se instalará y desplegará en el dispositivo.
Dispositivos conectados
Emuladores
http://www.jesusfontecha.name
Captura de pantalla Eclipse IDE
67
Emulador vs. Dispositivo real
• El SDK Manager tiene su propio
emulador
• Lento
• No emula todo (e.j.
determinados sensores)
• Interesante para emular en
distintas versiones Android
http://www.jesusfontecha.name
• El dispositivo real conectado
al PC
• Más rápido
• Permite ver el
comportamiento real
La ejecución/depuración no instala la versión final de
la aplicación en el dispositivo
68
Depuración de aplicaciones
• ¡Que la aplicación compile no significa que funcione!
http://www.jesusfontecha.name
• El IDE es una potente herramienta de
depuración
• Depurar no es poner “print()” y mensajes
en pantalla
• Depurar es analizar el código sentencia a
sentencia con ayuda de la herramienta,
observando los cambios que se producen
(métodos, variables,…)
¿De dónde viene el error?
69
Depuración de aplicaciones
• Agregar puntos de ruptura al código
• En sentencias clave o sospechosas de error
http://www.jesusfontecha.name
• Iniciar la depuración
• Depurar paso a paso o “saltándose” bloques de código
• Podemos ir sentencia a sentencia (step into)
• No interesarnos depurar el interior de algunos métodos (step over)
• Continuar hasta el siguiente punto de ruptura (play)
• Depurar no es poner “print()” y mensajes en pantalla
• Depurar es analizar el código con ayuda de la herramienta, observando los
cambios que se producen (métodos, variables,…)
• Útil: observar los valores que toman las variables y en qué punto
• Ventana Logcat: Comportamiento del sistema (excepciones, errores,
interacciones,…)
Una aplicación de ejemplo
70
71
Ejemplo de aplicación Android
http://www.sgoliver.net/blog/?p=1316
• Crear el proyecto Android con una actividad en blanco.
• Modificar el layout de la actividad para que contenga un TextView, un EditText y un
Button.
• Desde el diseñador visual
• Desde el xml de la actividad
72
Ejemplo de aplicación Android
• Dar el texto “Escribe tu nombre” al TextView
• Usar las propiedades del componente
• Pero antes… declarar el texto como un string en los recursos
• Crear una segunda actividad
llamada FrmSaludo que
contendrá el saludo
• El layout de esta actividad
contendrá un TextView
• ¡Comprobar que se definen las
actividades en el manifiesto!
• Favorece el aislar mensajes y nombres de variables del código
• Útil cuando se desea traducir la app a varios idiomas
73
Ejemplo de aplicación Android
• Programamos la parte Java en la actividad principal para:
• Obtener las referencias de los controles de la interfaz
• Crear un bundle que almacene el nombre introducido en el campo de texto
• Realizar la transición desde la actividad principal hacia la actividad FrmSaludo
74
Ejemplo de aplicación Android
• Programamos la parte Java en la actividad FrmSaludo para:
• Obtener las referencias de los controles de la interfaz
• Obtener el dato del nombre del Bundle
• Escribir el nombre como texto del control TextView txtSaludo.
• Ejecutamos la aplicación desde el IDE
Ejemplo descargable desde: http://jesusfontecha.name/recursos/ejemplos/HolaAndroid.zip
Firma de aplicaciones
75
76
Firmar una aplicación Android
http://www.jesusfontecha.name
• Preparar la aplicación desde el IDE
• Dar valores a los atributos android:versionCode y android:versionName en el
archivo de manifiesto.
• Establecer requisitos funcionales en el archivo de manifiesto
• Uses-sdk. Especifica la versión mínima del firmware que debe disponer el
dispositivo destino para ejecutar la app (android:minSdkVersion) y el
firmware al que se dirige principalmente (android:targetSdkVersion)
• Uses Configuration. Indica si la app requiere el uso de pantalla táctil, tipo de
teclado o modo de navegación.
• Uses Feature. Características del dispositivo para la ejecución de la app
• Ej: android.hardware.bluetooth, android.hardware.camera,…
• Supports Screen. Características de la pantalla de los dispositivos donde se
instalará la app.
Source: Android developer
http://developer.android.com/guide/topics/manifest/manifest-intro.html
77
Firmar una aplicación Android
http://www.jesusfontecha.name
• Exportar y firmar aplicación desde el IDE
• Debemos generar el archivo ejecutable APK
• Pasos para firmar la aplicación
1. Establecer compilación de producción 2. Recompilar 3. Generar APK firmado
• Podemos ofuscar el código como opción final al certificar la app
• APK disponible en la carpeta del proyecto -> preparado para su publicación
Source: Javier Gª Escobedo website
http://javiergarbedo.es/index.php/component/content/article/90-servicios-android/323-publicar-aplicaciones-en-google-play
• Publicación de la aplicación en Google Play
• Utilizar las herramientas web de Google
Uso de librerías y más
78
79
• Bases de datos
• SQLite -> Motor nativo incluido en el SDK
• GreenDAO -> API ORM (manejo de datos como si fueran objetos java)
• Realm -> Motor de BBDD basado en ORM
• Mapas y GPS
• Acceso mediante el SDK y servicios de Google Maps (Google maps API) (online)
• Mapsforge -> Gestiona la visualización de mapas de OpenStreetMap (sistema de mapas offline)
• Ficheros
• Acceso a la memorias interna y externa con funciones del SDK
• Sensores
• Acceso a los sensores del dispositivo con funciones del SDK
• Simulación con herramientas externas (Sensor simulator)
• https://code.google.com/p/openintents/wiki/SensorSimulator
• Comunicaciones
• Acceso a las funcionalidades Bluetooth con funciones del SDK
• Volley -> Consulta a APIs REST (peticiones html y acceso a servicios web)
• Gráficos
• OpenGL (2D y 3D)
• Juegos
• Libgdx -> Framework para el desarrollo de juegos multiplataforma
• Unity engine -> Motor completo para el desarrollo de videojuegos
• AndEngine -> Motor basado en OpenGL para el desarrollo de juegos en 2D
• Librerías y recursos para todo…
Sobre el uso de librerías y más
http://www.jesusfontecha.name
80
• Consejos
• Buscar librerías, porciones de código y frameworks que me resuelvan
parte de mi problema o me faciliten la implementación  Reutilización
• Buscar soluciones y respuestas a problemas de implementación (bajo la
premisa: “¡seguro que a alguien le sucedió antes!”)
• Foros y páginas especializadas. (http://stackoverflow.com/)
• Tanto las aplicaciones móviles como web están en constante evolución.
Existen cada vez más frameworks, lenguajes y librerías
• Auto-nota mental: ¡No te creas que lo sabes todo!
Sobre el uso de librerías y más
http://www.jesusfontecha.name
81
Jesús Fontecha DiezmaAndroidBasicsv3
http://www.jesusfontecha.name

Más contenido relacionado

La actualidad más candente

Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
Micael Gallego
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - Introducción
VLASLOV
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
Micael Gallego
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
Manuel Carrasco Moñino
 
Desarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web ToolkitDesarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web Toolkit
Ingenieria Informatica Empresarial
 
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
Carlos A. Iglesias
 
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web ToolkitDesarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
Ingenieria Informatica Empresarial
 
Presentacion Google Web Toolkit
Presentacion Google Web ToolkitPresentacion Google Web Toolkit
Presentacion Google Web Toolkit
Ingenieria Informatica Empresarial
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
Ymbra
 
Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con Features
Ymbra
 
Java Es O No Software Libre
Java Es O No Software LibreJava Es O No Software Libre
Java Es O No Software LibreJose Rojas
 

La actualidad más candente (14)

Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - Introducción
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Desarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web ToolkitDesarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web Toolkit
 
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
 
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web ToolkitDesarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
 
Presentacion Google Web Toolkit
Presentacion Google Web ToolkitPresentacion Google Web Toolkit
Presentacion Google Web Toolkit
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
 
Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con Features
 
Java Es O No Software Libre
Java Es O No Software LibreJava Es O No Software Libre
Java Es O No Software Libre
 
Comenzando con GWT
Comenzando con GWTComenzando con GWT
Comenzando con GWT
 
GWT
GWTGWT
GWT
 

Destacado

Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Jesús Fontecha
 
PhoneGap Basics v1.0
PhoneGap Basics v1.0PhoneGap Basics v1.0
PhoneGap Basics v1.0
Jesús Fontecha
 
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Jesús Fontecha
 
Android Basics v2.5
Android Basics v2.5Android Basics v2.5
Android Basics v2.5
Jesús Fontecha
 
A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...
Jesús Fontecha
 
Context-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systemsContext-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systems
Jesús Fontecha
 
PhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native ComponentsPhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native Components
TechAhead
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or Less
Troy Miles
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapCongresoWeb
 
A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...
Jesús Fontecha
 
Internet of Things. Definition of a concept
Internet of Things. Definition of a conceptInternet of Things. Definition of a concept
Internet of Things. Definition of a conceptJesús Fontecha
 

Destacado (11)

Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
 
PhoneGap Basics v1.0
PhoneGap Basics v1.0PhoneGap Basics v1.0
PhoneGap Basics v1.0
 
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
 
Android Basics v2.5
Android Basics v2.5Android Basics v2.5
Android Basics v2.5
 
A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...
 
Context-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systemsContext-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systems
 
PhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native ComponentsPhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native Components
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or Less
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta Phonegap
 
A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...
 
Internet of Things. Definition of a concept
Internet of Things. Definition of a conceptInternet of Things. Definition of a concept
Internet of Things. Definition of a concept
 

Similar a Android basics v3

Taller mobile by trustparency
Taller mobile by trustparencyTaller mobile by trustparency
Taller mobile by trustparency
trustparency
 
Introduccion android
Introduccion androidIntroduccion android
Introduccion android
Jose Luis Ayerdis Espinoza
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
jezabelink
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
Alberto Ruibal
 
Sesion 11 Teoria.pdf
Sesion 11 Teoria.pdfSesion 11 Teoria.pdf
Sesion 11 Teoria.pdf
DianaSullcav
 
Curso de programacion en android
Curso de programacion en androidCurso de programacion en android
Curso de programacion en android
Escurra Walter
 
Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2
Ignacio Muñoz Vicente
 
Ponencia Final Dispositivos Móviles
Ponencia Final Dispositivos Móviles Ponencia Final Dispositivos Móviles
Ponencia Final Dispositivos Móviles
Adán Silva
 
Curso Desarrollo Android
Curso Desarrollo AndroidCurso Desarrollo Android
Curso Desarrollo Android
SlashMobility.com
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de Android
Javier Muñoz
 
Conferencia android
Conferencia androidConferencia android
Conferencia android
Roger Patiño
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
SUGES (SharePoint Users Group España)
 
2.1 android cep jaen 2014 estructura de aplicación
2.1 android cep jaen 2014   estructura de aplicación2.1 android cep jaen 2014   estructura de aplicación
2.1 android cep jaen 2014 estructura de aplicación
Jose Antonio Vacas
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
Imanol Iza Martin
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMRoberto Luis Bisbé
 
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Proyecto SIG Corporativo de la Junta de Andalucía
 
Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)
Jenyfer Utitiaja
 
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Agustín Sabater
 
Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)
Armando Picón Z.
 
Intro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en OlotIntro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en Olot
hojalataverde
 

Similar a Android basics v3 (20)

Taller mobile by trustparency
Taller mobile by trustparencyTaller mobile by trustparency
Taller mobile by trustparency
 
Introduccion android
Introduccion androidIntroduccion android
Introduccion android
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Sesion 11 Teoria.pdf
Sesion 11 Teoria.pdfSesion 11 Teoria.pdf
Sesion 11 Teoria.pdf
 
Curso de programacion en android
Curso de programacion en androidCurso de programacion en android
Curso de programacion en android
 
Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2
 
Ponencia Final Dispositivos Móviles
Ponencia Final Dispositivos Móviles Ponencia Final Dispositivos Móviles
Ponencia Final Dispositivos Móviles
 
Curso Desarrollo Android
Curso Desarrollo AndroidCurso Desarrollo Android
Curso Desarrollo Android
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de Android
 
Conferencia android
Conferencia androidConferencia android
Conferencia android
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
2.1 android cep jaen 2014 estructura de aplicación
2.1 android cep jaen 2014   estructura de aplicación2.1 android cep jaen 2014   estructura de aplicación
2.1 android cep jaen 2014 estructura de aplicación
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
 
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
Taller de desarrollo de aplicaciones móviles con la tecnología del SIG Corpor...
 
Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)
 
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
 
Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)
 
Intro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en OlotIntro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en Olot
 

Más de Jesús Fontecha

A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...
Jesús Fontecha
 
A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...
Jesús Fontecha
 
Android Basics v2.0
Android Basics v2.0Android Basics v2.0
Android Basics v2.0
Jesús Fontecha
 
Proyecto Innovación Docente
Proyecto Innovación DocenteProyecto Innovación Docente
Proyecto Innovación Docente
Jesús Fontecha
 
Nfc basics
Nfc basicsNfc basics
Nfc basics
Jesús Fontecha
 
Android basics
Android basicsAndroid basics
Android basics
Jesús Fontecha
 

Más de Jesús Fontecha (6)

A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...
 
A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...
 
Android Basics v2.0
Android Basics v2.0Android Basics v2.0
Android Basics v2.0
 
Proyecto Innovación Docente
Proyecto Innovación DocenteProyecto Innovación Docente
Proyecto Innovación Docente
 
Nfc basics
Nfc basicsNfc basics
Nfc basics
 
Android basics
Android basicsAndroid basics
Android basics
 

Último

SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
aljitagallego
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
arriagaanggie50
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
IsabelQuintero36
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 

Último (20)

SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 

Android basics v3

  • 1. 1 University of Castilla-La Mancha, Spain MAmI Research Lab Android Basics v3 Jesús Fontecha Diezma http://www.jesusfontecha.name
  • 2. Contenido • Generalidades • Fragmentación • Actividades y componentes • Estandarización y diseño • Desarrollo – Introducción – IDEs – El archivo manifiesto – Creando un proyecto – Layouts – Views – Acceso a los recursos – Eventos – Intents y Bundles – Ejecución y depuración • Una aplicación de ejemplo • Firma de aplicaciones • Uso de librerías y más 2
  • 6. 6 http://www.jesusfontecha.name • Versiones firmware y cuotas de mercado Source: International Data Corporation (http://www.idc.com/getdoc.jsp?containerId=prUS25450615) Source: Android developer (http://developer.android.com/about/dashboards/index.html) Próximamente…
  • 7. 7 http://www.jesusfontecha.name • Dispositivos. Resoluciones y tamaños Source: Android developer (http://developer.android.com/about/dashboards/index.html) ¡Fragmentación! Problema:
  • 9. 9 http://www.jesusfontecha.name 24.093 dispositivos distintos 1.294 fabricantes (Samsung -> 37,8%) Source: Andro4all (http://andro4all.com/2015/08/android-fragmentacion-2015)
  • 10. 10 http://www.jesusfontecha.name • Soluciones • Fabricantes: Sistema de actualizaciones regulares • Desarrolladores: Uso de fragmentación • Aún por resolver… ¿Qué son? Sección modular de una actividad • Tiene su propio ciclo de vida • Recibe sus propios eventos de entrada • Puede construirse y destruirse en ejecución • “como una subactividad que puedes reutilizar en distintas actividades” Principio: Todas las aplicaciones Android deberían funcionar en todos los dispositivos Android ¿Actividad?
  • 12. 12 • Actividades (activities) • El más importante • Representa una pantalla individual • Incluye fragmentos y vistas Componentes de una aplicación Android • Servicios (services) • Se ejecutan en segundo plano • Realizan acciones incluso cuando las actividades no están visibles • Proveedores de contenido (content providers) • Representan almacenes de datos compartidos entre aplicaciones • Gestionan las BBDD de las aplicaciones • Receptores broadcast (broadcast receivers) • Creados por aplicaciones que consumen broadcast intents. • Intenciones (intents) • Permiten el paso de información entre actividades y servicios o al todo el sistema (broadcast intents) • Definen “qué se hace” • Notificaciones (notifications) • Referente a las notificaciones del sistema que no interrumpen la actividad • Se pueden ver como un tipo de servicios • Vistas • Componentes básicos de la interfaz gráfica • Análogo a los controles de Java o .NET http://www.jesusfontecha.name
  • 13. 13 • Actividad y Content Provider Agenda telefónica public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); } Información detallada del contacto Listado de nombres y teléfonos Ejemplos de componentes Content provider http://developer.android.com/guide/components/index.html http://www.jesusfontecha.name
  • 14. 14 Ejemplo de componentes • Servicios Capturar posición GPSCapturar datos acelerómetro • Broadcast receivers Batería Baja Llamada Cambio zona horariaTarjeta SD Otras aplicaciones • Intents Mostrar una actividad desde otra Iniciar un servicioEnviar mensaje broadcast Iniciar otra aplicación Cuadros de texto BotonesListas desplegables ImágenesBarras de desplazamiento • Vistas • Widgets • Elementos visuales e interactivos • Se muestran en la pantalla principal del terminal http://developer.android.com/guide/components/index.html http://www.jesusfontecha.name
  • 15. 15 Cuando es visible Primera vez Cuando se oculta Asignación de memoria Finaliza Otra actividad en primer plano Ciclo de vida/estados de una actividad • Clases que extienden de Activity http://www.jesusfontecha.name
  • 16. 16 Métodos de transición entre estados • onCreate(Bundle) • Invocado cuando la actividad arranca por primera vez • Utilizado para tareas de inicialización como crear la interfaz de usuario de la actividad • onStart() • Invocado cuando la actividad va a ser mostrada al usuario • onResume() • Invocar cuando la actividad va a empezar a interactuar con el usuario • onPause() • Invocado cuando la actividad pasa a segundo plano porque otra actividad es lanzada con mayor prioridad • onStop() • Invocado cuando la actividad deja de ser visible y no se necesitará durante un tiempo • onRestart() • Invocado cuando la actividad sale del estado de parada y entra en estado activo • onDestroy() • Se invoca cuando la actividad pasa a ser destruida • onSaveInstanceState(Bundle) • Permite a la actividad guardar su estado (ej: los valores introducidos en un campo de texto) • No necesita ser redefinido porque la clase Activity ya guarda todo el estado de por sí. • onRestoreInstanceState(Bundle) • Recupera el estado guardado por el método anterior • Al igual que antes, no necesita ser redefinido http://www.jesusfontecha.name
  • 17. 17 • Misma Aplicación, diferentes dispositivos Galaxy tab 10” Galaxy S Actividad Fragmentos Posibles transiciones Fragmentos http://www.jesusfontecha.name
  • 18. 18 • ¿Qué suponen? • En aplicaciones antiguas: •  Uso de librerías de apoyo a la compatibilidad (support libraries). •  Reescritura de clases • En aplicaciones nuevas: •  Versatilidad: Misma app compatible para cualquier dispositivo. •  Aumentar la importancia del diseño de las actividades.  Más difícil diseñar una buena app. •  Reutilización de fragmentos. • Cambian “un poco” aspectos iniciales de las actividades. Actividades compuestas por componentes vs Actividades compuestas por fragmentos Ventajas e inconvenientes de los fragmentos http://www.jesusfontecha.name
  • 20. 20 • Patrones de diseño • Unificar y mejorar la apariencia de la interfaz gráfica , listas, pestañas, menús, etc. “No es una obligación, pero sí una recomendación” (en ciertos casos necesaria para poder publicar la app) Hacia la estandarización de aplicaciones http://www.jesusfontecha.name
  • 21. 21 • Action Bars • Similar a una barra de tareas • Permite agrupar acciones • De acceso intuitivo y rápido Hacia la estandarización de aplicaciones • Estilos y Temas • http://developer.android.com/guide/topics/ui/themes.html http://www.jesusfontecha.name
  • 22. 22 • Patrones de interacción Hacia la estandarización de aplicaciones http://www.jesusfontecha.name Source: http://unitid.nl/androidpatterns/ • Soporte para el diseño de componentes • Unificación y estandarización en el diseño • Establecimiento del comportamiento de componentes Operaciones
  • 24. 24 • ¿Qué necesitamos? DVM Librerías Emulador Desarrollo de aplicaciones Android http://www.jesusfontecha.name
  • 25. 25 • La separación de lógica e interfaz favorece la aplicación del patrón Modelo- Vista-Controlador (MVC) • Existen diferentes perspectivas de la arquitectura Arquitectura Modelo Vista Controlador http://www.jesusfontecha.name - Interfaz de usuario -Representación de la información -Responsable de eventos - Lógica tras la interacción del usuario User
  • 26. 26 Consideraciones previas • Actividades • Las aplicaciones Android están formadas por actividades • Todas las actividades de nuestra aplicación y de otras se van almacenando en la pila de actividades • Procesos • Las aplicaciones no tienen control sobre su ciclo de vida • Android puede matar sin avisar a los procesos que considera innecesarios para mantener al sistema estable • Vistas • Las interfaces de usuario de una actividad se crean mediante vistas (views) • Las vistas se agrupan en diseños (layouts) que muestra la aplicación http://www.jesusfontecha.name
  • 27. 27 3. Añadir un AVD – SDK Manager • Tools > Manage AVDs > New • Definir características y crear 4. Configurar Plugin ADT - Eclipse • Help > Install New Software • Introducir url proveedor: https://dl-ssl.google.com/android/eclipse/ O… descargar el bundle Instalación del SDK y primeros pasos http://www.jesusfontecha.name 1. Instalar Eclipse 2. Instalar SDK Android http://developer.android.com/sdk/index.html • Instalar las librerías necesarias • Eclipse • Android Studio 1. Instalar Android Studio http://developer.android.com/sdk/index.html ¡Contienen el SDK completo!
  • 29. 29 Vista del entorno de desarrollo - Eclipse http://www.jesusfontecha.name
  • 30. 30 Vista del entorno de desarrollo – Android Studio http://www.jesusfontecha.name
  • 31. 31 • Código: • /java – Paquetes y clases java • Recursos: • /res/drawable – Imágenes de la aplicación • /res/layout – Vistas y diseños de la aplicación • /res/menu – Menús de la aplicación • /res/mipmap – Iconos de la aplicación • /res/values – Estilos (colores, dimensiones) y variables de la aplicación • Otros: • /res/xml – Varios • /res/anim – Animaciones • Manifiesto: • /manifests – Archivo de manifiesto de la aplicación • Gradle Scripts – Usado para temas de compilación Estructura de directorios http://www.jesusfontecha.name
  • 32. 32 Views/Componentes Área de trabajo Jerarquía Layouts-Componentes Propiedades Componente selección Detalles vista de diseño IDE http://www.jesusfontecha.name
  • 33. Desarrollo – El archivo manifiesto 33
  • 34. 34 El archivo de manifiesto http://www.jesusfontecha.name • Contiene información esencial de la aplicación • Describe los componentes de la aplicación • Actividades, servicios, receivers, content providers,… • Declara los permisos de la aplicación • Permite definir tests de ejecución de actividades y servicios. • Declara el firmware mínimo compatible para el funcionamiento de la app. • Lista las liberías externas de la aplicación que deben ser llamadas Source: http://developer.android.com/guide/topics/manifest/manifest-intro.html
  • 35. Desarrollo – Creando un proyecto 35
  • 36. 36 Creando un proyecto – Android Studio http://www.jesusfontecha.name • File -> New project Paso 1. Datos aplicación
  • 37. 37 Creando un proyecto – Android Studio http://www.jesusfontecha.name Paso 2. Plataforma de ejecución
  • 38. 38 Creando un proyecto – Android Studio http://www.jesusfontecha.name Paso 3. Actividad principal
  • 39. 39 Creando un proyecto – Android Studio http://www.jesusfontecha.name Paso 4. Datos actividad principal
  • 40. 40 Creando un proyecto – Android Studio http://www.jesusfontecha.name • Se crea la estructura de directorios y el archivo de manifiesto • Se crea el código java de la actividad principal • Se crea el código xml de la actividad principal ¡Layouts!
  • 42. 42 • Contenedor que permite la 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" android:layout_height="wrap_content" /> </LinearLayout> Layouts http://www.jesusfontecha.name … Web view
  • 43. 43 • Estáticos • Diseñados en tiempo de programación (xml) -> programación declarativa • Dinámicos • Diseñados en tiempo de ejecución (java) -> programación procedural Layouts estáticos vs. dinámicos http://www.jesusfontecha.name Archivo Java TextView tv= new TextView(this) tv.setWidth(100); tv.setHeight(60); tv.setText("phone"); setContentView(tv); Archivo XML <TextView android:id="@+id/nameLabel" android:text="phone:" android:layout_width="100" android:layout_height="60"/> • Vale, entonces… ¿Cómo lo hago?  Depende • Recomendación: Declarar XML siempre que se pueda • Aún dejándolos “vacíos” (ya se “rellenarán” en tiempo de ejecución)
  • 44. 44 • Layout dinámico • Su contenido se crea en tiempo de ejecución • Se usan adaptadores • Adaptador • Son colecciones de datos asignados a una vista para que sean mostrados. • Se rellenan dinámicamente de recursos estáticos (xml) o externos (BBDD, Servicios web, smart devices,…) • Se usan por medio de un AdapterView • Ejemplos: • ArrayAdapter -> el origen de datos es un array • SimpleCursorAdapter -> el origen de datos es un cursor • Los adaptadores también pueden poblar vistas en layouts estáticos Layouts dinámicos y adaptadores http://www.jesusfontecha.name Grid View List View Source: Android developer http://developer.android.com/guide/topics/ui/declaring-layout.html
  • 46. 46 • En la vista de diseño se pueden añadir views a la actividad • Arrastrar y soltar • Código xml generado Añadiendo views a la actividad desde el IDE http://www.jesusfontecha.name Paleta Views • Vista de propiedades del view seleccionado • Tamaño, color, posición, id,… • Árbol de vistas jerárquico • Muestran la jeraquía de layouts y componentes • Vista textual (descripción xml)
  • 47. 47 • Todos los layouts y vistas pueden ser programados (java) • También los eventos asociados a esos componentes Añadiendo código a la actividad http://www.jesusfontecha.name Source: Hermosa programación http://www.hermosaprogramacion.com/2014/09/android-layouts-views/ Acceso a componentes (recursos) Programación eventos
  • 48. 48 • Se usa el método inflate() • El método setContentView() de Activity usa un inflado implícito • Inflar es instanciar un fichero de diseño XML y añadirlo a una jerarquía de vistas • Es un concepto difícil de entender al principio • Permite introducir una estructura de Views en nuestra jerarquía en tiempo de ejecución • Se pueden inflar actividades, fragmentos y views Inflado de layouts y views http://www.jesusfontecha.name Source: Mhjaso Blog http://www.mhjaso.com/blog/inflater/
  • 49. Desarrollo – Acceso a los recursos 49
  • 50. 50 • Clase generada automáticamente • Identifica todos los componentes de las actividades de forma unívoca • Mediante variables estáticas • Permite acceder a los componentes y sus propiedades • Constituye una referencia directa a los recursos de la aplicación La clase R http://www.jesusfontecha.name Source: Arquitectura Java http://www.arquitecturajava.com/android-r-java/
  • 51. 51 • En la carpeta /res se almacenan todos los recursos de la aplicación • Todos los recursos tienen un nombre y un valor Ficheros de recursos y acceso http://www.jesusfontecha.name Source: Arquitectura Java http://www.arquitecturajava.com/android-r-java/ • Acceso a un recurso y modificación de una de sus propiedades: • Desde el código java • Utilizando la clase R 1. Localizamos el componente TextView identificado como texto 1 2. Modificamos el texto del componente
  • 53. 53 Eventos sobre componentes http://www.jesusfontecha.name • Android captura los eventos y se los pasa a la clase encargada (objeto tipo View) • Dos alternativas • Escuchador de eventos (Listener) • Interfaz de la clase View que contiene un método callback a ser registrado • El método callback es llamado por Android cuando ocurre la acción • Maneja eventos generados por un view • Manejador de eventos (Handler) • Si creamos un descendiente de la clase View, podemos usar varios callbacks • Maneja eventos de entrada sin importar dónde está el foco. No necesariamente asociados a un View (botón atrás,…)
  • 54. 54 Listado de eventos http://www.jesusfontecha.name onClick() Método de la interfaz View.OnClickListener. Se llama cuando el usuario selecciona un elemento. Se puede utilizar cualquier medio como la pantalla táctil, las teclas de navegación o eltrackball. onLongClick() Método de la interfaz View.OnLongClickListener. Se llama cuando el usuario selecciona un elemento durante más de un segundo. onFocusChange() Método de la interfaz View.OnFocusChangeListener. Se llama cuando el usuario navega dentro o fuera de un elemento. onKey() Método de la interfaz View.OnKeyListener. Se llama cuando se pulsa o se suelta una tecla del dispositivo. onTouch() Método de la interfaz View.OnTouchListener. Se llama cuando se pulsa o se suelta o se desplaza en la pantalla táctil. onCreateContextMenu() Método de la interfaz View.OnCreateContextMenuListener. Se llama cuando se crea un menú de contexto. onKeyDown(int keyCode, KeyEvent e) Llamado cuando una tecla es pulsada. onKeyUp(int keyCode, KeyEvent e) Cuando una tecla deja de ser pulsada. onTrackballEvent(MotionEvent me) Llamado cuando se mueve el trackball. onTouchEvent(MotionEvent me) Cuando se pulsa en la pantalla táctil. onFocusChanged(boolean obtengoFoco, int direccion , Rect prevRectanguloFoco) Llamado cuando cambia el foco. Escuchadores de eventos (Listeners) Manejadores de eventos (Handlers) protected void onCreate(Bundle savedValues) { ... Button boton = (Button)findViewById(R.id.boton); boton.setOnClickListener( new OnClickListener() { public void onClick(View v) { // Acciones a realizar } }); ... } Ejemplo Source: Android curso (http://www.androidcurso.com/index.php/tutoriales-android/36- unidad-5-entradas-en-android-teclado-pantalla-tactil-y- sensores/144-manejo-de-eventos-de-usuario)
  • 55. 55 • Button Ejemplos de eventos http://www.jesusfontecha.name
  • 56. 56 Ejemplos de eventos • EditText http://www.jesusfontecha.name
  • 57. 57 Ejemplos de eventos • ImageView http://www.jesusfontecha.name
  • 58. 58 Ejemplos de eventos • CheckBox http://www.jesusfontecha.name
  • 59. 59 • Otros Componentes • Texto  TextView, AutocompleteTextView,… • Botón  ImageButton, TogleButton, RadioButton,… • Vistas compuestas  ExpandableListView, … • Barras  ProgressBar, SeekBar, RatinBar,… • Menús • ¡Controles compuestos! ListItem ¿Cómo lleno la lista? Más eventos y componentes http://www.jesusfontecha.name List View ¡Adaptadores!
  • 60. 60 • Interfaz SensorEventListener mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); List<Sensor> listSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); Recuperamos el sensor onSensorChanged() Método Eventos sobre elementos hardware http://www.jesusfontecha.name Source: Android developer (http://developer.android.com/guide/topics/sensors/sensors_overview.html)
  • 61. Desarrollo – Intents y Bundles 61
  • 62. 62 • Intent • Objeto de comunicación utilizado para enviar mensajes asíncronos dentro de una aplicación o entre varias aplicaciones. • Posibilitan la transición entre actividades. • Permiten iniciar un servicio, iniciar otra aplicación (cambio de contexto),... Intents http://www.jesusfontecha.name Source: Aprende android (http://www.aprendeandroid.com/l3/fundamentos3.htm) String nombre = getActivity().getIntent().getStringExtra(“Nombre"); Recuperar información del intent:
  • 63. 63 • Bundle • Contenedor para agrupar los datos (clave, valor) • Pueden ser usados conjuntamente con intents • Permiten también pasar objetos entre actividades • Parte del intent encargada de encapsular y pasar objetos. Bundles http://www.jesusfontecha.name Bundle extras = getIntent().getExtras(); String key = extras.getString("mynkey"); Bundle b=new Bundle(); b.putString("myname", nombre);
  • 64. Desarrollo – Ejecución y depuración 64
  • 65. 65 Depuración y ejecución de aplicaciones • Como desarrollador, existen dos opciones para depurar y ejecutar aplicaciones Android: • Utilizando el emulador del SDK • Utilizando un dispositivo real conectado vía USB • Pasos para utilizar un dispositivo real: 1. Activar el modo depuración USB en el dispositivo (ajustes) • La ubicación para este proceso depende de la versión Android http://www.jesusfontecha.name
  • 66. 66 Depuración y ejecución de aplicaciones 2. Conectar el dispositivo vía USB al PC 3. En el IDE, al pulsar “Ejecutar cómo” o “Depurar cómo”, aparece automáticamente la ventana para selección de dispositivo (o emulador) 4. El apk se instalará y desplegará en el dispositivo. Dispositivos conectados Emuladores http://www.jesusfontecha.name Captura de pantalla Eclipse IDE
  • 67. 67 Emulador vs. Dispositivo real • El SDK Manager tiene su propio emulador • Lento • No emula todo (e.j. determinados sensores) • Interesante para emular en distintas versiones Android http://www.jesusfontecha.name • El dispositivo real conectado al PC • Más rápido • Permite ver el comportamiento real La ejecución/depuración no instala la versión final de la aplicación en el dispositivo
  • 68. 68 Depuración de aplicaciones • ¡Que la aplicación compile no significa que funcione! http://www.jesusfontecha.name • El IDE es una potente herramienta de depuración • Depurar no es poner “print()” y mensajes en pantalla • Depurar es analizar el código sentencia a sentencia con ayuda de la herramienta, observando los cambios que se producen (métodos, variables,…) ¿De dónde viene el error?
  • 69. 69 Depuración de aplicaciones • Agregar puntos de ruptura al código • En sentencias clave o sospechosas de error http://www.jesusfontecha.name • Iniciar la depuración • Depurar paso a paso o “saltándose” bloques de código • Podemos ir sentencia a sentencia (step into) • No interesarnos depurar el interior de algunos métodos (step over) • Continuar hasta el siguiente punto de ruptura (play) • Depurar no es poner “print()” y mensajes en pantalla • Depurar es analizar el código con ayuda de la herramienta, observando los cambios que se producen (métodos, variables,…) • Útil: observar los valores que toman las variables y en qué punto • Ventana Logcat: Comportamiento del sistema (excepciones, errores, interacciones,…)
  • 70. Una aplicación de ejemplo 70
  • 71. 71 Ejemplo de aplicación Android http://www.sgoliver.net/blog/?p=1316 • Crear el proyecto Android con una actividad en blanco. • Modificar el layout de la actividad para que contenga un TextView, un EditText y un Button. • Desde el diseñador visual • Desde el xml de la actividad
  • 72. 72 Ejemplo de aplicación Android • Dar el texto “Escribe tu nombre” al TextView • Usar las propiedades del componente • Pero antes… declarar el texto como un string en los recursos • Crear una segunda actividad llamada FrmSaludo que contendrá el saludo • El layout de esta actividad contendrá un TextView • ¡Comprobar que se definen las actividades en el manifiesto! • Favorece el aislar mensajes y nombres de variables del código • Útil cuando se desea traducir la app a varios idiomas
  • 73. 73 Ejemplo de aplicación Android • Programamos la parte Java en la actividad principal para: • Obtener las referencias de los controles de la interfaz • Crear un bundle que almacene el nombre introducido en el campo de texto • Realizar la transición desde la actividad principal hacia la actividad FrmSaludo
  • 74. 74 Ejemplo de aplicación Android • Programamos la parte Java en la actividad FrmSaludo para: • Obtener las referencias de los controles de la interfaz • Obtener el dato del nombre del Bundle • Escribir el nombre como texto del control TextView txtSaludo. • Ejecutamos la aplicación desde el IDE Ejemplo descargable desde: http://jesusfontecha.name/recursos/ejemplos/HolaAndroid.zip
  • 76. 76 Firmar una aplicación Android http://www.jesusfontecha.name • Preparar la aplicación desde el IDE • Dar valores a los atributos android:versionCode y android:versionName en el archivo de manifiesto. • Establecer requisitos funcionales en el archivo de manifiesto • Uses-sdk. Especifica la versión mínima del firmware que debe disponer el dispositivo destino para ejecutar la app (android:minSdkVersion) y el firmware al que se dirige principalmente (android:targetSdkVersion) • Uses Configuration. Indica si la app requiere el uso de pantalla táctil, tipo de teclado o modo de navegación. • Uses Feature. Características del dispositivo para la ejecución de la app • Ej: android.hardware.bluetooth, android.hardware.camera,… • Supports Screen. Características de la pantalla de los dispositivos donde se instalará la app. Source: Android developer http://developer.android.com/guide/topics/manifest/manifest-intro.html
  • 77. 77 Firmar una aplicación Android http://www.jesusfontecha.name • Exportar y firmar aplicación desde el IDE • Debemos generar el archivo ejecutable APK • Pasos para firmar la aplicación 1. Establecer compilación de producción 2. Recompilar 3. Generar APK firmado • Podemos ofuscar el código como opción final al certificar la app • APK disponible en la carpeta del proyecto -> preparado para su publicación Source: Javier Gª Escobedo website http://javiergarbedo.es/index.php/component/content/article/90-servicios-android/323-publicar-aplicaciones-en-google-play • Publicación de la aplicación en Google Play • Utilizar las herramientas web de Google
  • 78. Uso de librerías y más 78
  • 79. 79 • Bases de datos • SQLite -> Motor nativo incluido en el SDK • GreenDAO -> API ORM (manejo de datos como si fueran objetos java) • Realm -> Motor de BBDD basado en ORM • Mapas y GPS • Acceso mediante el SDK y servicios de Google Maps (Google maps API) (online) • Mapsforge -> Gestiona la visualización de mapas de OpenStreetMap (sistema de mapas offline) • Ficheros • Acceso a la memorias interna y externa con funciones del SDK • Sensores • Acceso a los sensores del dispositivo con funciones del SDK • Simulación con herramientas externas (Sensor simulator) • https://code.google.com/p/openintents/wiki/SensorSimulator • Comunicaciones • Acceso a las funcionalidades Bluetooth con funciones del SDK • Volley -> Consulta a APIs REST (peticiones html y acceso a servicios web) • Gráficos • OpenGL (2D y 3D) • Juegos • Libgdx -> Framework para el desarrollo de juegos multiplataforma • Unity engine -> Motor completo para el desarrollo de videojuegos • AndEngine -> Motor basado en OpenGL para el desarrollo de juegos en 2D • Librerías y recursos para todo… Sobre el uso de librerías y más http://www.jesusfontecha.name
  • 80. 80 • Consejos • Buscar librerías, porciones de código y frameworks que me resuelvan parte de mi problema o me faciliten la implementación  Reutilización • Buscar soluciones y respuestas a problemas de implementación (bajo la premisa: “¡seguro que a alguien le sucedió antes!”) • Foros y páginas especializadas. (http://stackoverflow.com/) • Tanto las aplicaciones móviles como web están en constante evolución. Existen cada vez más frameworks, lenguajes y librerías • Auto-nota mental: ¡No te creas que lo sabes todo! Sobre el uso de librerías y más http://www.jesusfontecha.name

Notas del editor

  1. Otra actividad en primer plano: puede ser una llamada o dentro de nuestra aplicación, otra pantalla.
  2. Otra actividad en primer plano: puede ser una llamada o dentro de nuestra aplicación, otra pantalla.