SlideShare una empresa de Scribd logo
1 de 51
1
University of Castilla-La Mancha, Spain
MAmI Research Lab
Android Basics
v2.5
Jesús Fontecha Diezma
http://www.jesusfontecha.name
Introducción (I)
2
• 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
http://www.jesusfontecha.name
Introducción (II)
3
• Evolución y Fragmentación
• Cada año (aprox.) un nuevo firmware
4 de Septiembre de 2013
http://venturebeat.com/2013/09/04/google-updates-android-
fragmentation-numbers-and-the-numbers-are-looking-better-
than-ever/
http://kitkat.com
http://www.jesusfontecha.name
4
• Actividades (activities)
• El más importante
• Representa una pantalla individual
• Incluye fragmentos y vistas
Componentes de una aplicación Android
• Servicios (services)
• Se ejecutan en segundo plano
• Realizan acciones incluso cuando
las actividades no están visibles
• Proveedores de contenido (content
providers)
• Representan almacenes de datos
compartidos entre aplicaciones
• Gestionan las BBDD de las aplicaciones
• Receptores broadcast (broadcast receivers)
• Creados por aplicaciones que consumen
broadcast intents.
• Intenciones (intents)
• Permiten el paso de información
entre actividades y servicios o al
todo el sistema (broadcast intents)
• Definen “qué se hace”
• Notificaciones (notifications)
• Referente a las notificaciones
del sistema que no
interrumpen la actividad
• Se pueden ver como un tipo
de servicios
• Vistas
• Componentes básicos de la interfaz gráfica
• Análogo a los controles de Java o .NET
http://www.jesusfontecha.name
5
• Actividad y Content Provider
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();
}
Información detallada del contacto
Listado de nombres y teléfonos
Ejemplos de componentes (I)
Content provider
http://developer.android.com/guide/components/index.html
http://www.jesusfontecha.name
6
Ejemplo de componentes (II)
• Servicios
Capturar posición GPSCapturar datos acelerómetro
• Broadcast receivers
Batería Baja Llamada Cambio zona horariaTarjeta SD Otras aplicaciones
• Intents
Mostrar una actividad desde otra Iniciar un servicioEnviar mensaje broadcast Iniciar otra aplicación
Cuadros de texto BotonesListas desplegables ImágenesBarras de desplazamiento
• Vistas
• Widgets
• Elementos visuales e interactivos
• Se muestran en la pantalla principal del terminal
http://developer.android.com/guide/components/index.html
http://www.jesusfontecha.name
7
Cuando es visible
Primera vez
Cuando se oculta
Asignación de memoria
Finaliza
Otra actividad en primer plano
Ciclo de vida/estados de una actividad
• Clases que extienden de Activity
http://www.jesusfontecha.name
8
Métodos de transición entre estados
• onCreate(Bundle)
• Invocado cuando la actividad arranca por primera vez
• Utilizado para tareas de inicialización como crear la interfaz de usuario de la actividad
• onStart()
• Invocado cuando la actividad va a ser mostrada al usuario
• onResume()
• Invocar cuando la actividad va a empezar a interactuar con el usuario
• onPause()
• Invocado cuando la actividad pasa a segundo plano porque otra actividad es lanzada con mayor
prioridad
• onStop()
• Invocado cuando la actividad deja de ser visible y no se necesitará durante un tiempo
• onRestart()
• Invocado cuando la actividad sale del estado de parada y entra en estado activo
• onDestroy()
• Se invoca cuando la actividad pasa a ser destruida
• onSaveInstanceState(Bundle)
• Permite a la actividad guardar su estado (ej: los valores introducidos en un campo de texto)
• No necesita ser redefinido porque la clase Activity ya guarda todo el estado de por sí.
• onRestoreInstanceState(Bundle)
• Recupera el estado guardado por el método anterior
• Al igual que antes, no necesita ser redefinido
http://www.jesusfontecha.name
9
• A partir de Android 3.0 y el crecimiento de terminales y tablets
surge el problema de la fragmentación.
• Solución: nacen los fragmentos… ¡qué paradoja!
Fragmentación en Android
¿Qué son?
Sección modular de una actividad
• Tiene su propio ciclo de vida
• Recibe sus propios eventos de entrada
• Puede construirse y destruirse en ejecución
• “como una subactividad que puedes reutilizar en distintas actividades”
Principio: Todas las aplicaciones Android deberían funcionar en todos los dispositivos Android
http://www.jesusfontecha.name
10
• Misma Aplicación, diferentes dispositivos
Galaxy tab 10”
Galaxy S
Actividad
Fragmentos
Posibles transiciones
Ejemplo uso de fragmentos
http://www.jesusfontecha.name
11
• ¿Qué suponen?
• En aplicaciones antiguas:
•  Uso de librerías de apoyo a la compatibilidad (support
libraries).
•  Reescritura de clases
• En aplicaciones nuevas:
•  Versatilidad: Misma app compatible para cualquier
dispositivo.
•  Aumentar la importancia del diseño de las actividades.
 Más difícil diseñar una buena app.
