Taller Práctico de Android
-
Upload
javier-munoz -
Category
Technology
-
view
5.576 -
download
0
description
Transcript of Taller Práctico de Android
![Page 2: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/2.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 3: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/3.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 4: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/4.jpg)
¿Quién soy?
Formación Académica● 2003 Ing. Informática
Universitat Jaume I
● 2008 PhD Ing. SoftwareUniversidad Politécnica de Valencia
Exp. Profesional● 2010 Nabbel
Director
● 2008 ProdevelopJefe de Proyectos, I+D+iMOSKitt http://www.moskitt.org
● 2007 IntegranovaJefe de Proyectos
@jmunozf
Experiencia con Android● https://play.google.com/store/apps/developer?id=Nabbel● Profesor Curso Introducción Android en Universidad de Verano de la Universidad CEU Cardenal Herrera
![Page 5: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/5.jpg)
¿Qué vamos a hacer hoy?
Lector del tiempoDatos de http://www.aemet.es/
AprenderemosUso básico del SDK
Estructura proyecto Android
Implementar pantallas
Parseo XML datos remotos
ContentProviders
Tareas en background
https://bitbucket.org/jmunoz/android-example-eltiempo
![Page 6: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/6.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 7: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/7.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 8: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/8.jpg)
Necesidad de Información
¿Cuándo empieza?
¿Dónde es?
¿Quién participa?
¿Qué ocurre ahora?
¿Cómo llegar?
¿Hay más parecidos?
![Page 9: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/9.jpg)
Escenarios de Aplicación
Museos
Fiestas Populares Parques Temáticos
Ferias
Festivales Musicales
Competiciones Deportivas
Eventos de Empresa
Congresos
![Page 10: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/10.jpg)
Algunas Aplicaciones Nabbel
San Silvestre2010
Eventosfera
Romeria 2011
INNOVALENCIA
Follow Us
![Page 11: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/11.jpg)
Algunas Aplicaciones Nabbel
![Page 12: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/12.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 13: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/13.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 14: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/14.jpg)
Android: Arquitectura
![Page 15: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/15.jpg)
Android: SDK
SDK + AVDPlataforma + Emuladores
Documentación + Ejemplos
Librerías de 3as partesGoogle Maps
GalaxyTab
Eclipse PluginProyecto Eclipse tipo Android
Herramientas Empaquetado
Debugging
Gestión del Emulador (copiar archivos, pantallazos, etc.)
![Page 16: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/16.jpg)
Android: Arquitectura Aplicaciones
ActivitiesPantallas... independientes entre sí
Concepto principal
ServicesFuncionalidad de larga duración sin UI
Services vs Threads → Services funcionan con app cerrada
Content ProvidersAcceso a datos entre aplicaciones
Independientes de su persistencia (XML, SQLite, remoto...)
Broadcast ReceiversEscucha mensajes de difusión
Ejemplos: pantalla apagada, archivo descargados, batería baja...
![Page 17: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/17.jpg)
Android: Arquitectura Aplicaciones
IntentsMensajes asíncronos entre componentes
Enlazan componentes en tiempo de ejecución
Contienen:
Action
URI
Extras
¿Qué acciones hay?
Definidas en SDK
OpenIntents:
Acciones estándar:ACTION_MAIN
ACTION_VIEW
ACTION_ATTACH_DATA
ACTION_EDIT
ACTION_PICK
ACTION_CHOOSER
ACTION_GET_CONTENT
ACTION_DIAL
ACTION_CALL
ACTION_SEND
ACTION_SENDTO
ACTION_ANSWER
ACTION_INSERT
ACTION_DELETE
ACTION_RUN
ACTION_SYNC
ACTION_PICK_ACTIVITY
ACTION_SEARCH
ACTION_WEB_SEARCH
ACTION_FACTORY_TESThttp://www.openintents.org/en/intentstable
![Page 18: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/18.jpg)
Android: Arquitectura Aplicaciones
Ejemplos de Acción/URI en IntentsACTION_VIEW content://contacts/people/1
ACTION_DIAL content://contacts/people/1
ACTION_DIAL tel:123
ACTION_EDIT content://contacts/people/1
Ejecución de IntentsIntent i = new Intent(this, IntentA.class);
startActivity(i);
Uri uri = Uri.parse( "http://iparty.aditel.org" );
startActivity( new Intent( Intent.ACTION_VIEW, uri ) );
![Page 19: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/19.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 20: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/20.jpg)
Presentación
Autobombo
Conceptos Básicos
Desarrollo Aplicación
![Page 21: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/21.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 22: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/22.jpg)
Paso 1: Crear proyecto
New > Android Projet
Select Build Target:Usaremos 2.1 (level 7)
![Page 23: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/23.jpg)
Android: Arquitectura Aplicaciones
Activity básica
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
![Page 24: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/24.jpg)
Ciclo de VidaActivities: Ciclo de Vida
![Page 25: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/25.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 26: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/26.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 27: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/27.jpg)
SDK y AVD Manager
● Gestionar emuladores
Paso 2: Crear Emulador
● AVD Manager
![Page 28: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/28.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 29: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/29.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 30: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/30.jpg)
Herramientas● Emulator
● Basado en QEMU● Diferentes instancias
– Tamaños de pantalla y densidad– Skins
● Soporta:– Ubicaciones– SD Cards
● NO soporta– Cámara– Multi-touch
Paso 3: Lanzar App en el Emulador
![Page 31: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/31.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 32: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/32.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 33: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/33.jpg)
Paso 4: Editar Interfaz de Usuario
Definición declarativa (XML) de la InterfazLayouts → Posicionamiento
Views → Interacción
![Page 34: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/34.jpg)
Android: Interfaz de Usuario
![Page 35: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/35.jpg)
Android: Interfaz de Usuario
<?xml version="1.0" encoding="utf-8"?>
<!-- Main Layout of Status Activity -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:gravity="center"
android:textSize="30sp"
android:layout_margin="10dp" android:text="@string/titleStatus"/>
<EditText android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="1"
android:hint="@string/hintText" android:id="@+id/editText"
android:gravity="top|center_horizontal"></EditText>
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/buttonUpdate"
android:textSize="20sp" android:id="@+id/buttonUpdate"></Button>
</LinearLayout>
![Page 36: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/36.jpg)
Android: Interfaz de Usuario
![Page 37: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/37.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 38: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/38.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 39: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/39.jpg)
Definición UI
Procedural
TextView tv= new TextView(this)
tv.setWidth(100);
tv.setHeight(60);
tv.setText("phone");
setContentView(tv);
Declarativa
<TextView
android:id="@+id/nameLabel"
android:text="phone:"
android:layout_width="100"
android:layout_height="60"
/>
Paso 5: Actualizar Interfaz de Usuario
Definición UI
![Page 40: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/40.jpg)
Android UI XML
● El atributo id identifica la vista dentro de la jerarquía
● El símbolo (@) indica que viene un identificador
● El símbolo (+) indica que es un nombre nuevo (no una referencia)
● Todas las vistas deben definir:● android:layout_width
● android:layout_height
<TextView android:id="@+id/nameLabel" android:text="phone:" android:layout_width="100" android:layout_height="60" />
Identificación Componentes UI
![Page 41: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/41.jpg)
Android UI XML
● Clase Java con los identificadores de recursos:
● Generada automáticamente al compilar (no tocar!!)● Se llamará: nuestro.paquete.R● Contiene identificadores de:
– Widgets de los Layouts– Los archivos contenidos en “res/” (layouts, drawables, strings,
colors, etc.)
● Widgets accesibles desde el código Java
Button btn = (Button) findViewById(R.id.acceptButton);
Referenciar Componentes UI
![Page 42: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/42.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 43: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/43.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 44: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/44.jpg)
Tratamiento de XML● Opciones para manejar el XML
● SAX– Basado en eventos
– Compatible con handlers Java pre-existente
– El más “estándar”
● SAX Simplificado– Se asocian eventos a etiquetas
– Evita gestión en el handler de situación actual
● DOM– Estructura tipo árbol
– Mayor consumo de memoria
● XMLPull– Lectura del XML guiada
– Pedimos elementos
Paso 6: Leer datos del servidor
![Page 45: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/45.jpg)
SAX Simplificado
public List<Noticia> parse(){ final List<Noticia> noticias = new ArrayList<Noticia>(); RootElement root = new RootElement("rss"); Element channel = root.getChild("channel"); Element item = channel.getChild("item"); item.setStartElementListener(new StartElementListener(){ public void start(Attributes attrs) { noticiaActual = new Noticia(); } }); item.setEndElementListener(new EndElementListener(){ public void end() { noticias.add(noticiaActual); } });
item.getChild("title").setEndTextElementListener( new EndTextElementListener(){ public void end(String body) { noticiaActual.setTitulo(body); } });
item.getChild("link").setEndTextElementListener( new EndTextElementListener(){ public void end(String body) { noticiaActual.setLink(body); } });
item.getChild("description").setEndTextElementListener( new EndTextElementListener(){ public void end(String body) { noticiaActual.setDescripcion(body); } });
. . .
Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler()); return noticias;
}
SAX Simplificado
![Page 46: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/46.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 47: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/47.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 48: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/48.jpg)
Android: Cosas que quizá no sepas (3)
Tareas en background: AsyncTask
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ProgressDialog dialog = new ProgressDialog(context);
protected void onPreExecute() {
this.dialog.setMessage("Progress start");
this.dialog.show();
}
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
dialog.dismiss();
}
} new DownloadImageTask().execute(“http://urlimage”);
Paso 7: Cargar Imagen en Background
![Page 49: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/49.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 50: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/50.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 51: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/51.jpg)
Spinner
● Desplegable de Selección● Adapter para las opciones
AdaptersAndroid: Cosas que quizá no sepas (3)Paso 8: Configurar Spinner
![Page 52: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/52.jpg)
Adapters
● Adaptar datos para una necesidad● LisAdapters (Interface)→ Datos para ser mostrados en ListView
● (abstract) android.widget.BaseAdapter
– Clase base para todos los Adapter
● android.widget.ArrayAdapter<T>
– Mostrar contenido de un Array o List
public ArrayAdapter (Context context, int resource, int textViewResourceId, List<T> objects)
Android: Cosas que quizá no sepas (3)Paso 8: Configurar Spinner
![Page 53: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/53.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 54: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/54.jpg)
Desarrollo Aplicación1.- Crear Proyecto
2.- Crear Emulador
3.- Lanzar App en el Emulador
4.- Editar Interfaz Usuario
5.- Actualizar Interfaz de Usuario
6.- Leer Datos del Servidor
7.- Cargar Imagen en Background
8.- Configurar Spinner
9.- Empaquetar para Distribución
![Page 55: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/55.jpg)
Compilar y Firmar● Utilizando Eclipse
● Opción del menú contextual:– Android Tools > Export Signed Application Package
● Asistente para seleccionar:– Archivo destino– Almacén de clave– Clave
● Zipalign– Ejecutado por el asistente– Los datos descomprimidos empiezan en
una cierta posición– Mejora de rendimiento en dispositivos
Android: Cosas que quizá no sepas (3)Paso 9: Empaquetar para Distribución
![Page 56: Taller Práctico de Android](https://reader035.fdocuments.mx/reader035/viewer/2022081801/546dab07af795962298b544c/html5/thumbnails/56.jpg)
Crear clave privada
● Condiciones● Contiene los datos tuyos o de tu organización● Validez después de 22 Octubre 2033● NO utilices la de debug
● Creación
● Pedirá:– Definir los datos de la organización
– Crear el password del almacén de claves
– Crear el password de la clave
$ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Android: Cosas que quizá no sepas (3)Creación Clave Privada