Post on 18-Nov-2014
description
1
University of Castilla-La Mancha, SpainMAmI Research Lab
AndroidQuick Start
Jesús Fontecha Diezma
2
INTRODUCCIÓN A ANDROID
• SSOO de Google• Diseñado para ser ejecutado en dispositivos móviles.• Origen: 2007 Open Handset Alliance (OHA)
• Basado en el Kernel de Linux• Permite ejecutar aplicaciones en Java + XML
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
3
ELEMENTOS
• Activity• El más importante• Representa una pantalla individual• Presenta una interfaz gráfica al usuario
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
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(); }
Activity 1
Activity 2
Información detallada del contacto
Listado de nombres y teléfonos
4
ELEMENTOS
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
(Clases que extienden de Activity)
• Ciclo de vidaCuando es visible
Primera vez
Cuando se oculta
Asignación de memoria
Finaliza
Otra actividad en primer plano
5
ELEMENTOS
• Services• No tiene interfaz gráfica• Puede ejecutarse en background (= demonio Linux)
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
Capturar posición GPS Amigo Cerca
Tiempo
Capturar datos acelerómetroTiempo Objetivo
n. pasos
6
ELEMENTOS
• Broadcast receivers• Detecta y reacciona ante mensajes o eventos del
sistema Notificaciones broadcast.
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
• No tienen interfaz gráfica• Heredan de la clase BroadcastReceiver
Batería baja
SMS
Llamada
Cambio zona
horaria
Otras aplicaciones
Tarjeta SD
7
ELEMENTOS
• Intents• Elemento básico de comunicación
• Mensajes entre componentes• Definen “qué se debe hacer”
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
• Cualquier activity puede reutilizar funciones de otros componentes• Mediante solicitud en la forma de Intent
(invocación)
Mostrar una actividad desde otraIniciar un servicio
Enviar mensaje broadcast
Iniciar otra aplicación
8
ELEMENTOS
• Views• Componentes básicos para la construcción de la UI• Análogo a los controles de Java o .NET
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
• Es posible extender la funcionalidad de los controles básicos• Permite la creación de controles personalizados
Cuadros de texto Botones
Listas desplegables Imágenes
Barras de desplazamiento
9
ELEMENTOS
• Content providers• Mecanismos para compartir datos entre aplicaciones.• No se muestran detalles del almacenamiento interno
de los datos, su estructura o su implementación.• Podemos acceder a datos de otras aplicaciones
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
Mi Agenda
Agenda del sistema
Almacenamiento (BBDD) SQLite
10
ELEMENTOS
•Widgets• Elementos visuales e interactivos• Se muestran en la pantalla principal del terminal• Pueden recibir actualizaciones periódicas• Muestran información de la aplicación al usuario
desde la pantalla principal.Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
11
PROCESOS
• Una aplicación Android se ejecuta dentro de un proceso.• El sistema administra la memoria para ese proceso• Su tiempo de vida es controlado por el sistema• Android prioriza los procesos “jerarquía de procesos”
• Foreground Process• Primer plano• Aloja una activity en pantalla con la que se interactúa
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
onResume() llamado
IntentReceiver ejecutándose
• Eliminados como último recurso por el sistema
12
PROCESOS
• Visible Process• Aloja una activity• No está en primer plano• Ejemplo:
• Cuadro de diálogo
• Service Process• Aloja un service• No son visibles• Son importantes para el usuario
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
onPause() llamado
Iniciado con startService()
Conexión a servidor Reproducir música
13
PROCESOS
• Background Process• Aloja una activity no visible
• Su eliminación no repercute en la actividad del usuario• Numerosos en el sistema Lista de eliminación
• Empty Process• No aloja ningún componente• ¿Por qué existen?
• Mantienen una caché de la aplicación para su próxima activación.
• Eliminados con frecuencia para obtener memoria
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
onStop() llamado
14
DESARROLLO CON ANDROID
• ¿Qué necesitamos?
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
Conocimientos de Java
PC IDE
Plugin (ADT)
SDK
DVM
Librerías
Emulador
15
SDK ANDROID
• Instalar NetBeans• Instalar SDK Android• Configuramos el SDK de Android
• Menú Settings
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
Seleccionar
16
SDK ANDROID
• Creamos el emulador• Virtual Device New• Seleccionamos sus funcionalidades
• Añadimos el plugin de Android en NetBeans• Tools/Plugins/Settings/AddIntroducción a Android
Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
http://kenai.com/downloads/nbandroid/updates.xml
Insertar la URL
https://dl-ssl.google.com/android/eclipse/ Para Eclipse
17
IDE + PLUGIN
• Instalamos el plugin• Available plugins• Search text field: “android”• Chekear e instalar
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
• Comprobar que se ha instalado el servicio Android
Servicio Android
18
IDE + PLUGIN
• Añadimos la plataforma de Java• Tools/Java Platform/Add Platform• Añadimos una de Google Android
• Buscamos la carpeta del SDK• Finalizamos
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
19
CREAR UN PROYECTO
• Creamos un proyecto Android en el IDE• File/New Project
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
import android.app.Activity;import android.os.Bundle;import android.widget.TextView;
public class HelloAndroid extends Activity {/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(“Hola Mundo”); setContentView(tv); }}
Hola Mundo
20
ESTRUCTURA
• Estructura de directorios• /src – Actividades, clases y archivo R.java
• R.java: Autogenerado por Android (vbles. sistema)• /res/drawable – Imágenes de la aplicación• /res/layout – Vistas de la aplicación en XML• /res/values – Archivos XML con las variables de la
aplicación• Libraries – El IDE referencia al SDK de Android• AndroidManifest.xml – Archivo de manifiesto
• Define todas las actividades• Define la configuración del proyecto
• Ejecución y emulación: Dalvik Virtual Machine (DVM)
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
21
INTERFACES GRÁFICAS
• Son recursos de nuestra aplicación • Se almacenan en /res• Archivos XML• Layouts y componentes
• La separación de lógica e interfaz favorece la aplicación del patrón Modelo-Vista-Controlador (MVC)
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
ModeloVista
Controlador
- Interfaz de usuario
-Representación de la información
-Responsable de eventos- Lógica tras la interacción del usuario
22
COMPONENTES GRÁFICOS
• Layouts. Distribución de componentes en pantalla
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
<?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>
Linear Layout
<?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/TableLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent“xmlns:android="http://schemas.android.com/apk/res/android">
<TableRow android:id="@+id/TableRow01"> <TextView android:id="@+id/TextView01" android:text="First Name:" android:width="100px" /> <EditText android:id="@+id/EditText01" android:width="220px" />
…<TableRow android:id="@+id/TableRow03">
<Button android:id="@+id/Button01“ … android:layout_height="wrap_content" android:text="Submit" /> <Button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_...
</TableRow> </TableLayout>
Table Layout
23
COMPONENTES GRÁFICOS
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent“ android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:id="@+id/TextView01 … /> <EditText android:id="@+id/EditText01" android:layout_width="220px“ …
android:layout_toRightOf="@+id/TextView01" android:layout_below="@+id/RelativeLayout01" />
<EditText android:id="@+id/EditText02" … android:layout_below="@+id/EditText01" android:layout_alignLeft="@+id/EditText01" />
<TextView android:id="@+id/TextView02" android:layout_width=…
<Button android:text="Submit" android:id="@+id/Button01” …android:layout_below="@id/EditText02" android:layout_alignLeft="@id/EditText02" /> <Button android:text="Reset" android:id="@+id/Button02“ … android:layout_below="@id/EditText02" android:layout_alignRight="@id/EditText02" />
</RelativeLayout>
Relative Layout
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/AbsoluteLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<EditText android:id="@+id/EditText01" android:layout_width="200px" android:layout_height="wrap_content" android:layout_x="12px" android:layout_y="12px" />
<Button android:text="Search" android:id="@+id/Button01" android:layout_width="100px" android:layout_height="wrap_content" android:layout_x="220px" android:layout_y="12px" />
</AbsoluteLayout>
Absolute Layout
24
COMPONENTES GRÁFICOS
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
<?xml version="1.0" encoding="utf-8"?> <FrameLayout android:id="@+id/FrameLayout01" android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/ImageView01" android:src="@drawable/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="center" />
<TextView android:text="Android Partaker" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dip" android:layout_gravity="center_horizontal|bottom" android:padding="10dip" android:textColor="#AA0000" android:textStyle="bold" android:textSize="20px" android:background="#00000000" />
</FrameLayout>
Frame Layout
Source: http://androidpartaker.wordpress.com/2010/07/03/introduction-to-android-ui-layouts/
25
COMPONENTES GRÁFICOS
• Controles.
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
List View
Grid View
Button
SpinnerDatePicker CheckBox
RadioButton
EditText
AutoComplete Textview
ProgressBar
TimePicker
AnalogClock DigitalClock
RadioGroup TextView Gallery
ImageView
ImageButton
• Eventos. • Se gestionan a través de Listeners• Se implementa el método que captura el evento
26
DROID DRAW
• No integrado en el IDE ni en el SDK• Eclipse integra un Graphical Layout
• Diseño visual de la UI• Arrastrar componentes• Generar XML• Copiar XML
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
27
ALGUNAS LIBRERÍAS
• Set de librerías escritas en C/C++• Usadas por el desarrollador a través del framework Java de
Android
Introducción a Android Elementos Ciclo de vida: Activity ProcesosDesarrollo con Android Entorno de trabajo SDK Android IDE + Plugin Crear un proyecto Estructura Interfaces gráficas Componentes gráficos DroidDraw Algunas librerías
Implementación biblioteca C estándar Bibliotecas de medios
Bibliotecas de gráficos Bibliotecas OpenGL 3D Biblioteca SQLite
REFERENCIA: http://developer.android.com/index.html
28
Jesús Fontecha DiezmaAndroid Quick Start