•  Reutilización de fragmentos.
• Cambian “un poco” aspectos iniciales de las actividades.
Actividades compuestas por componentes vs Actividades compuestas por fragmentos
Ventajas e inconvenientes de los fragmentos
http://www.jesusfontecha.name
12
• Patrones de diseño
• Unificar y mejorar la apariencia de la interfaz gráfica
• http://www.androidpatterns.com/
, listas, pestañas, menús, etc.
“No es una obligación, pero sí una recomendación”
(en ciertos casos necesaria para poder publicar la app)
Hacia la estandarización de aplicaciones (I)
http://www.jesusfontecha.name
13
• Action Bars
• Similar a una barra de tareas
• Permite agrupar acciones
• De acceso intuitivo y rápido
Hacia la estandarización de aplicaciones (II)
• Themes
• Holo http://android-developers.blogspot.com.es/2012/01/holo-everywhere.html
http://www.jesusfontecha.name
14
• ¿Qué necesitamos?
DVM
Librerías
Emulador
Desarrollo con Android
http://www.jesusfontecha.name
15
1. Instalar Eclipse
2. Instalar SDK Android
http://developer.android.com/sdk/index.html
• Instalar las librerías necesarias
3. Añadir un AVD – SDK Manager
• Tools > Manage AVDs > New
• Definir características y crear
4. Configurar Plugin ADT - Eclipse
• Help > Install New Software
• Introducir url proveedor: https://dl-ssl.google.com/android/eclipse/
O… descargar el bundle
Instalación del SDK en Eclipse
http://www.jesusfontecha.name
16
• La separación de lógica e interfaz favorece la aplicación del patrón Modelo-
Vista-Controlador (MVC)
ModeloVista
Controlador
- Interfaz de usuario
-Representación de la
información
-Responsable de eventos
- Lógica tras la interacción del usuario
Modelo – Vista - Controlador
http://www.jesusfontecha.name
17
Consideraciones previas
• Actividades
• Las aplicaciones Android están formadas por actividades
• Todas las actividades de nuestra aplicación y de otras se
van almacenando en la pila de actividades
• Procesos
• Las aplicaciones no tienen control sobre su ciclo de vida
• Android puede matar sin avisar a los procesos que
considera innecesarios para mantener al sistema estable
• Vistas
• Las interfaces de usuario de una actividad se crean
mediante vistas (views)
• Las vistas se agrupan en diseños (layouts) que muestra la
aplicación
http://www.jesusfontecha.name
18
1. New Project > Android Application Project
2. Definir las propiedades iniciales de la App
• Nombre
• SDK desarrollo
• Mínimo SDK requerido
• Icono de aplicación
• Actividad inicial (opcional)
Creación de un proyecto Android
http://www.jesusfontecha.name
19
Vista del entorno de desarrollo
http://www.jesusfontecha.name
20
• Código:
• /src – Clases java y archivo R.java
• R.java: Autogenerado por Android (vbles. sistema)
• Recursos:
• /res/drawable – Imágenes de la aplicación
• /res/layout – Vistas y diseños de la aplicación
• /res/values – Estilos (colores, dimensiones) y variables de
la aplicación
• /res/anim – Animaciones
• /res/menu – Menús de la aplicación
• /res/xml – Varios
• Libraries – Librerías y referencias
• AndroidManifest.xml – Archivo de manifiesto
• Define la configuración del proyecto
Estructura de directorios
http://www.jesusfontecha.name
21
• Se accede a través de la clase estática R generada en tiempo de compilación
• La clase R incluye subclases para cada tipo de recurso (ej: R.string, R.drawable)
• Los recursos se definen como variables de la clase (ej: R.string.app_name,
R.drawable.icon)
• El valor de las variables es una referencia al recurso, no a una instancia del recurso
• La tabla de recursos de una app está representada por una instancia de la clase
Resources
• Ejemplo de extracción de recursos:
Acceso a los recursos desde código
1. Resources myResources = getResources() ;
2. CharSequence styledText = myResources . getTex t (R.string.stop_message) ;
3. Drawable icon = myResources . getDrawabl e (R.drawabl e.a pp_icon) ;
4. String[ ] stringArray;
stringArray= myResources.getStringArray(R.array.string_array);
• Acceso a los recursos del sistema (android.R):
• CharSequence httpError=getString(android.R.string.httpErrorBadUrl);
• Hay otras formas de acceso dependiendo del tipo de recurso
http://www.jesusfontecha.name
22
• Layouts. Distribución de componentes en pantalla
<?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
Recursos contenedores: layouts (I)
http://www.jesusfontecha.name
23
<?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
Recursos contenedores: layouts (II)
http://www.jesusfontecha.name
24
<?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/
Recursos contenedores: layouts (III)
http://www.jesusfontecha.name
25
Views/Componentes Área de trabajo
Jerarquía Layouts-Componentes
Propiedades Componente selección
Vista de diseño
http://www.jesusfontecha.name
26
Ejemplo de archivo manifiesto
http://www.jesusfontecha.name
27
Contenido del archivo manifiesto
• Nodos
• manifest: incluye el nombre del paquete de la aplicación
• application: incluye los metadatos de la aplicación (título, icono, tema)
• Contiene los nodos de las actividades, servicios proveedores de contenidos y
receptores broadcast definidos en la aplicación.
• uses-permission: declara los permisos que la aplicación necesita para funcionar
• Son presentados al usuario durante la instalación de la aplicación
• permission: define los permisos requeridos para que otras aplicaciones puedan
acceder a partes restringidas de la aplicación.
• instrumentation: permite definir tests de ejecución para las Actividades y
Servicios.
http://www.jesusfontecha.name
28
MainActivity.java
Ejemplo de actividad: Hello world!
http://www.jesusfontecha.name
29
Fragmento.java
Ejemplo de fragmento en una actividad
http://www.jesusfontecha.name
30
Archivo Java
TextView tv= new TextView(this)
tv.setWidth(100);
tv.setHeight(60);
tv.setText("phone");
setContentView(tv);
Archivo XML
<TextView
android:id="@+id/nameLabel"
android:text="phone:"
android:layout_width="100"
android:layout_height="60"/>
• Ejemplo: Programación de un componente
• Vale, entonces… ¿Cómo lo hago?  Depende
• Recomendación: Declarar XML siempre que se pueda
• ¡En layouts siempre!
• Aún dejándolos “vacíos” (ya se “rellenarán” en tiempo de ejecución)
Programación procedural y declarativa
http://www.jesusfontecha.name
31
• Handlers
• Maneja eventos de entrada sin importar dónde está el foco.
• No están necesariamente asociados a un view.
• Botón atrás, tocar pantalla,…
• Listeners
• Maneja eventos generados por un view o viewgroup.
Views
Eventos
Eventos sobre componentes (I)
http://www.jesusfontecha.name
32
• Button
Eventos sobre componentes (II)
http://www.jesusfontecha.name
33
Eventos sobre componentes (III)
• EditText
http://www.jesusfontecha.name
34
Eventos sobre componentes (IV)
• ImageView
http://www.jesusfontecha.name
35
Eventos sobre componentes (V)
• CheckBox
http://www.jesusfontecha.name
36
• Más Eventos
• onLongClick, onFocusChange, onTouch, onKeyDown, onKeyUp,…
• Más Componentes
• Texto  TextView, AutocompleteTextView,…
• Botón  ImageButton, TogleButton, RadioButton,…
• Vistas compuestas  ExpandableListView, …
• Barras  ProgressBar, SeekBar, RatinBar,…
• Menús
• ¡Controles compuestos!
ListItem
¿Cómo lleno
la lista?
Más eventos y componentes
http://www.jesusfontecha.name
37
• ¿Qué es?
• Objeto que proporciona una interfaz común para
cada modelo de datos detrás de un control de
selección.
• Tipos
• ListAdapter
• ArrayAdapter
• SpinnerAdapter
• SimpleCursorAdapter
• CustomAdapters
Fundamentos sobre adaptadores
//Creamos el adaptador
ArrayAdapter<CharSequence> adapter =
ArrayAdapter.createFromResource(this,R.array.comidas,android.R.layout.simple_spinner_item);
//Añadimos el layout para el menú
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Le indicamos al spinner el adaptador a usar
prueba.setAdapter(adapter);
¡Los datos no tienen porque
proceder de recursos estáticos!
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="comidas">
<item>Salchichas</item>
<item>Huevos</item>
<item>Tomates</item>
</string-array>
</resources>
http://www.jesusfontecha.name
38
• Interfaz SensorEventListener
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> listSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
http://developer.android.com/reference/android/hardware/Sensor.html
• Sensores
Recuperamos el sensor
onSensorChanged()Método
Eventos sobre elementos hardware
http://www.jesusfontecha.name
39
View view = inflater.inflate(R.layout.fragment_edit_name, container);
Más sobre actividades y fragmentos
• Existen actividades y fragmentos con propósitos específicos
• ListActivity y ListFragment  Diseñadas para trabajar con ListViews
• Hay más: TabActivity, FragmentActivity, ExpandableListActivity,…
• No olvidar: ¡Los fragmentos se “inflan” dentro de las actividades
• Los fragmentos tal cual se conocen son compatibles con versiones antiguas de
firmware Android:
• Solución: importar librerías que facilitan la compatibilidad (support.v4)
• Se espera que con el tiempo desaparezca esta necesidad debida a la
fragmentación
• Los fragmentos son muy útiles para mostrar u ocultar secciones o partes de la
aplicación dependiendo del dispositivo que la ejecuta: tablet vs móvil.
http://www.jesusfontecha.name
40
• Intents
• Objetos utilizados para enviar mensajes asíncronos dentro de una aplicación o
entre varias aplicaciones.
• Posibilitan la transición entre actividades.
• Permiten la comunicación entre componentes.
http://androideity.com/2011/10/17/trabajando-con-intents-en-android-overview/
Más sobre intents y bundles (I)
• Bundle
• Contenedor para agrupar los datos.
• Pueden ser usados conjuntamente con Intents.
http://www.jesusfontecha.name
41
• Ejemplo Intent
Intent intent = new Intent();
intent.setClass(getActivity(),
NuevaActividad.class);
intent.putExtra("identificador", id);
intent.putExtra("nombre", nombre);
startActivity(intent);
String id = getActivity().getIntent().getStringExtra("identificador");
String nombre = getActivity().getIntent().getStringExtra("nombre");
Actividad 1 Actividad 2
identificador
nombre
Más sobre intents y bundles (II)
http://www.jesusfontecha.name
42
Bundle extras = intent.getExtras();
String key = extras.getString("mynkey");
Bundle b=new Bundle();
b.putString("myname", nombre);
¡también podemos pasar objetos!
Serializable Parcelable
• Un Bundle nos sirve como contenedor de datos (clave/valor) mientras que
un Intent es mucho más, aunque lleva asociado un Bundle.
Más sobre intents y bundles (III)
• Ejemplo Bundle
• ¡Hay mucho más!  Evolución constante
• Nuevos firmwares
• Nuevas funciones
http://www.jesusfontecha.name
43
Depuración y ejecución de aplicaciones (I)
• Como desarrollador, existen dos opciones para depurar y ejecutar aplicaciones Android:
• Utilizando el emulador del SDK
• Utilizando un dispositivo real conectado vía USB
• Pasos para utilizar un dispositivo real:
1. Activar el modo depuración USB en el dispositivo (ajustes)
http://www.jesusfontecha.name
44
Depuración y ejecución de aplicaciones (II)
2. Conectar el dispositivo vía USB al PC
3. En el IDE, al pulsar “Ejecutar cómo” o “Depurar cómo”, aparece automáticamente
la ventana para selección de dispositivo (o emulador)
4. El apk se instalará y desplegará en el dispositivo.
Dispositivos conectados
Emuladores
Nota: La depuración de es uno de los aspectos más importantes de la programación de aplicaciones
http://www.jesusfontecha.name
45
Ejemplo de aplicación Android (I)
http://www.sgoliver.net/blog/?p=1316
• Crear el proyecto Android con una actividad en blanco.
• Modificar el layout de la actividad para que contenga un TextView, un EditText y un
Button.
• Desde el diseñador visual
• Desde el xml de la actividad
46
Ejemplo de aplicación Android (II)
• Dar el texto “Escribe tu nombre” al TextView
• Usar las propiedades del componente
• Pero antes… declarar el texto como un string en los recursos
• Crear una segunda actividad
llamada FrmSaludo que
contendrá el saludo
• El layout de esta actividad
contendrá un TextView
• ¡Comprobar que se definen las
actividades en el manifiesto!
• Favorece el aislar mensajes y nombres de variables del código
• Útil cuando se desea traducir la app a varios idiomas
47
Ejemplo de aplicación Android (III)
• Programamos la parte Java en la actividad principal para:
• Obtener las referencias de los controles de la interfaz
• Crear un bundle que almacene el nombre introducido en el campo de texto
• Realizar la transición desde la actividad principal hacia la actividad FrmSaludo
48
Ejemplo de aplicación Android (IV)
• Programamos la parte Java en la actividad FrmSaludo para:
• Obtener las referencias de los controles de la interfaz
• Obtener el dato del nombre del Bundle
• Escribir el nombre como texto del control TextView txtSaludo.
• Ejecutamos la aplicación desde el IDE
Ejemplo descargable desde: http://jesusfontecha.name/recursos/ejemplos/HolaAndroid.zip
49
• Buscar librerías, porciones de código y frameworks que me resuelvan parte de mi
problema o me faciliten la implementación  Reutilización
• Buscar soluciones y respuestas a problemas de implementación (bajo la premisa:
“¡seguro que a alguien le sucedió antes!”)
• Foros y páginas especializadas. (http://stackoverflow.com/)
• Tanto las aplicaciones móviles como web están en constante evolución. Existen
cada vez más frameworks, lenguajes y librerías
• Auto-nota mental: ¡No te creas que lo sabes todo!
• Librerías en Android para:
• Almacenamiento de datos (SQLite)
• Bibliotecas de medios
• Bibliotecas gráficas (2D y 3D –OpenGL)
• Servicios Web (Ksoap)
• Mapas (API Google Maps)
• Juegos (libGDX, Unity engine, AndEngine)
• …¡y muchas más!
Sobre el uso de librerías y otros consejos
http://www.jesusfontecha.name
50
Firmar una aplicación Android
http://www.jesusfontecha.name
http://androideity.com/2011/08/25/%C2%BFcomo-firmar-aplicaciones-android/
• Pasos para construir un apk de nuestra aplicación, instalable en cualquier dispositivo
compatible
1. Cuando ejecutamos nuestra aplicación en Eclipse, se nos crea un archivo .apk en el
directorio de MiProyecto/bin.
2. Ese .apk no es válido para instalar en un dispositivo. Lo que podemos comprobar si
copiamos/pegamos dicho apk en la memoria o SD del dispositivo y lo intentamos
instalar.
3. Para construir una app Android válida (la cual puede contener nuestra aplicación
html5+javascript desarrollada con PhoneGap), debemos firmarla o certificarla
desde el Eclipse para crear un apk instalable válido. Para ello mirar los pasos a dar
en este tutorial.
4. Con el apk firmado, ya podemos instalar la aplicación en cualquier dispositivo
compatible.
• De esta forma, nuestro apk contenido en el directorio de MiProyecto/bin es
válido y podemos compartirlo con otras personas e incluso subirlo al Market
de Android.
51
Jesús Fontecha DiezmaAndroid Basics V2.5
http://www.jesusfontecha.name

Más contenido relacionado

La actualidad más candente

GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónVLASLOV
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCMicael Gallego
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioCarlos A. Iglesias
 
Java Es O No Software Libre
Java Es O No Software LibreJava Es O No Software Libre
Java Es O No Software LibreJose Rojas
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos DrupalYmbra
 
Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesYmbra
 

La actualidad más candente (13)

GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - Introducción
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Desarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web ToolkitDesarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web Toolkit
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
Presentacion Google Web Toolkit
Presentacion Google Web ToolkitPresentacion Google Web Toolkit
Presentacion Google Web Toolkit
 
Java Es O No Software Libre
Java Es O No Software LibreJava Es O No Software Libre
Java Es O No Software Libre
 
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web ToolkitDesarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
 
Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con Features
 
Java
JavaJava
Java
 

Destacado

Context-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systemsContext-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systemsJesús Fontecha
 
A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...Jesús Fontecha
 
PhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native ComponentsPhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native ComponentsTechAhead
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessTroy Miles
 
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)Jesús Fontecha
 
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...Jesús Fontecha
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapCongresoWeb
 
