Android basics

28
University of Castilla-La Mancha, Spain MAmI Research Lab Android Quick Start Jesús Fontecha Diezma

description

Tutorial of Android. Integration with NetBeans IDE

Transcript of Android basics

Page 1: Android basics

1

University of Castilla-La Mancha, SpainMAmI Research Lab

AndroidQuick Start

Jesús Fontecha Diezma

Page 2: Android basics

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

Page 3: Android basics

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

Page 4: Android basics

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

Page 5: Android basics

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

Page 6: Android basics

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

Page 7: Android basics

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

Page 8: Android basics

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

Page 9: Android basics

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

Page 10: Android basics

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

Page 11: Android basics

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

Page 12: Android basics

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

Page 13: Android basics

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

Page 14: Android basics

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

Page 15: Android basics

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

Page 16: Android basics

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

Page 17: Android basics

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

Page 18: Android basics

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

Page 19: Android basics

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

Page 20: Android basics

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

Page 21: Android basics

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

Page 22: Android basics

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

Page 23: Android basics

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

Page 24: Android basics

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/

Page 25: Android basics

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

Page 26: Android basics

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

Page 27: Android basics

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

Page 28: Android basics

28

Jesús Fontecha DiezmaAndroid Quick Start