Introducción al desarrollo de aplicaciones en Android.

Slides:



Advertisements
Presentaciones similares
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
Advertisements

DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME Ing. Ronald Criollo.
Cetis No. 119 Profa. Graciela Prado Becerra
Desarrollo con Android
Android.
Arquitectura CLARO-TECNOTREE
Instituto Tecnológico Superior de Calkiní Ingeniería en Sistemas Computacionales TÓPICOS DE PROGRAMACIÓN MÓVIL David Enrique Ochoa Díaz Licenciatura en.
310 Diálogos de alerta. Un diálogo es una pequeña ventana que pide al usuario que tome una decisión o introduzca información adicional. Un diálogo no.
1.2 Sintaxis del lenguaje Java.
POO (Programación Orientada a Objetos)
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Igor Santos Grueiro. Ahora tenemos datos y datos …
Andy Rubin estudiante de Ciencias de la Computación graduado en 1986 General Magic (Magic Cup SO para PDAs) Artemis Research Danger.Inc (Desarrollando.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Herramientas del sistema Jhonatan Feriz
Sesión 5 Herramientas de creación de DSL gráficos (GMF)
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Patrones Creacionales
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Valor X Valor Y Punto (0,0) Coordenadas.
EMULADOR.  Una vez tengamos el proyecto listo para ejecutar, entra en escena el emulador de Android.  Éste proporciona una vista especial para comprobar.
“Android – Manejo de Eventos”
Curso de Java La tecnología Java
Módulo 8: Manejo de Errores y Excepciones
Despliegue de la aplicación Web
Módulo 7: Programación Orientada a Objetos en Visual Basic 2005.
Componentes Activities – Una activity es una ventana con un interfaz de usuario. Services – Un servicio es un componente que se ejecuta en segundo plano.
Introducción al Lenguaje. ¿Qué es PHP? O Es un lenguaje de programación que es interpretado por un servidor web. O El lenguaje es genérico. PHP está orientado.
Tema 1 INFORMÁTICA 4ºESO 14/15
MBA. LIDA LOOR MACIAS 1. 3 martes, 13 de octubre de 2014 OBJETIVO: El estudiante adquirirá los fundamentos básicos de la programación orientada a objeto.
ANDROID. ¿Qué es Android? Sistema operativo y plataforma de software desarrollada para equipos móviles. Inicialmente desarrollado por Google y recientemente.
INTRODUCCIÓN Se lo define como un programa para PRESENTACIONES. En sus orígenes estaba orientado a la creación de diapositivas para esquematizar contenidos.
Supongamos que un usuario desea escribir un informe e imprimirlo en una impresora conectada. Para realizar esta tarea, se precisa una aplicación de procesamiento.
Departamento de eléctrica y electrónica
TEMA 2: SISTEMAS OPERATIVOS. ENTORNO MONOUSUARIO
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Programación Orientada a Objeto
INTRODUCCION. Microsoft es la empresa fabricante de los distintos Sistemas o plataformas operativas conocidas como Windows los cuales nos han permitido.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) LENGUAJES DE PROGRAMACIÓN PARA EL DESARROLLO DE INTERFACES.
¿QUE SON LAS ACTUALIZACIONES?  Las actualizaciones son adiciones al software que pueden evitar problemas o corregirlos, mejorar el funcionamiento del.
Sistemas Operativos Tema 1 INFORMÁTICA 4ºESO 13/14.
Desarrollo DE apps móviles
ENTORNO DE ECLIPSE CREACIÓN DE ACTIVITIES Y SU CICLO DE VIDA.
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
María Camila Restrepo C. Mantener la Operatividad del sistema
INTRODUCCIÓN A MICROSOFT WINDOWS XP LIC. SAIDYS JIMÉNEZ QUIROZ ÁREA DE TECNOLOGÍA E INFORMÁTICA CESCOJ2011.
Desarrollo DE apps móviles
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
Introducción a GDevelop
AFM – Web File Manager Versión 5. Novedades técnicas – Forma de Implementación Siguiendo última tecnología de Microsoft: Framework.NET 3.5 Implementación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
 Un dispositivo móvil es aquel aparato pequeño que puede estar conectado a una red sea permanente o intermitente pueden ser:  Teléfono móvil  GPS 