A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...Jesús Fontecha
 
Internet of Things. Definition of a concept
Internet of Things. Definition of a conceptInternet of Things. Definition of a concept
Internet of Things. Definition of a conceptJesús Fontecha
 

Destacado (11)

Android basics v3
Android basics v3Android basics v3
Android basics v3
 
Context-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systemsContext-aware and user centered evaluation of assistive systems
Context-aware and user centered evaluation of assistive systems
 
PhoneGap Basics v1.0
PhoneGap Basics v1.0PhoneGap Basics v1.0
PhoneGap Basics v1.0
 
A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...A Sensorized and Health aspect-based framework to improve the continuous moni...
A Sensorized and Health aspect-based framework to improve the continuous moni...
 
PhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native ComponentsPhoneGap JavaScript API vs Native Components
PhoneGap JavaScript API vs Native Components
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or Less
 
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
Brújula, Acelerómetro y Geolocalización con PhoneGap (Básico)
 
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
Exploring the AmIHEALTH paradigm. Monitoring in Healthcare: Building mHealth ...
 
Desarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta PhonegapDesarrollo de Apps con la herramienta Phonegap
Desarrollo de Apps con la herramienta Phonegap
 
A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...A proposal for elderly frailty detection by using accelerometer-enabled smart...
A proposal for elderly frailty detection by using accelerometer-enabled smart...
 
