You are on page 1of 45

______________________________________________________________________________________

INTRODUCCIN A LA PROGRAMACIN DE APPS PARA ANDROID




Vctor Santiago Praderas
Jaime Serquera
Guillermo Peris Fajarns
Beatriz Defez Garca

Introduccin a la Programacin de Apps para Android

- 1 -


Introduccin a la Programacin de Apps para Android

- 2 -

CONTENIDOS
1 Introduccin e Instalacin de los Componentes Necesarios. ................................................................ - 4 -
2 Mi Primera App: Hola Mundo. ........................................................................................................... - 5 -
2.1 Uso de Dispositivos Hardware. ...................................................................................................... - 7 -
3 Tipos de Lenguajes de Programacin y Caractersticas. ........................................................................ - 9 -
4 El Lenguaje Java. .................................................................................................................................. - 11 -
4.1 Variables. ..................................................................................................................................... - 11 -
4.2 Operadores .................................................................................................................................. - 14 -
4.3 Estructuras de Programacin ...................................................................................................... - 16 -
4.3.1 Bifurcaciones ....................................................................................................................... - 16 -
4.3.2 Bucles ................................................................................................................................... - 20 -
4.4 Clases ........................................................................................................................................... - 22 -
5 Android SDK ......................................................................................................................................... - 26 -
5.1 Organizacin de los Proyectos ..................................................................................................... - 26 -
5.2 Interfaz de Grfica ....................................................................................................................... - 30 -
Introduccin a la Programacin de Apps para Android

- 3 -

5.3 Actividades .................................................................................................................................. - 33 -
5.4 Dilogos y Notificaciones ............................................................................................................. - 37 -
5.5 Ciclo de Vida de la Actividad ........................................................................................................ - 38 -
5.6 Ejemplos Prcticos ....................................................................................................................... - 40 -
5.7 Distribucin de las Apps .............................................................................................................. - 40 -
6 Proyecto Final ...................................................................................................................................... - 43 -
7 Bibliografa ........................................................................................................................................... - 44 -


Introduccin a la Programacin de Apps para Android

- 4 -

1 Introduccin e Instalacin de los Componentes Necesarios.

Componentes a instalar para programar en Java:
o JDK (Java Development Kit): ir a la pgina de Oracle . El JDK lo encontrars dentro de Java
SE que aparece en Top Downloads.

o IDE (Integrated Development Environment) o entorno visual de desarrollo. Puede ser
NetBeans (disponible desde www.netbeans.org o desde el anterior link de Oracle) o
Eclipse (desde www.eclipse.org).

Componentes a instalar para programar en Android:
o El software necesario est disponible aqu, donde tambin nos guiar en el proceso de
instalacin (explicado en ingls).
Nota: el primer paquete que se ofrece es el ADT Bundle, pero slo te ser til si
vas a programar con Eclipse.
o Una vez instalado el Android SDK Tools, hay que abrir el SDK Manager y descargar los
Packages que queramos tener.
o Si tienes Eclipse ya instalado: instalar y configurar su plug-in (Explicado aqu).
o Para NetBeans: instalar y configurar su plug-in (Explicado aqu).
o Crear con el AVD Manager un AVD (android virtual device, emulador de dispositivo). Est
explicado en el link anterior.
Introduccin a la Programacin de Apps para Android

- 5 -

2 Mi Primera App: Hola Mundo.

Para crear un nuevo proyecto Android, NetBeans proporciona un asistente. Llegado el momento,
tendremos que elegir un Nombre de Proyecto, un Nombre de Package (que debe tener al menos
dos partes separadas por un punto) y seleccionar un target Andorid Platform.

Si al crear el proyecto obtenemos errores (aparecen signos de exclamacin en el cdigo) haremos
un Clean and Build (clic en el icono del martillo y la escoba).

Al ejecutar el proyecto
1
(clic en el tringulo verde), veremos que por defecto se ha creado un
programa Hola Mundo (en ingls). Su aspecto ser similar a este:


1
Ten en cuenta que el emulador tarda bastante en arrancar.
Introduccin a la Programacin de Apps para Android

- 6 -

Ahora podemos hacer el mismo Hola Mundo de una forma ms correcta si aadimos/sustituimos
el siguiente cdigo:

En Resources > Layout > main.xml:
<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>


En MainActivity.java:

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextView texto1 = (TextView) findViewById(R.id.text1);
// hay que aadir un "import"

texto1.setText("Hola Mundo");
}


Hemos conseguido mostrar el Hola Mundo desde el cdigo Java, que es lo que nos interesa.
Introduccin a la Programacin de Apps para Android

- 7 -

2.1 Uso de Dispositivos Hardware.

Al programar en Android es importante poder testear nuestra app en un dispositivo real, no emulado,
antes de distribuirla. En esta seccin vamos a detallar los pasos necesarios para configurar nuestro
dispositivo fsico y as, poder testear y depurar nuestras app en l a travs de un cable USB. Los dos pasos a
seguir son:

Habilitar depuracin USB en el dispositivo:

Para versiones Android 3.2 o inferiores puedes encontrar esta opcin en:
Ajustes > Aplicaciones > Desarrollo

Para versiones Android 4.0 o superiores esto se encuentra en:
Ajustes > Opciones de Desarrollador.

Nota: En Android 4.2 y posteriores, Opciones de Desarrollador est oculto por defecto. Para
activarlo hay que ir a Ajustes > Informacin del telfono y presionar Nmero de compilacin siete
veces. Si volvemos a la pantalla anterior ya podremos ver Opciones de Desarrollador.


Introduccin a la Programacin de Apps para Android

- 8 -

Configurar el ordenador para que detecte el dispositivo:

Para usuarios de Mac o Linux este paso no es necesario. Para usuarios de Windows, las
instrucciones se pueden encontrar aqu:

o Windows 7: http://developer.android.com/tools/extras/oem-usb.html#Win7

o Windows XP: http://developer.android.com/tools/extras/oem-usb.html#WinXp

o Windows Vista: http://developer.android.com/tools/extras/oem-usb.html#WinVista

Una vez hecho esto, al ejecutar o depurar nuestra app desde NetBeans, ste nos presentar una ventana
donde nos dar a elegir entre diferentes dispositivos, reales y emulados.






Introduccin a la Programacin de Apps para Android

- 9 -

3 Tipos de Lenguajes de Programacin y Caractersticas.

Las apps Android se programan usando los lenguajes Java y XML principalmente. XML se utiliza
para definir la interfaz grfica de usuario y otros aspectos como la localizacin, etc. Java se utiliza
para escribir el cdigo principal de la app.

Algunas de las principales caractersticas del lenguaje Java son:
o Lenguaje orientado a objetos: En Programacin Orientada a Objetos los datos son tratados
como objetos a los que se les aplican mtodos.
o Lenguaje interpretado: El cdigo java, que es bastante cercano al lenguaje humano, es
convertido por el intrprete a otro lenguaje ms cercano a la mquina donde se est
trabajando y se ejecuta.
o Portabilidad: Un programa hecho en Java puede funcionar en cualquier tipo de ordenador,
siempre que tenga instalado la Java Virtual Machine, que es la encargada de ejecutar el
cdigo que le proporciona su intrprete.

Lenguaje XML:
o Las siglas XML significan EXtensible Markup Language.
o XML est basado en etiquetas (markups) como el HTML.
o XML fue diseado para estructurar, guardar y transportar datos entre aplicaciones.
o Las etiquetas no estn predefinidas. Cada entorno define las suyas propias.
o XML es auto-descriptivo. Ejemplo:
Introduccin a la Programacin de Apps para Android

- 10 -


<note>
<to>Luis</to>
<from>Helena</from>
<heading>Recordatorio</heading>
<body>No me olvides este fin de semana!</body>
</note>



Adems de Java y XML, las apps Android pueden utilizar cdigo escrito en otros lenguajes como C o
C++. Para ello hay que instalar el NDK (Native Development Kit):
o Permite reusar cdigo de bibliotecas escritas en estos lenguajes.
o Su uso puede ser beneficioso slo en muy determinadas ocasiones, por ejemplo, cuando se
trate de operaciones que requieran mucho uso de la CPU y poco uso de memoria, tales
como procesado digital de la seal, simulaciones fsicas, etc.


Introduccin a la Programacin de Apps para Android