Clases “ Es una Abstracción de un elemento del mundo real ”
En el presente trabajo, se explica los diferentes elementos que nos ofrece Microsoft Access, para hacer mas fácil y rápido la realización de bases de.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Aplicación Móvil. ¿QUÉ ES ANDROID? En los últimos años los teléfonos móviles han experimentado una gran evolución, desde los primeros terminales, grandes.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Píldoras Android I Introducción – 2ª parte. Overview Bloques básicos de una aplicación de Android Activity Intents El Manifest Recursos.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Introducción al desarrollo de aplicaciones en Android

Temario 1.Introducción 2.El SDK 3.Hello World 4.El ciclo de vida 5.Recursos 6.Layouts y Views 7.Interacción con el usuario 8.Menús 9.Preferencias 10.Intents 11.Depuración 12.El Market

1. Introducción a Android

Introducción Smartphones Android en cifras Historia de Android Funcionamento interno

Smartphones Teléfono Rádio MP3 GPS Cámera Internet Apps

Android en cifras #1 en activaciones ( al día) 23% de la cuota de mercado (finales 2010) apps en el market 100+ modelos de teléfono 40+ modelos de tablet

Android en cifras (cont.) Mòbils al món, segons Gartner (Abril 2011)

Android en cifras (cont.)

¿Qué es Android? Conjunto de software para dispositivos móviles que incluye: Sistema operativo Middleware Aplicaciones Open source Impulsado por Google Basado en Linux y Java

Historia Julio 2005: Google compra Android Inc. Noviembre 2007: Nace la OHA Febrero 2009: Release de 1.1 Abril 2009: Release de 1.5 (Cupcake) Octubre 2009: Release de 2.0 (Eclair) Deciembre 2010: Release de 2.3 (Gingerbread)

Versiones API level 3 (Cupcake) 7 (Eclair) 9 (Gingerbread)

Características Sistema base es Linux Máquina virtual Dalvik Librerías de sistema WebKit SQLite Media codecs Comunicaciones (GSM, bluetooth, wifi) Cámara, GPS, sensores Application framework

Arquitectura

Aplicaciones Java (.apk) Se ejecutan en un espacio aislado (instancia de Dalvik) No hay jerarquía Se comunican a través de Intents El market no es imprescindible

Más información Web oficial Android Wikipedia CatDroid

2. El entorno de desarrollo

Elementos necesarios Eclipse Android SDK Eclipse ADT plugin + ADV Manager

Instalación 1.Preparar el equipo (Instalar Eclipse) 2.Descargar el SDK 3.Instalar el plugin ADT para Eclipse 4.Instalar plataformas y APIs

Catclipse Descargar y abrir Ultimo update: Bolets Barruers Disponible para Windows y Mac, próximamente para Linux

3. Hola mundo

Creación de un nuevo proyecto

Elementos del proyecto nuevo Activity Manifest Resources

Activities Una Activity es una pantalla de la interfaz Las aplicaciones constan de una o más Activity Cada Activity es reponsable de guardar su estado Una Activity se encarga de: Crear una ventana donde colocar la interfaz Gestionar la interfaz Responder a los eventos (onClick, onLongClick, etc).

Una Activity básica

Manifest El Manifest es el archivo donde la aplicación le dice al sistema que elementos requiere para funcionar Siempre debe llamarse AndroidManifest.xml y estar en la raíz del proyecto Entre otras cosas contiene: Atributos de la aplicación y metadatos La declaración de actividades y otros componentes Librerías externas Permisos Se puede editar via GUI o editando el XML

Manifest inicial

Versión de la aplicación VersionCode es importante para el Market VersionName es importante para el usuario y/o nosotros

Definición de la actividad Definimos las actividades y sus intent-filter

Versión del SDK minSdkVersion, maxSdkVersion y targetSdkVersion

Permisos de la aplicación Avisan al usuario de las acciones que realizará la aplicación Listados en:

Recursos Un recurso es un elemento a utilizar durante la ejecución de la aplicación Existen diferentes tipos de recursos: Layouts Imágenes Cadenas de texto Sonidos Colores Temas Animaciones etc

Recursos Se almacenan en la carpeta resources Cada tipo de recurso tiene va en una carpeta específica Utilizan sufijos para determinar que recursos utilizar según contexto (tamaño de pantalla, idioma, orientación, etc.) Nombre en mínusculas La extensión se ignora (mismo nombre, diferente extensión se considera duplicado)

La clase R La clase R es generada y mantenida por el sistema y no debe ser modificada Contiene un identificador (int) único por cada recurso Podemos hacer referencia a un recurso en código por R... Ej.: R.layout.main

