81
1 University of Castilla-La Mancha, Spain MAmI Research Lab Android Basics v3 Jesús Fontecha Diezma http://www.jesusfontecha.name

Android basics v3

Embed Size (px)

Citation preview

Page 1: Android basics v3

1

University of Castilla-La Mancha, SpainMAmI Research Lab

Android Basics v3Jesús Fontecha Diezma

http://www.jesusfontecha.name

Page 2: Android basics v3

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

Page 3: Android basics v3

Generalidades

3

Page 4: Android basics v3

4

http://www.jesusfontecha.name

Page 5: Android basics v3

5

http://www.jesusfontecha.name

Page 6: Android basics v3

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…

Page 7: Android basics v3

7

http://www.jesusfontecha.name

• Dispositivos. Resoluciones y tamaños

Source: Android developer(http://developer.android.com/about/dashboards/index.html)

¡Fragmentación!

Problema:

Page 8: Android basics v3

Fragmentación

8

Page 9: Android basics v3

9

http://www.jesusfontecha.name

24.093 dispositivos distintos1.294 fabricantes (Samsung -> 37,8%)

Source: Andro4all(http://andro4all.com/2015/08/android-fragmentacion-2015)

Page 10: Android basics v3

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?

Page 11: Android basics v3

Actividades y componentes

11

Page 12: Android basics v3

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 (contentproviders)

• 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

Page 13: Android basics v3

13

• Actividad y Content Provider

Agenda telefónica

public class Activity extendsApplicationContext {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

Page 14: Android basics v3

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

Page 15: Android basics v3

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

Page 16: Android basics v3

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

Page 17: Android basics v3

17

• Misma Aplicación, diferentes dispositivos

Galaxy tab 10”

Galaxy S

Act

ivid

ad

Frag

men

tos

Posibles transiciones

Fragmentos

http://www.jesusfontecha.name

Page 18: Android basics v3

18

• ¿Qué suponen?

• En aplicaciones antiguas:

• Uso de librerías de apoyo a la compatibilidad (supportlibraries).

• 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

Page 19: Android basics v3

Estandarización y diseño

19

Page 20: Android basics v3

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

Page 21: Android basics v3

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

Page 22: Android basics v3

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

Page 23: Android basics v3

Desarrollo - Introducción

23

Page 24: Android basics v3

24

• ¿Qué necesitamos?

DVM

Librerías

Emulador

Desarrollo de aplicaciones Android

http://www.jesusfontecha.name

Page 25: Android basics v3

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

Page 26: Android basics v3

26

Consideraciones previas

• Actividades

• Las aplicaciones Android están formadas por actividades

• Todas las actividades de nuestra aplicación y de otras sevan 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 queconsidera innecesarios para mantener al sistema estable

• Vistas

• Las interfaces de usuario de una actividad se creanmediante vistas (views)

• Las vistas se agrupan en diseños (layouts) que muestra laaplicación

http://www.jesusfontecha.name

Page 27: Android basics v3

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 Androidhttp://developer.android.com/sdk/index.html

• Instalar las librerías necesarias

• Eclipse

• Android Studio

1. Instalar Android Studiohttp://developer.android.com/sdk/index.html

¡Contienen el SDK completo!

Page 28: Android basics v3

Desarrollo - IDEs

28

Page 29: Android basics v3

29

Vista del entorno de desarrollo - Eclipse

http://www.jesusfontecha.name

Page 30: Android basics v3

30

Vista del entorno de desarrollo – Android Studio

http://www.jesusfontecha.name

Page 31: Android basics v3

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 dela 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

Page 32: Android basics v3

32Views/Componentes Área de trabajo

Jerarquía Layouts-Componentes

Propiedades Componente selección

Detalles vista de diseño IDE

http://www.jesusfontecha.name

Page 33: Android basics v3

Desarrollo – El archivo manifiesto

33

Page 34: Android basics v3

34

El archivo de manifiesto

http://www.jesusfontecha.name

• Contiene información esencial de laaplicación

• Describe los componentes de laaplicación

• Actividades, servicios, receivers,content providers,…

• Declara los permisos de la aplicación

• Permite definir tests de ejecución deactividades y servicios.

• Declara el firmware mínimo compatiblepara el funcionamiento de la app.

• Lista las liberías externas de laaplicación que deben ser llamadas

Source: http://developer.android.com/guide/topics/manifest/manifest-intro.html

Page 35: Android basics v3

Desarrollo – Creando un proyecto

35

Page 36: Android basics v3

36

Creando un proyecto – Android Studio

http://www.jesusfontecha.name

• File -> New project

Paso 1. Datos aplicación

Page 37: Android basics v3

37

Creando un proyecto – Android Studio

http://www.jesusfontecha.name

Paso 2. Plataforma de ejecución

Page 38: Android basics v3

38

Creando un proyecto – Android Studio

http://www.jesusfontecha.name

Paso 3. Actividad principal

Page 39: Android basics v3

39

Creando un proyecto – Android Studio

http://www.jesusfontecha.name

Paso 4. Datos actividad principal

Page 40: Android basics v3

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!

Page 41: Android basics v3

Desarrollo - Layouts

41

Page 42: Android basics v3

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

Page 43: Android basics v3

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 JavaTextView 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)

Page 44: Android basics v3

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 quesean mostrados.

• Se rellenan dinámicamente de recursos estáticos (xml) oexternos (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 uncursor

• Los adaptadores también pueden poblar vistas en layoutsestáticos

Layouts dinámicos y adaptadores

http://www.jesusfontecha.name

Grid View

List View

Source: Android developerhttp://developer.android.com/guide/topics/ui/declaring-layout.html

Page 45: Android basics v3

Desarrollo – Views

45

Page 46: Android basics v3

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 viewseleccionado

• Tamaño, color, posición, id,…• Árbol de vistas jerárquico

• Muestran la jeraquía de layouts ycomponentes

• Vista textual (descripción xml)

Page 47: Android basics v3

47

• Todos los layouts y vistas pueden ser programados(java)

• También los eventos asociados a esoscomponentes

Añadiendo código a la actividad

http://www.jesusfontecha.name

Source: Hermosa programaciónhttp://www.hermosaprogramacion.com/2014/09/android-layouts-views/

Acceso a componentes (recursos)

Programación eventos

Page 48: Android basics v3

48

• Se usa el método inflate()

• El método setContentView() deActivity usa un inflado implícito

• Inflar es instanciar un ficherode diseño XML y añadirlo a unajerarquía de vistas

• Es un concepto difícil deentender al principio

• Permite introducir unaestructura de Views en nuestrajerarquía en tiempo deejecución

• Se pueden inflar actividades,fragmentos y views

Inflado de layouts y views

http://www.jesusfontecha.name

Source: Mhjaso Bloghttp://www.mhjaso.com/blog/inflater/

Page 49: Android basics v3

Desarrollo – Acceso a los recursos

49

Page 50: Android basics v3

50

• Clase generada automáticamente

• Identifica todos los componentes de lasactividades de forma unívoca

• Mediante variables estáticas

• Permite acceder a los componentes ysus propiedades

• Constituye una referencia directa a losrecursos de la aplicación

La clase R

http://www.jesusfontecha.name

Source: Arquitectura Javahttp://www.arquitecturajava.com/android-r-java/

Page 51: Android basics v3

51

• En la carpeta /res se almacenan todos los recursosde la aplicación

• Todos los recursos tienen un nombre y un valor

Ficheros de recursos y acceso

http://www.jesusfontecha.name

Source: Arquitectura Javahttp://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 R1. Localizamos el componente TextView

identificado como texto 12. Modificamos el texto del componente

Page 52: Android basics v3

Desarrollo - Eventos

52

Page 53: Android basics v3

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 serregistrado

• 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 varioscallbacks

• Maneja eventos de entrada sin importar dónde está el foco. Nonecesariamente asociados a un View (botón atrás,…)

Page 54: Android basics v3

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)

Page 55: Android basics v3

55

• Button

Ejemplos de eventos

http://www.jesusfontecha.name

Page 56: Android basics v3

56

Ejemplos de eventos

• EditText

http://www.jesusfontecha.name

Page 57: Android basics v3

57

Ejemplos de eventos

• ImageView

http://www.jesusfontecha.name

Page 58: Android basics v3

58

Ejemplos de eventos

• CheckBox

http://www.jesusfontecha.name

Page 59: Android basics v3

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!

Page 60: Android basics v3

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)

Page 61: Android basics v3

Desarrollo – Intents y Bundles

61

Page 62: Android basics v3

62

• Intent

• Objeto de comunicación utilizado para enviar mensajes asíncronos dentro deuna 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:

Page 63: Android basics v3

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);