Internet of Things. Definition of a concept
Internet of Things. Definition of a conceptInternet of Things. Definition of a concept
Internet of Things. Definition of a concept
 

Similar a Android Basics v2.5

Android la plataforma móvil open source
Android la plataforma móvil open sourceAndroid la plataforma móvil open source
Android la plataforma móvil open sourceIsrael Camacho
 
Curso Android Tema 2
Curso Android Tema 2Curso Android Tema 2
Curso Android Tema 2Frank Jorge
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Androidmcanalesc94
 
Taller Android seedrocket
Taller Android seedrocketTaller Android seedrocket
Taller Android seedrocketIsrael Camacho
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Androidjezabelink
 
Aplicaciones android
Aplicaciones androidAplicaciones android
Aplicaciones androidedwin
 
R esume libro el gran libro de android
R esume libro el gran libro de androidR esume libro el gran libro de android
R esume libro el gran libro de androidwiliam lliulli herrera
 
Introducción al desarrollo Android, Sesión 1
Introducción al desarrollo Android, Sesión 1Introducción al desarrollo Android, Sesión 1
Introducción al desarrollo Android, Sesión 1findemor
 
Android UC3M Sesión 1
Android UC3M Sesión 1Android UC3M Sesión 1
Android UC3M Sesión 1topoos
 