Nombrar recursos en XML Para referirnos a un recurso utilizamos la siguiente / Por Para definir un nombre /

Ejemplo

4. El ciclo de vida

Estados de una actividad El sistema gestiona las actividades como una pila Una actividad tiene cuatro estados: Activa: la actividad está en primer plano y tiene el focus (enfoque de usuario). Se encuentra en lo alto de la pila. En pausa: la actividad es visible, pero no tiene el focus. Ej: hay un diálogo sobre ella con el focus retenido. Detenida: La actividad está tapada por otra aplicación. Mantiene sus datos. Destruida: Una actividad detenida ha sido destruida para liberar memoria y ha perdido sus datos. Hay que recrearla completamente.

Ciclo de vida de una actividad

Métodos MétodoDescripciónSiguiente onCreate()Donde se crea la interfaz. Se le proporciona un bundle con su estado anterior. onStart onRestart()Justo antes de un onStart cuando venimos de onStoponStart onStart()La actividad se hace visible al usuarioonResume onStop onResume()La actividad está en primer plano interactuando con el usuario onPause La actividad va a ser detenida. Se utiliza para guardar información onResume onStop La actividad ya no es visible al usuario.onRestart onDestroy Última llamada antes de que la actividad sea destruida. El método isFinishing() nos ayuda a saber si es final o temporal

Otro grafo

Ejercicio (I) Clase android.util.Log Log. (String tag, String message) Métodos: e – error d – debug i – info v – verbose w – warning private static final String TAG = "MyActivity"; Log.v(TAG, "index=" + i);

protected void onDestroy() protected void onPause() protected void onRestart() protected void onResume() protected void onStart() protected void onStop()

5. Recursos

Imágenes Carpeta drawables Tres tamaños: ldpi, mdpi, hdpi Tamañoldpimdpihdpi Relación Launcher36x36 px48x48 px72x72 px Menu36x36 px48x48 px72x72 px Status Bar (<=2.2)19x19 px25x25 px38x38 px Status Bar (>=2.3)12x19 px16x25 px24x38 px Tab24x24 px32x32 px48x48 px

Iconos Simplificados Realísta pero no fotorealista Imágen frontal Iluminación superior

Formatos de imágen Recomendación: PNG-24 para imágenes con transparencias JPG para imágenes sin transparencias

Archivos de cadenas cadena ….

Arrays …

Colores Format: #rgb | #rrggbb | #rrggbbaa #FFF #000 #eb5200 #fff #444

Uso de recursos desde código El objeto R.tipo.id siempre devuelve un entero Para recuperar el recurso en cuestión utilizamos: getResources().get (Integer id) O getResources().getIdentifier(String nombre, String tipo)

7. Interacción con el usuario

Eventos Los layouts generan eventos de tipo onAcción Los eventos son acciones que interrumpen el flujo del código Se generan a partir de acciones externas Para implementar un método onAcción una clase debe implementar la interfaz onAcciónListener Para adjudicar la clase que implmementa el «escuchador» utilizamos el método setOnAcciónListener de la vista

Ejemplo con dos clases public class alHacerClick implements OnClickListener public void onClick(View v){ v.setText("Click aqui!"); }... public class Main extends Activity {... boton.setOnClickListener(new alHacerClick());... }

Ejemplo con la actividad public class Main extends Activity implements OnClickListener public void onClick(View v){ v.setText("Click aqui!"); }... boton.setOnClickListener(this);... }