Page 64: Android basics v3

Desarrollo – Ejecución y depuración

64

Page 65: Android basics v3

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

Page 66: Android basics v3

66

Depuración y ejecución de aplicaciones

2. Conectar el dispositivo vía USB al PC3. 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

Page 67: Android basics v3

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

Page 68: Android basics v3

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?

Page 69: Android basics v3

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,…)

Page 70: Android basics v3

Una aplicación de ejemplo

70

Page 71: Android basics v3

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

Page 72: Android basics v3

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

Page 73: Android basics v3

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

Page 74: Android basics v3

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

Page 75: Android basics v3

Firma de aplicaciones

75

Page 76: Android basics v3

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 developerhttp://developer.android.com/guide/topics/manifest/manifest-intro.html

Page 77: Android basics v3

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 websitehttp://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

Page 78: Android basics v3

Uso de librerías y más

78

Page 79: Android basics v3

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

Page 80: Android basics v3

80

• Consejos

• Buscar librerías, porciones de código y frameworks que me resuelvanparte de mi problema o me faciliten la implementación Reutilización

• Buscar soluciones y respuestas a problemas de implementación (bajo lapremisa: “¡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

Page 81: Android basics v3

81

Jesús Fontecha DiezmaAndroid Basics v3

http://www.jesusfontecha.name