- 11 -

4 El Lenguaje Java.
4.1 Variables.
Una variable es un nombre que contiene un valor que puede cambiar a lo largo del programa.
Hay distintos tipos de variables segn el tipo de valor que guarden. Algunos de los ms comunes se
muestran en la siguiente tabla:
Tipo de Variable Tipo de Valor Ejemplo
int nmero entero 7
double nmero de punto flotante 7.1
char carcter a
String Cadena de caracteres* Hola
boolean valores true o false true
* String no es un tipo primitivo. Es una clase.
Para usar una variable hay que definirla e inicializarla. Para definirla indicaremos de qu tipo es y le
daremos un nombre. Para inicializarla le asignaremos un valor. Existen palabras reservadas en
Java que no se pueden utilizar como nombre de variables. stas, aparecen con color azul en
NetBeans y son las siguientes: abstract, double, int, strictfp, Boolean, else, interface, super, break,
extends, long, switch, byte, final, native, synchronized, case, finally, new, this, catch, float, package,
throw, char, for, private, throws, class, goto, protected, transient, const, if, public, try, continue,
implements, return, void, default, import, short, volatile, do, instanceof, static, while.
Introduccin a la Programacin de Apps para Android

- 12 -

La visibilidad o mbito de una variable queda limitada al bloque (cdigo entre llaves {}) donde se
haya definido.
Ejemplo. Crea un nuevo proyecto llamado MiConsola. A continuacin aadimos/sustituimos el
siguiente cdigo:

En Resources > Layout > main.xml:
<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>






Introduccin a la Programacin de Apps para Android

- 13 -

En MainActivity.java:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView texto1 = (TextView) findViewById(R.id.text1);

int miVariable = 0; // definimos e inicializamos miVariable
texto1.append("La variable miVariable vale " + miVariable + "\n");
// hemos utilizado append que en ingls significa agregar

// miVariable puede cambiar de valor en el transcurso del programa
miVariable = 1;
texto1.append("Ahora miVariable vale " + miVariable + "\n");
}

El resultado de salida en el emulador Android tiene que ser algo similar a:

Introduccin a la Programacin de Apps para Android

- 14 -

4.2 Operadores
Operadores aritmticos: suma (+), resta (-), multiplicacin (*), divisin (/), resto de la divisin (%).
Operadores de asignacin: igual (=) es el operador de asignacin por excelencia.
Operadores incrementales: incremento (++), decremento (--).
Operadores relacionales:
Operador Utilizacin El resultado es true
> op1 > op2 si op1 es mayor que op2
>= op1 >= op2 si op1 es mayor o igual que op2
< op1 < op2 si op1 es menor que op2
<= op1 <= op2 si op1 es menor o igual que op2
== op1 == op2 si op1 y op2 son iguales
!= op1 != op2 si op1 y op2 son distintos

Operadores lgicos:
Operador Nombre Utilizacin Resultado
& AND op1& op2 true si op1 y op2 son true. false en cualquier otro caso.
| OR op1| op2 true si op1 u op2 son true. false si los dos op son false
! negacin ! op true si op es false y false si op es true

Operador de concatenacin de cadenas de caracteres (+)
Introduccin a la Programacin de Apps para Android

- 15 -

Ejemplo: sustituye este cdigo en el proyecto MiConsola.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView texto1 = (TextView) findViewById(R.id.text1);

int miVariable = 2; // declaramos e inicializamos miVariable
texto1.append("miVariable vale " + miVariable + "\n");

// miVariable puede cambiar de valor en el transcurso del programa
miVariable = miVariable * 2; // multiplicacin
texto1.append("Ahora miVariable vale el doble,"
+ " es decir, " + miVariable + "\n");
}


Introduccin a la Programacin de Apps para Android

- 16 -

4.3 Estructuras de Programacin
Sin darnos cuenta ya hemos aprendido algunas estructuras de programacin. Por ejemplo las expresiones,
que son un conjunto de variables y otros elementos unidos por operadores. Una sentencia es una
expresin que acaba en un punto y coma (;). Tambin hemos utilizado los comentarios. A este respecto, en
el siguiente ejemplo veremos otra forma ms conveniente de incluir comentarios que se extiendan en ms
de una lnea.
// Este es un comentario en una lnea