Múltiples eventos en la misma clase Si tenemos a nuestra clase escuchando más de un evento OnClick, el parametro v nos permite averiguar que view ha disparado el evento. Podemos comparar v.getId() con un recurso public void onClick(View v){ switch(v) { case R.id.btnOk: … case R.id.btnCancel: … } (v.getId()==R.Id.btnOk)

Un brindis con el usuario La clase toast permite lanzar mensajes rápidos Toast.makeText(Context context, int resId, int duration) Toast makeText(Context context, CharSequence text, int duration) Duration: Toast. LENGTH_LONG | Toast.LENGTH_SHORT

Diálogos. setButtons AlertDialog: puede gestionar entre 0 y 3 respuestas AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?").setCancelable(false).setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivity.this.finish(); } }).setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create();

Diálogos. Una lista. final CharSequence[] items = {"Red", "Green", "Blue"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Pick a color"); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create();

Diálogos. Checkboxes final CharSequence[] items = {"Red", "Green", "Blue"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Pick a color"); builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create();

Crear un diálogo personalizado Hemos creado el layout custom_dialog Context mContext = getApplicationContext(); Dialog dialog = new Dialog(mContext); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle("Custom Dialog"); TextView text = (TextView) dialog.findViewById(R.id.text); text.setText("Hello, this is a custom dialog!"); ImageView image = (ImageView) dialog.findViewById(R.id.image); image.setImageResource(R.drawable.android); dialog.show();

Menús

Menús. Archivos de menú … <item /> …

Abrir el menú Sobrecargamos el método onCreateOptionsMenu public boolean onCreateOptionsMenu(Menu menu) Llamamos a GetMenuInflater MenuInflater inflater = getMenuInflater(); Llamamos al método inflate del MenuInflater MenuInflater inflater = getMenuInflater();

Procesar las opciones de menú Sobrecargamos el método public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.settings:... }

9. Preferencias

Archivos de preferencias Layout especializado que permite crear pantallas de configuración de forma rápida. <CheckBoxPreference android:key="music" android:defaultValue="true" /> <CheckBoxPreference android:key="hints" android:defaultValue="true"/>

Mostrar archivo de preferencias public class Prefs extends PreferenceActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); } En el manifest:

Leer y escribir preferencias PreferenceManager.getDefaultSharedPreferences(context)…. getTipo(Nombre, Predeterminado); setTipo(Nombre, Predeterminado);

Gestionar public boolean onPreferenceClick(Preference preference){ if (preference.getKey() == "About"){ Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.about); dialog.setTitle(getResources().getString(R.string.OptionAbout)); dialog.setCancelable(true); dialog.show(); } if (preference.getKey() == "DoLogin"){ findPreference("User").setEnabled( PreferenceManager.getDefaultSharedPreferences(this).getBoolean("DoLogin", false)); indPreference("Password").setEnabled( PreferenceManager.getDefaultSharedPreferences(this).getBoolean("DoLogin", false)); } return false; }

10. Intents

Intents Android se basa en multitud de pequeños componentes Estos componentes se comunican via Intents Mensajes utilizados para notificar a las aplicaciones de eventos Cambios de Hardware. Ej: tarjeta SD insertada. Recepción de datos. Ej: llegada de un sms Eventos de la apliación. Ej: se ha lanzado la aplicación Etc Es posible crear nuestros propio intents

Partes de un Intent Partes básicas La acción: una constante que indica la acción que se lanza. Ej.: VIEW_ACTION, EDIT_ACTION Los datos: uri indicando el recurso asociado. Ej.: content://contacts/people/1 Partes opcionales Una categoría: agrupa el tipo de Intent Un tipo MIME: indica el tipo de recurso si no concemos una uri Un componente: la clase que debe tener el receptor. Obvia las otras propiedades, pero es más frágil. Extras: un Bundle con información extra que el receptor va a necesitar

Ejemplos de Intent ANSWER_ACTION CALL_ACTION DELETE_ACTION DIAL_ACTION EDIT_ACTION FACTORY_TEST_ACTION GET_CONTENT_ACTION INSERT_ACTION MAIN_ACTION: Inicio de aplicación PICK_ACTION: permitir a otras apps elegir contenido de la tuya VIEW_CONTENT: para ver contenido EDIT_CONTENT: para editar contenido

Categorias de Intent ALTERNATIVE_CATEGORY BROWSABLE_CATEGORY DEFAULT_CATEGORY GADGET_CATEGORY HOME_CATEGORY LAUNCHER_CATEGORY PREFERENCE_CATEGORY SELECTED_ALTERNATIVE_CATEGORY TAB_CATEGORY TEST_CATEGORY

Llegando a la actividad adecuada Una actividad debe cumplir tres reglas para responder un Intent La actividad debe soportar la acción especificada La actividad debe soportar el tipo MIME si lo hay La actividad debe soportar TODAS las categorias nombradas en el Intent Uso de Intent-Filter en el manifest

Ejemplo

Iniciar otra Activity Uso del método startActivity(Intent) o startActivityForResult (Intent, int) Podemos pasar parametros con Intent.putExtra(int, ) Recibirlos con getIntent().getExtras().get (clave);

Devolver valores de una Activity Establecemos el valor a devolver con setResult(int resultCode) o setResult (int resultCode, Intent data) La actividad «llamadora» implementa el método onActivityResult(int requestCode, int resultCode, Intent data) resultCode puede ser uno de estos valores: RESULT_CANCELED RESULT_OK RESULT_FIRST_USER