Curso android desarrollo de aplicaciones moviles
Curso android   desarrollo de aplicaciones movilesCurso android   desarrollo de aplicaciones moviles
Curso android desarrollo de aplicaciones movilesJose Antonio Prieto
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3ERWIN AGUILAR
 
Presentacion android mistela&tweets
Presentacion android mistela&tweetsPresentacion android mistela&tweets
Presentacion android mistela&tweetsJorge Soro
 
Taller de prog. en android
Taller de prog. en androidTaller de prog. en android
Taller de prog. en androidKarla Silva
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de AndroidJavier Muñoz
 
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.Internet Security Auditors
 
Presentacion para la Flagship Store de Telefónica
Presentacion para la Flagship Store de TelefónicaPresentacion para la Flagship Store de Telefónica
Presentacion para la Flagship Store de TelefónicaJavier Tellez Dones
 

Similar a Android Basics v2.5 (20)

Android la plataforma móvil open source
Android la plataforma móvil open sourceAndroid la plataforma móvil open source
Android la plataforma móvil open source
 
Curso Android Tema 2
Curso Android Tema 2Curso Android Tema 2
Curso Android Tema 2
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Android
 
Introduccion android
Introduccion androidIntroduccion android
Introduccion android
 
Taller Android seedrocket
Taller Android seedrocketTaller Android seedrocket
Taller Android seedrocket
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
 
Aplicaciones android
Aplicaciones androidAplicaciones android
Aplicaciones android
 
Curso Desarrollo Android
Curso Desarrollo AndroidCurso Desarrollo Android
Curso Desarrollo Android
 
R esume libro el gran libro de android
R esume libro el gran libro de androidR esume libro el gran libro de android
R esume libro el gran libro de android
 
Introducción al desarrollo Android, Sesión 1
Introducción al desarrollo Android, Sesión 1Introducción al desarrollo Android, Sesión 1
Introducción al desarrollo Android, Sesión 1
 
Android UC3M Sesión 1
Android UC3M Sesión 1Android UC3M Sesión 1
Android UC3M Sesión 1
 
Curso de android
Curso de androidCurso de android
Curso de android
 
Curso android desarrollo de aplicaciones moviles
Curso android   desarrollo de aplicaciones movilesCurso android   desarrollo de aplicaciones moviles
Curso android desarrollo de aplicaciones moviles
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Presentacion android mistela&tweets
Presentacion android mistela&tweetsPresentacion android mistela&tweets
Presentacion android mistela&tweets
 
Jclic
JclicJclic
Jclic
 
Taller de prog. en android
Taller de prog. en androidTaller de prog. en android
Taller de prog. en android
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de Android
 
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.Ingeniería Inversa en Android.  Rooted Labs. Rooted CON 2012.
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
 
Presentacion para la Flagship Store de Telefónica
Presentacion para la Flagship Store de TelefónicaPresentacion para la Flagship Store de Telefónica
Presentacion para la Flagship Store de Telefónica
 

Más de Jesús Fontecha

A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...Jesús Fontecha
 
A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...Jesús Fontecha
 
Proyecto Innovación Docente
Proyecto Innovación DocenteProyecto Innovación Docente
Proyecto Innovación DocenteJesús Fontecha
 

Más de Jesús Fontecha (6)

A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...A model to develop frailty diagnosis tools through mobile devices and a servi...
A model to develop frailty diagnosis tools through mobile devices and a servi...
 
A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...A new approach to prevent cardiovascular diseases based on SCORE charts throu...
A new approach to prevent cardiovascular diseases based on SCORE charts throu...
 
Android Basics v2.0
Android Basics v2.0Android Basics v2.0
Android Basics v2.0
 
Proyecto Innovación Docente
Proyecto Innovación DocenteProyecto Innovación Docente
Proyecto Innovación Docente
 
Nfc basics
Nfc basicsNfc basics
Nfc basics
 
Android basics
Android basicsAndroid basics
Android basics
 

Último

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 

Último (20)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 