/* Este comentario
se va a extender
en ms de una lnea
*/

Ahora vamos a estudiar dos tipos de estructuras de programacin nuevas: las bifurcaciones y los bucles.
Son estructuras importantes, ya que un programa no est limitado a una secuencia lineal de instrucciones,
si no que, por el contrario, en el cdigo pueden existir bifurcaciones, repeticiones, o toma de decisiones.
4.3.1 Bifurcaciones
Las bifurcaciones ofrecen la posibilidad de que ciertos bloques de cdigo se ejecuten o no, en base a una
toma de decisiones. De los dos tipos que existen, if y switch, nosotros estudiaremos el primero.
Introduccin a la Programacin de Apps para Android

- 17 -

Bifurcacin if:
Se usa para ejecutar un bloque de cdigo slo si se cumple una condicin. Esta condicin se
establece con una expresin booleana. Si el resultado de evaluar esa expresin es true, entonces
se ejecuta el bloque. Tiene la siguiente forma:

if (ExpresionBooleana) {
sentencia;

sentencia;
}
Bifurcacin if else:
Es una extensin de la anterior. El bloque que sigue al else se ejecuta si no se cumple la
condicin. Es decir, si al evaluar la expresin booleana da como resultado false.

if (ExpresionBooleana) {
sentencias;
} else {
sentencias;
}
Introduccin a la Programacin de Apps para Android

- 18 -

Bifurcacin if else if else:
Permite introducir ms de una condicin. Si no se cumple la primera, se evala la segunda, y as
sucesivamente. Si no se cumple ninguna condicin, entonces se ejecuta el bloque else.

if (ExpresionBooleana) {
sentencias;
} else if (ExpresionBooleana){
sentencias;
} else if (ExpresionBooleana){
sentencias;
} else {
sentencias;
}

Introduccin a la Programacin de Apps para Android

- 19 -

Ejemplo: Sustituye este cdigo en el proyecto MiConsola y prueba a darle diferentes valores a x.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView texto1 = (TextView) findViewById(R.id.text1);

int x = 0;

if (x > 0){
texto1.append("x es positivo");//si el bloque solo tiene una
} //sentencia, no hace falta poner llaves {}
else if (x < 0){
texto1.append("x es nevativo");
}
else{
texto1.append("x es cero");
}
}


Introduccin a la Programacin de Apps para Android

- 20 -

4.3.2 Bucles
Los bucles se utilizan para repetir un bloque de cdigo varias veces. El cdigo entre llaves {} se ejecutar
repetidamente mientras se cumpla una condicin. Un error tpico en programacin son los bucles infinitos,
que se producen porque la condicin que se ha establecido no llega nunca a cumplirse.
Bucle while:
Adopta la siguiente forma, donde las Sentencias se repiten mientras la ExpresionBooleana, o
condicin, sea true.

while (ExpresionBooleana){
Sentencias;
}
Bucle for:
for (Inicializacin ; ExpresionBooleana ; Incremento){
Sentencias;
}
Donde Inicializacin se ejecuta antes del bucle. Incremento se ejecuta despus de Sentencias, que
se repiten mientras ExpresionBooleana sea true.
Introduccin a la Programacin de Apps para Android

- 21 -

Ejemplo: Sustituye este cdigo en el proyecto MiConsola.
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView texto1 = (TextView) findViewById(R.id.text1);

for (int i = 10; (i > 0); i--){
texto1.append("" + i + ", "); //una sola sentencia no necesita {}
}
texto1.append("CERO!");
}


Como ejercicio se propone hacer un programa que d la misma salida pero utilizando el bucle while.
Introduccin a la Programacin de Apps para Android

- 22 -

4.4 Clases
En los ejemplos con los que hemos trabajado hasta ahora ya hemos utilizado las clases. Puedes revisar los
ejemplos e identificar esta lnea de cdigo despus de los import:


public class MainActivity extends Activity

Una definicin simple, pero adecuada para este curso de introduccin a la programacin, es la de
considerar una clase como un contenedor que agrupa, dentro de su bloque entre laves {}, variables y
mtodos o funciones.

Como las variables ya las hemos estudiado, vamos a tratar ahora las funciones. Una funcin es un bloque
de sentencias que se ejecutan al ser llamada desde algn punto del programa. Nos permiten estructurar
nuestro programa en una forma modular. Adoptan la siguiente forma:

acceso tipo nombre (argumento1, argumento2, ...) {
sentencias;
}
Donde:
acceso define los derechos de acceso a esta funcin. Por ejemplo, ser public si se pueden llamar
desde otras clases y ser private si slo se le puede llamar desde dentro de la clase.
tipo especifica el tipo de datos que devuelve la funcin. Ser void si no devuelve nada.
Introduccin a la Programacin de Apps para Android

- 23 -

nombre es el identificador que nosotros le demos para que la funcin pueda ser llamada.
argumentos (tantos como sean necesarios): cada argumento consiste en un indicador de tipo
seguido de un nombre, como las declaraciones que hemos visto de cualquier variable (por ejemplo:
int x). De hecho, los argumentos actan como variable locales dentro de la funcin. Van separados
por comas.
sentencias: es el cuerpo de la funcin en un bloque entre llaves {}. Si la funcin devuelve un valor,
lo hace con una sentencia return.
Ejemplo:
Introduccin a la Programacin de Apps para Android

- 24 -

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView texto1 = (TextView) findViewById(R.id.text1);

int a, b, resultado;
a = 1;
b = 3;

resultado = suma(a,b); // llamada a la funcin suma con 2 argumentos
texto1.append("La funcin suma(a,b) ha devuelto " + resultado);
}

//--- Aqu definimos la funcin suma
public int suma(int sumando1, int sumando2){
return sumando1 + sumando2;
}


Introduccin a la Programacin de Apps para Android

- 25 -


Un objeto es un ejemplar concreto de una clase. En trminos de variables, la clase sera el tipo y el
objeto la variable. Por lo general, los objetos se crean con el comando new.

Podemos referirnos a las funciones y variables pblicas de un objeto desde cualquier parte del
programa poniendo el nombre del objeto seguido de un punto (.) y a continuacin el nombre de la
variable o funcin. Como ejemplo mostramos esta sentencia que ya hemos utilizado:


texto1.append("CERO!");



Introduccin a la Programacin de Apps para Android

- 26 -

5 Android SDK
5.1 Organizacin de los Proyectos











Los proyectos Android estn formados por
numerosas carpetas y archivos. Afortunadamente,
los IDE generan todo lo bsicamente necesario para
que el proyecto pueda funcionar nada ms ser
creado.

Ya estamos familiarizados con algunos de estos
componentes. A continuacin veremos otros
elementos importantes.
Introduccin a la Programacin de Apps para Android

- 27 -

Important files > Android manifest file: es un archivo XML indispensable en toda aplicacin. El
manifiesto presenta informacin sobre la app al sistema Android. Entre otras cosas, hace lo
siguiente:
o Le da un nombre de package que ser un identificador nico de la aplicacin.
o Establece la versin de la app. Esto es til para avisos automticos de actualizaciones.
o Describe los componentes de la aplicacin (actividades, servicios, etc.).
o Especifica los permisos que la app necesita (por ejemplo, para tener acceso a internet).
Estos permisos los deber aceptar el usuario al instalar la app.
o Declara el nivel mnimo de API Android que requiere la app.
En la siguiente pgina podemos ver un manifiest file de ejemplo.

Introduccin a la Programacin de Apps para Android

- 28 -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="conversor.curso"
android:versionCode="1"
android:versionName="1.0">

<uses-sdk android:minSdkVersion="3" />

<uses-permission android:name="android.permission.INTERNET" />

<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<activity android:name="ConversorMainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>


Introduccin a la Programacin de Apps para Android

- 29 -

Resources > Layout: En este directorio debe haber un archivo por cada pantalla que tenga nuestra
app. Son archivos XML que definen las interfaces grficas. Ya hemos trabajado con ellos.
Resources > values > strings.xml: Este archivo agrupa todas las cadenas de texto que aparecen en
nuestra app. Ser til, por ejemplo, a la hora de preparar nuestra app en varios idiomas. Para ello
deberemos crear un archivo strings.xml por cada idioma, que se guardarn en una carpeta con el
nombre values-CodigoPais (por ejemplo, para la versin en francs sera values-fr).