Android Basics v2.5

  • 1. 1 University of Castilla-La Mancha, Spain MAmI Research Lab Android Basics v2.5 Jesús Fontecha Diezma http://www.jesusfontecha.name
  • 2. Introducción (I) 2 • 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 http://www.jesusfontecha.name
  • 3. Introducción (II) 3 • Evolución y Fragmentación • Cada año (aprox.) un nuevo firmware 4 de Septiembre de 2013 http://venturebeat.com/2013/09/04/google-updates-android- fragmentation-numbers-and-the-numbers-are-looking-better- than-ever/ http://kitkat.com http://www.jesusfontecha.name
  • 4. 4 • Actividades (activities) • El más importante • Representa una pantalla individual • Incluye fragmentos y vistas Componentes de una aplicación Android • Servicios (services) • Se ejecutan en segundo plano • Realizan acciones incluso cuando las actividades no están visibles • Proveedores de contenido (content providers) • Representan almacenes de datos compartidos entre aplicaciones • Gestionan las BBDD de las aplicaciones • Receptores broadcast (broadcast receivers) • Creados por aplicaciones que consumen broadcast intents. • Intenciones (intents) • Permiten el paso de información entre actividades y servicios o al todo el sistema (broadcast intents) • Definen “qué se hace” • Notificaciones (notifications) • Referente a las notificaciones del sistema que no interrumpen la actividad • Se pueden ver como un tipo de servicios • Vistas • Componentes básicos de la interfaz gráfica • Análogo a los controles de Java o .NET http://www.jesusfontecha.name
  • 5. 5 • Actividad y Content Provider 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(); } Información detallada del contacto Listado de nombres y teléfonos Ejemplos de componentes (I) Content provider http://developer.android.com/guide/components/index.html http://www.jesusfontecha.name
  • 6. 6 Ejemplo de componentes (II) • Servicios Capturar posición GPSCapturar datos acelerómetro • Broadcast receivers Batería Baja Llamada Cambio zona horariaTarjeta SD Otras aplicaciones • Intents Mostrar una actividad desde otra Iniciar un servicioEnviar mensaje broadcast Iniciar otra aplicación Cuadros de texto BotonesListas desplegables ImágenesBarras de desplazamiento • Vistas • Widgets • Elementos visuales e interactivos • Se muestran en la pantalla principal del terminal http://developer.android.com/guide/components/index.html http://www.jesusfontecha.name
  • 7. 7 Cuando es visible Primera vez Cuando se oculta Asignación de memoria Finaliza Otra actividad en primer plano Ciclo de vida/estados de una actividad • Clases que extienden de Activity http://www.jesusfontecha.name
  • 8. 8 Métodos de transición entre estados • onCreate(Bundle) • Invocado cuando la actividad arranca por primera vez • Utilizado para tareas de inicialización como crear la interfaz de usuario de la actividad • onStart() • Invocado cuando la actividad va a ser mostrada al usuario • onResume() • Invocar cuando la actividad va a empezar a interactuar con el usuario • onPause() • Invocado cuando la actividad pasa a segundo plano porque otra actividad es lanzada con mayor prioridad • onStop() • Invocado cuando la actividad deja de ser visible y no se necesitará durante un tiempo • onRestart() • Invocado cuando la actividad sale del estado de parada y entra en estado activo • onDestroy() • Se invoca cuando la actividad pasa a ser destruida • onSaveInstanceState(Bundle) • Permite a la actividad guardar su estado (ej: los valores introducidos en un campo de texto) • No necesita ser redefinido porque la clase Activity ya guarda todo el estado de por sí. • onRestoreInstanceState(Bundle) • Recupera el estado guardado por el método anterior • Al igual que antes, no necesita ser redefinido http://www.jesusfontecha.name
  • 9. 9 • A partir de Android 3.0 y el crecimiento de terminales y tablets surge el problema de la fragmentación. • Solución: nacen los fragmentos… ¡qué paradoja! Fragmentación en Android ¿Qué son? Sección modular de una actividad • Tiene su propio ciclo de vida • Recibe sus propios eventos de entrada • Puede construirse y destruirse en ejecución • “como una subactividad que puedes reutilizar en distintas actividades” Principio: Todas las aplicaciones Android deberían funcionar en todos los dispositivos Android http://www.jesusfontecha.name
  • 10. 10 • Misma Aplicación, diferentes dispositivos Galaxy tab 10” Galaxy S Actividad Fragmentos Posibles transiciones Ejemplo uso de fragmentos http://www.jesusfontecha.name
  • 11. 11 • ¿Qué suponen? • En aplicaciones antiguas: •  Uso de librerías de apoyo a la compatibilidad (support libraries). •  Reescritura de clases • En aplicaciones nuevas: •  Versatilidad: Misma app compatible para cualquier dispositivo. •  Aumentar la importancia del diseño de las actividades.  Más difícil diseñar una buena app. •  Reutilización de fragmentos. • Cambian “un poco” aspectos iniciales de las actividades. Actividades compuestas por componentes vs Actividades compuestas por fragmentos Ventajas e inconvenientes de los fragmentos http://www.jesusfontecha.name
  • 12. 12 • Patrones de diseño • Unificar y mejorar la apariencia de la interfaz gráfica • http://www.androidpatterns.com/ , listas, pestañas, menús, etc. “No es una obligación, pero sí una recomendación” (en ciertos casos necesaria para poder publicar la app) Hacia la estandarización de aplicaciones (I) http://www.jesusfontecha.name
  • 13. 13 • Action Bars • Similar a una barra de tareas • Permite agrupar acciones • De acceso intuitivo y rápido Hacia la estandarización de aplicaciones (II) • Themes • Holo http://android-developers.blogspot.com.es/2012/01/holo-everywhere.html http://www.jesusfontecha.name
  • 14. 14 • ¿Qué necesitamos? DVM Librerías Emulador Desarrollo con Android http://www.jesusfontecha.name
  • 15. 15 1. Instalar Eclipse 2. Instalar SDK Android http://developer.android.com/sdk/index.html • Instalar las librerías necesarias 3. Añadir un AVD – SDK Manager • Tools > Manage AVDs > New • Definir características y crear 4. Configurar Plugin ADT - Eclipse • Help > Install New Software • Introducir url proveedor: https://dl-ssl.google.com/android/eclipse/ O… descargar el bundle Instalación del SDK en Eclipse http://www.jesusfontecha.name
  • 16. 16 • La separación de lógica e interfaz favorece la aplicación del patrón Modelo- Vista-Controlador (MVC) ModeloVista Controlador - Interfaz de usuario -Representación de la información -Responsable de eventos - Lógica tras la interacción del usuario Modelo – Vista - Controlador http://www.jesusfontecha.name
  • 17. 17 Consideraciones previas • Actividades • Las aplicaciones Android están formadas por actividades • Todas las actividades de nuestra aplicación y de otras se van almacenando en la pila de actividades • Procesos • Las aplicaciones no tienen control sobre su ciclo de vida • Android puede matar sin avisar a los procesos que considera innecesarios para mantener al sistema estable • Vistas • Las interfaces de usuario de una actividad se crean mediante vistas (views) • Las vistas se agrupan en diseños (layouts) que muestra la aplicación http://www.jesusfontecha.name
  • 18. 18 1. New Project > Android Application Project 2. Definir las propiedades iniciales de la App • Nombre • SDK desarrollo • Mínimo SDK requerido • Icono de aplicación • Actividad inicial (opcional) Creación de un proyecto Android http://www.jesusfontecha.name
  • 19. 19 Vista del entorno de desarrollo http://www.jesusfontecha.name
  • 20. 20 • Código: • /src – Clases java y archivo R.java • R.java: Autogenerado por Android (vbles. sistema) • Recursos: • /res/drawable – Imágenes de la aplicación • /res/layout – Vistas y diseños de la aplicación • /res/values – Estilos (colores, dimensiones) y variables de la aplicación • /res/anim – Animaciones • /res/menu – Menús de la aplicación • /res/xml – Varios • Libraries – Librerías y referencias • AndroidManifest.xml – Archivo de manifiesto • Define la configuración del proyecto Estructura de directorios http://www.jesusfontecha.name
  • 21. 21 • Se accede a través de la clase estática R generada en tiempo de compilación • La clase R incluye subclases para cada tipo de recurso (ej: R.string, R.drawable) • Los recursos se definen como variables de la clase (ej: R.string.app_name, R.drawable.icon) • El valor de las variables es una referencia al recurso, no a una instancia del recurso • La tabla de recursos de una app está representada por una instancia de la clase Resources • Ejemplo de extracción de recursos: Acceso a los recursos desde código 1. Resources myResources = getResources() ; 2. CharSequence styledText = myResources . getTex t (R.string.stop_message) ; 3. Drawable icon = myResources . getDrawabl e (R.drawabl e.a pp_icon) ; 4. String[ ] stringArray; stringArray= myResources.getStringArray(R.array.string_array); • Acceso a los recursos del sistema (android.R): • CharSequence httpError=getString(android.R.string.httpErrorBadUrl); • Hay otras formas de acceso dependiendo del tipo de recurso http://www.jesusfontecha.name
  • 22. 22 • Layouts. Distribución de componentes en pantalla <?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 Recursos contenedores: layouts (I) http://www.jesusfontecha.name
  • 23. 23 <?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 Recursos contenedores: layouts (II) http://www.jesusfontecha.name
  • 24. 24 <?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/ Recursos contenedores: layouts (III) http://www.jesusfontecha.name
  • 25. 25 Views/Componentes Área de trabajo Jerarquía Layouts-Componentes Propiedades Componente selección Vista de diseño http://www.jesusfontecha.name
  • 26. 26 Ejemplo de archivo manifiesto http://www.jesusfontecha.name
  • 27. 27 Contenido del archivo manifiesto • Nodos • manifest: incluye el nombre del paquete de la aplicación • application: incluye los metadatos de la aplicación (título, icono, tema) • Contiene los nodos de las actividades, servicios proveedores de contenidos y receptores broadcast definidos en la aplicación. • uses-permission: declara los permisos que la aplicación necesita para funcionar • Son presentados al usuario durante la instalación de la aplicación • permission: define los permisos requeridos para que otras aplicaciones puedan acceder a partes restringidas de la aplicación. • instrumentation: permite definir tests de ejecución para las Actividades y Servicios. http://www.jesusfontecha.name
  • 28. 28 MainActivity.java Ejemplo de actividad: Hello world! http://www.jesusfontecha.name
  • 29. 29 Fragmento.java Ejemplo de fragmento en una actividad http://www.jesusfontecha.name
  • 30. 30 Archivo Java TextView tv= new TextView(this) tv.setWidth(100); tv.setHeight(60); tv.setText("phone"); setContentView(tv); Archivo XML <TextView android:id="@+id/nameLabel" android:text="phone:" android:layout_width="100" android:layout_height="60"/> • Ejemplo: Programación de un componente • Vale, entonces… ¿Cómo lo hago?  Depende • Recomendación: Declarar XML siempre que se pueda • ¡En layouts siempre! • Aún dejándolos “vacíos” (ya se “rellenarán” en tiempo de ejecución) Programación procedural y declarativa http://www.jesusfontecha.name
  • 31. 31 • Handlers • Maneja eventos de entrada sin importar dónde está el foco. • No están necesariamente asociados a un view. • Botón atrás, tocar pantalla,… • Listeners • Maneja eventos generados por un view o viewgroup. Views Eventos Eventos sobre componentes (I) http://www.jesusfontecha.name
  • 32. 32 • Button Eventos sobre componentes (II) http://www.jesusfontecha.name
  • 33. 33 Eventos sobre componentes (III) • EditText http://www.jesusfontecha.name
  • 34. 34 Eventos sobre componentes (IV) • ImageView http://www.jesusfontecha.name
  • 35. 35 Eventos sobre componentes (V) • CheckBox http://www.jesusfontecha.name
  • 36. 36 • Más Eventos • onLongClick, onFocusChange, onTouch, onKeyDown, onKeyUp,… • Más Componentes • Texto  TextView, AutocompleteTextView,… • Botón  ImageButton, TogleButton, RadioButton,… • Vistas compuestas  ExpandableListView, … • Barras  ProgressBar, SeekBar, RatinBar,… • Menús • ¡Controles compuestos! ListItem ¿Cómo lleno la lista? Más eventos y componentes http://www.jesusfontecha.name
  • 37. 37 • ¿Qué es? • Objeto que proporciona una interfaz común para cada modelo de datos detrás de un control de selección. • Tipos • ListAdapter • ArrayAdapter • SpinnerAdapter • SimpleCursorAdapter • CustomAdapters Fundamentos sobre adaptadores //Creamos el adaptador ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.comidas,android.R.layout.simple_spinner_item); //Añadimos el layout para el menú adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Le indicamos al spinner el adaptador a usar prueba.setAdapter(adapter); ¡Los datos no tienen porque proceder de recursos estáticos! <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="comidas"> <item>Salchichas</item> <item>Huevos</item> <item>Tomates</item> </string-array> </resources> http://www.jesusfontecha.name
  • 38. 38 • Interfaz SensorEventListener mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); List<Sensor> listSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); http://developer.android.com/reference/android/hardware/Sensor.html • Sensores Recuperamos el sensor onSensorChanged()Método Eventos sobre elementos hardware http://www.jesusfontecha.name
  • 39. 39 View view = inflater.inflate(R.layout.fragment_edit_name, container); Más sobre actividades y fragmentos • Existen actividades y fragmentos con propósitos específicos • ListActivity y ListFragment  Diseñadas para trabajar con ListViews • Hay más: TabActivity, FragmentActivity, ExpandableListActivity,… • No olvidar: ¡Los fragmentos se “inflan” dentro de las actividades • Los fragmentos tal cual se conocen son compatibles con versiones antiguas de firmware Android: • Solución: importar librerías que facilitan la compatibilidad (support.v4) • Se espera que con el tiempo desaparezca esta necesidad debida a la fragmentación • Los fragmentos son muy útiles para mostrar u ocultar secciones o partes de la aplicación dependiendo del dispositivo que la ejecuta: tablet vs móvil. http://www.jesusfontecha.name
  • 40. 40 • Intents • Objetos utilizados para enviar mensajes asíncronos dentro de una aplicación o entre varias aplicaciones. • Posibilitan la transición entre actividades. • Permiten la comunicación entre componentes. http://androideity.com/2011/10/17/trabajando-con-intents-en-android-overview/ Más sobre intents y bundles (I) • Bundle • Contenedor para agrupar los datos. • Pueden ser usados conjuntamente con Intents. http://www.jesusfontecha.name
  • 41. 41 • Ejemplo Intent Intent intent = new Intent(); intent.setClass(getActivity(), NuevaActividad.class); intent.putExtra("identificador", id); intent.putExtra("nombre", nombre); startActivity(intent); String id = getActivity().getIntent().getStringExtra("identificador"); String nombre = getActivity().getIntent().getStringExtra("nombre"); Actividad 1 Actividad 2 identificador nombre Más sobre intents y bundles (II) http://www.jesusfontecha.name
  • 42. 42 Bundle extras = intent.getExtras(); String key = extras.getString("mynkey"); Bundle b=new Bundle(); b.putString("myname", nombre); ¡también podemos pasar objetos! Serializable Parcelable • Un Bundle nos sirve como contenedor de datos (clave/valor) mientras que un Intent es mucho más, aunque lleva asociado un Bundle. Más sobre intents y bundles (III) • Ejemplo Bundle • ¡Hay mucho más!  Evolución constante • Nuevos firmwares • Nuevas funciones http://www.jesusfontecha.name
  • 43. 43 Depuración y ejecución de aplicaciones (I) • Como desarrollador, existen dos opciones para depurar y ejecutar aplicaciones Android: • Utilizando el emulador del SDK • Utilizando un dispositivo real conectado vía USB • Pasos para utilizar un dispositivo real: 1. Activar el modo depuración USB en el dispositivo (ajustes) http://www.jesusfontecha.name
  • 44. 44 Depuración y ejecución de aplicaciones (II) 2. Conectar el dispositivo vía USB al PC 3. En el IDE, al pulsar “Ejecutar cómo” o “Depurar cómo”, aparece automáticamente la ventana para selección de dispositivo (o emulador) 4. El apk se instalará y desplegará en el dispositivo. Dispositivos conectados Emuladores Nota: La depuración de es uno de los aspectos más importantes de la programación de aplicaciones http://www.jesusfontecha.name
  • 45. 45 Ejemplo de aplicación Android (I) http://www.sgoliver.net/blog/?p=1316 • Crear el proyecto Android con una actividad en blanco. • Modificar el layout de la actividad para que contenga un TextView, un EditText y un Button. • Desde el diseñador visual • Desde el xml de la actividad
  • 46. 46 Ejemplo de aplicación Android (II) • Dar el texto “Escribe tu nombre” al TextView • Usar las propiedades del componente • Pero antes… declarar el texto como un string en los recursos • Crear una segunda actividad llamada FrmSaludo que contendrá el saludo • El layout de esta actividad contendrá un TextView • ¡Comprobar que se definen las actividades en el manifiesto! • Favorece el aislar mensajes y nombres de variables del código • Útil cuando se desea traducir la app a varios idiomas
  • 47. 47 Ejemplo de aplicación Android (III) • Programamos la parte Java en la actividad principal para: • Obtener las referencias de los controles de la interfaz • Crear un bundle que almacene el nombre introducido en el campo de texto • Realizar la transición desde la actividad principal hacia la actividad FrmSaludo
  • 48. 48 Ejemplo de aplicación Android (IV) • Programamos la parte Java en la actividad FrmSaludo para: • Obtener las referencias de los controles de la interfaz • Obtener el dato del nombre del Bundle • Escribir el nombre como texto del control TextView txtSaludo. • Ejecutamos la aplicación desde el IDE Ejemplo descargable desde: http://jesusfontecha.name/recursos/ejemplos/HolaAndroid.zip
  • 49. 49 • Buscar librerías, porciones de código y frameworks que me resuelvan parte de mi problema o me faciliten la implementación  Reutilización • Buscar soluciones y respuestas a problemas de implementación (bajo la premisa: “¡seguro que a alguien le sucedió antes!”) • Foros y páginas especializadas. (http://stackoverflow.com/) • Tanto las aplicaciones móviles como web están en constante evolución. Existen cada vez más frameworks, lenguajes y librerías • Auto-nota mental: ¡No te creas que lo sabes todo! • Librerías en Android para: • Almacenamiento de datos (SQLite) • Bibliotecas de medios • Bibliotecas gráficas (2D y 3D –OpenGL) • Servicios Web (Ksoap) • Mapas (API Google Maps) • Juegos (libGDX, Unity engine, AndEngine) • …¡y muchas más! Sobre el uso de librerías y otros consejos http://www.jesusfontecha.name
  • 50. 50 Firmar una aplicación Android http://www.jesusfontecha.name http://androideity.com/2011/08/25/%C2%BFcomo-firmar-aplicaciones-android/ • Pasos para construir un apk de nuestra aplicación, instalable en cualquier dispositivo compatible 1. Cuando ejecutamos nuestra aplicación en Eclipse, se nos crea un archivo .apk en el directorio de MiProyecto/bin. 2. Ese .apk no es válido para instalar en un dispositivo. Lo que podemos comprobar si copiamos/pegamos dicho apk en la memoria o SD del dispositivo y lo intentamos instalar. 3. Para construir una app Android válida (la cual puede contener nuestra aplicación html5+javascript desarrollada con PhoneGap), debemos firmarla o certificarla desde el Eclipse para crear un apk instalable válido. Para ello mirar los pasos a dar en este tutorial. 4. Con el apk firmado, ya podemos instalar la aplicación en cualquier dispositivo compatible. • De esta forma, nuestro apk contenido en el directorio de MiProyecto/bin es válido y podemos compartirlo con otras personas e incluso subirlo al Market de Android.
  • 51. 51 Jesús Fontecha DiezmaAndroid Basics V2.5 http://www.jesusfontecha.name