Resources > drawable: Aqu dejaremos las imgenes que utilice nuestra app. Puede haber varias
carpetas diferenciando varias densidades de pantalla (drawable-ldpi, drawable-mdpi, drawable-
hdpi). Esto se hace para acomodarse a diferentes dispositivos.


Introduccin a la Programacin de Apps para Android

- 30 -

5.2 Interfaz de Grfica
Las interfaces grficas en Android se construyen con una jerarqua de objetos ViewGroup y View. Los
objetos View son widgets tipo botones, campos de texto, etc.

Los objetos ViewGroup son contenedores invisibles que definen cmo los elementos que contienen se
van a ordenar. Como ejemplo, recordad que ya hemos trabajado con los Linear Layouts que ordena los
objetos en forma lineal, bien sea horizontal o verticalmente. Otro tipo bsico de organizacin es el
Relative Layout.



Jerarqua de objetos Linear Layout Relative Layout


Introduccin a la Programacin de Apps para Android

- 31 -

Ejemplo prctico: vamos a crear un linear layout que incluya un campo de texto y un botn. En la
siguiente seccin aprenderemos a enviar el contenido del campo de texto a otra pantalla al apretar el
botn.
Para ello, creamos un nuevo proyecto Android. Abrimos el archivo Resources > layout > main.xml. En
l vemos que por defecto NetBeans ha creado un linear Layout. Lo primero que vamos a hacer es
eliminar el elemento <TextView> que aparece tambin por defecto. El archivo quedara:
<?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"
>

</LinearLayout>

Ahora aadiremos un campo de texto (objeto EditText) :
<EditText android:id="@+id/edit_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Escribe un mensaje" />

Introduccin a la Programacin de Apps para Android

- 32 -

Por ltimo, aadimos un botn (objeto Button):
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enviar" />

El archivo main.xml completo quedar 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"
>
<EditText android:id="@+id/edit_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Escribe un mensaje" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enviar" />
</LinearLayout>


Ahora puedes ejecutar el proyecto para ver cmo queda.

Introduccin a la Programacin de Apps para Android

- 33 -

5.3 Actividades
Una aplicacin Android se organiza en actividades. Cada actividad realiza justo eso: una tarea concreta y
bien definida, para lo cual se sirve (normalmente) del rea completa de la pantalla. Por ejemplo, un juego
con un tablero y una lista de rcords estara formado por dos actividades (el tablero y los rcords). Por
contra, un pequeo dilogo para preguntar un dato puntual o para informar no sera (no debera ser) una
actividad.

Ya hemos visto en nuestro cdigo, que toda actividad deriva de la clase Activity:
public class MainActivity extends Activity{
...
}

Tambin hemos visto que un mtodo obligado que incluye toda actividad es onCreate():
public void onCreate(Bundle savedInstanceState){
...
}

Ahora vamos a continuar con el ejemplo prctico de la seccin anterior. Lo primero que tenemos que hacer
es asignarle un mtodo al botn para que cuando sea pulsado realice una accin, que ser la de enviar el
texto a otra actividad. Para ello, incluiremos en su definicin XML una lnea con el atributo android:onClick.
Introduccin a la Programacin de Apps para Android

- 34 -

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enviar"
android:onClick="enviarMensaje"/>

Ahora iremos a la actividad principal (MainActivity class) para implementar el mtodo enviarMensaje del
botn (recuerda siempre aadir los import necesarios).
//--- Mtodo llamado cuando el usuario hace clic en el botn "Enviar"
public void enviarMensaje(View v) {
// Haz algo
}

Crear un Intent:
Un intent es un objeto que contiene la informacin necesaria para que el sistema Android lleve a cabo una
accin. Un uso habitual es el de iniciar otra actividad.

Dentro del mtodo anteriormente creado enviarMensaje(), crea el siguiente Intent para iniciar la
actividad llamada OtraActividad (que luego crearemos):

Intent intent = new Intent(this, OtraActividad.class);

A parte de iniciar otra actividad, un Intent tambin sirve para pasarle datos a esa actividad. Para ello,
primero pediremos referencia a nuestro campo de texto con findViewById y as poder capturar el texto que
Introduccin a la Programacin de Apps para Android

- 35 -

escribamos en l. Luego aadiremos el texto al Intent haciendo uso de su mtodo putExtra. Finalmente
daremos la orden de iniciar la otra actividad. El mtodo completo quedara as:
//--- Mtodo llamado cuando el usuario hace clic en el botn "Enviar"
public void enviarMensaje(View v) {
Intent intent = new Intent(this, OtraActividad.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String mensaje = editText.getText().toString();
intent.putExtra("datos", mensaje);
startActivity(intent);
}

Crear la otra actividad:
Dentro de NetBeans vamos a File > new file En la ventana Categories elegimos Android y en File Types
elegimos Activity Class. Pulsamos en Next y en la siguiente ventana le damos el nombre OtraActividad. En
Package podemos elegir el mismo que ya tenemos para la actividad principal.

Aadirla en el manifest:
Todas las actividades deben estar declaradas en el Android manifest file usando el elemento <activity>:

<activity android:name="OtraActividad"
android:label="OtraActividad">
</activity>


Introduccin a la Programacin de Apps para Android

- 36 -

Mostrar el mensaje:
El onCreate() de OtraActividad quedara:

public void onCreate(Bundle icicle) {
super.onCreate(icicle);

// Capturar el mensaje
Intent intent = getIntent();
String mensaje = intent.getExtras().getString("datos");

// Crear el objeto TextView por cdigo.
// Es una alternativa a crear una interfaz en XML.
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(mensaje);

// Establecer el textView como el "layout" de la actividad
setContentView(textView);
}


Introduccin a la Programacin de Apps para Android

- 37 -

5.4 Dilogos y Notificaciones
A parte de iniciar una segunda actividad para obtener informacin del usuario (de la forma vista
anteriormente), pueden abrirse pequeas ventanas en el contexto de la actividad actual para mostrar
avisos, pedir confirmacin o recabar alguna informacin (si no se necesita utilizar la pantalla completa).

Aqu y aqu podemos encontrar toda la informacin que proporciona el equipo de Android. Para este curso
de introduccin, vamos a tratar solo los Toasts. Un toast es un pequeo aviso con un texto breve que
aparece y se desvanece por s mismo. La forma ms rpida de mostrarlo es:


Toast.makeText(getApplicationContext(),
"Vamos a la otra actividad", Toast.LENGTH_SHORT).show();

Como ejercicio, proponemos copiar y pegar la sentencia anterior en un lugar apropiado del ejercicio
prctico de la seccin anterior sobre actividades.


Introduccin a la Programacin de Apps para Android

- 38 -

5.5 Ciclo de Vida de la Actividad



Introduccin a la Programacin de Apps para Android

- 39 -

Para apps sencillas como las desarrolladas en este curso de introduccin no hace falta programar
todos estos mtodos callback. Para apps ms complejas, ser necesario implementar alguno de
estos mtodos para que la app se comporte tal y como el usuario espera, incluyendo:
o que no falle si el usuario recibe una llamada telefnica o decide abrir otra app.
o que no consuma recursos importantes del sistema cuando el usuario no est activamente
usndola.
o que no pierda el progreso del usuario si deja la app y vuelve a ella ms tarde.
o que no falle o pierda el progreso del usuario cuando se cambie la orientacin de la pantalla.

Es importante saber qu eventos provocan una llamada a cada uno de estos mtodos, algo que no
aparece en el grfico anterior. Para ello vamos a experimentar con el cdigo que se proporcionar
en clase. Para utilizarlo crea un nuevo proyecto con los siguientes datos:
o Activity Name: CicloVidaMainActivity
o Package Name: ciclo.vida.curso.citg

Se recomienda experimentar con un dispositivo fsico. Qu provocan los siguientes eventos?:
o realizar una rotacin.
o recibir una llamada telefnica.
Introduccin a la Programacin de Apps para Android

- 40 -

5.6 Ejemplos Prcticos

En clase se presentarn ejemplos prcticos acorde con el nivel del grupo de alumnos.

5.7 Distribucin de las Apps

En esta seccin vamos a ver cmo preparar nuestra app para que pueda distribuirse en Google Play. Un
requisito
2
de toda app es que vaya firmada por una clave que nos identifique como desarrolladores. Incluso
las versiones debug, que ya hemos probado, han sido firmadas sin darnos cuenta con una clave que genera
automticamente NetBeans. Pero esta clave no es vlida para distribuir la app en Google Play. A
continuacin se muestran los pasos necesarios para firmar nuestras apps y generar una versin release.

Lo primero que debemos hacer es crear un directorio donde guardar nuestras claves, por ejemplo:
c:\MyKeys\

Seguidamente debemos localizar la herramienta keytool.exe que puede estar tpicamente en este
directorio:
C:\Program Files\Java\jdk1.7.0_01\bin


2
Tambin es requisito quitar el atributo android:debuggable del manifiesto, si es que lo tenemos.
Introduccin a la Programacin de Apps para Android

- 41 -

Despus, abrimos la consola de comandos de Windows y nos situamos en el directorio anterior:
>cd C:\Program Files\Java\jdk1.7.0_01\bin

A continuacin ejecutamos keytool.exe con los siguientes parmetros:
>keytool -genkey -v -keystore c:\MyKeys\release.keystore -alias mi_primera_key -keyalg RSA -keysize 2048
-validity 20000

Nos pedir una contrasea (que tiene que ser de al menos 6 dgitos) y seguidamente los datos que me
identificarn en esta clave. Finalmente nos preguntar si los datos son correctos:

Introduzca la contrasea del almacn de claves:
Volver a escribir la contrasea nueva:

Cules son su nombre y su apellido?
[Unknown]: Jaime serquera
Cul es el nombre de su unidad de organizacin?
[Unknown]: CITG
Cul es el nombre de su organizacin?
[Unknown]: UPV
Cul es el nombre de su ciudad o localidad?
[Unknown]: Valencia
Cul es el nombre de su estado o provincia?
Introduccin a la Programacin de Apps para Android

- 42 -

[Unknown]: Valencia
Cul es el cdigo de pas de dos letras de la unidad?
[Unknown]: ES
Es correcto CN=jaime serquera, OU=CITG, O=UPV, L=Valencia, ST=Valencia, C=ES?
[no]: si

Generando par de claves RSA de 2.048 bits para certificado autofirmado (SHA256withRSA) con una validez
de 20.000 das
para: CN=Jaime serquera, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown

Introduzca la contrasea de clave para <mi_primera_key>
(INTRO si es la misma contrasea que la del almacn de claves):

Una vez generado el fichero o almacn de claves, debemos buscar el archivo ant.properties de nuestro
proyecto en NetBeans. Lo abrimos y aadimos las siguientes lneas:
key.store = C:\\MyKeys\\release.keystore
key.alias = mi_primera_key

Finalmente, generaremos la versin release de nuestra app. Desde NetBeans: ImportantFiles > Build script
> botn derecho > Run Target: primero clean y luego release.

En ambos casos nos preguntar la contrasea del almacn y del alias.
Introduccin a la Programacin de Apps para Android

- 43 -


Si todo ha ido bien, encontraremos en el directorio bin el fichero miAplicacion-release.apk que podremos
distribuir en Google Play.

6 Proyecto Final

En clase se propondrn varios proyectos con distintos niveles de dificultad.

Introduccin a la Programacin de Apps para Android

- 44 -

7 Bibliografa

"Android Developers". Google. Disponible en http://developer.android.com/index.html#. ltimo acceso,
Junio, 2013.

Aprenda Java como si Estuviera en Primero. Garca, J. et al. Campus Tecnolgico de la Universidad de
Navarra. San Sebastin, 2000.

C++ Language Tutorial. Souli, J. Disponible en cplusplus.com. ltima revisin, Junio, 2007.

Dispositivos Mviles. Gua de la asignatura. Bataller, J. Universidad Politcnica de Valencia. Curso 2011-
12.

Introduccin a Android. Bez, M. et al. Universidad Complutense de Madrid.

"Introduccin a la Programacin de Apps para Android". Santiago-Praderas V., Serquera, J., Lengua, I. y
Dunai, L. Centro de Investigacin en Tecnologas Grficas. Universidad Politcnica de Valencia. Abril, 2013.

You might also like