Estan son las diapositivas del taller de Android que se dio en la Universidad Autonoma de Baja California Sur por parte de UNAM MOBILE.
Web: unammobile.net
Tw: @unam_mobile
Introducción a Android: 10 cosas importantes que hay que entender
1. ANDROID
DEL 1 AL 10
Yésica Hernández Hernández
@yezika_ink
2. Temario
1 Antecedentes
2 Java SE
3 Android OS e instalación
4 Arquitectura MVC
5 Arquitectura de un programa
6 Interfaces de Usuario: Vistas e
7 Intenciones
8 Uso de Bases de Datos y
Sistema de Archivos
9 Multimedia y Acceso a hw
10 CNDH: Una app en 15 minutos
6. Introducción: JAVA
Nace en 1995 con el proposito de proveer televisión
digital interactiva.
Implementa una MV que recibe codigo tipo Bytecode
WORA (Write once, run anywhere)
Controlado por el Java Comunnity Process
Principios:
Simple, orientado a objetos y familiar*
Robusto y seguro
Neutral respecto a la arquitectura y portable.
Interpretado, dinamico y multihilo.
http://download.oracle.com/javase/
tutorial/
7. Introducción: JAVA
Plataforma JAVA
JVM: Maquina virtual de java
API
SDK
Interface de Programación de Aplicaciones (API)
Herramientas comunes:
Debug Compilador
<3 IDE
Código de muestra
Generador de documentación
Documentación
JRE
Herramientas de despliegue
Librerias
JVM
9. Introducción: Android
Se anuncio en el 2007 (Open Handset Alliance)
HTC, LG Motorola, Samsung
China Mobile Communications, KDDI, DoCoMo, Sprint/Nextel, T-
Mobile, Telecom Italia, Telefonica
Audience, Broadcom, Intel, Marvell, NVidia Qualcomm, SiRF,
Synaptics
eBay, esmertec, Google, LivingImage, LiveWire, Nuance, Packet
Video, SkyPop, SONiVOX), Aplix, Noser, TAT, Wind River
Objetivo:
Proveer una plataforma para las aplicaciones
de dispositivos móviles a nivel mundial.
10. Introducción: Android
Problemas que propuso
resolver:
Fragmentación
Pilas de software
propietario
Redes cerradas
El entorno de ejecución
de Android:
Recursos limitados
Mezclas de elementos
(reutilizacion de
componentes)
Aplicaciones
intercambiables
11. Introducción: Android
Capacidades
Soporte de Hardware
Disposición visual del adicional: GPS,
dispositivo acelerometro,
Almacenamiento termometro,
Conectividad proximidad,
Llamadas de voz y video temperatura, etc
Envio de mensajes Bluetooth
wow Multilenguaje
Navegador web
Reconocimiento de voz
Multihilo
Soporte de Java Thetering
Formatos multimedia
Capacidades de
transmisión
12. Introducción: Android
Capacidades
Soporte de Hardware
Disposición visual del adicional: GPS,
dispositivo acelerometro,
Almacenamiento termometro,
Conectividad proximidad,
Llamadas de voz y video temperatura, etc
Envio de mensajes Bluetooth
Multilenguaje Reconocimiento de voz
Navegador web Multihilo
Soporte de Java Thetering
Formatos multimedia
Capacidades de
transmisión
15. ¿Por dónde empiezo? Ya
quiero desarrollar una app!
Primero hay que
instalar todo lo
necesario,
¿Ya lo tienen?
16. Instalación
Requisitos minimos
Sistema operativos: Windows Linux Mac
Hardware: Mínimo crítico 1 Gb en RAM*
Deseable mas de 2 Gb
Software: Java SDK instalado y configurado
Driver USB para un dispositivo físico*
!!! Descargar: Android SDK
Eclipse IDE / Netbeans
Driver USB*
Plugin(s) de desarrollo
17. Instalación
Contenido del SDK
Docs
Copia de la documentación mas reciente
Platforms
Librerias, imagenes de sistema, codigo de muestra,
skins y adb.
Platform-tools
Herramientas de desarrollo y depuración que
dependen de la plataforma y se actualizan cuando se
libera una nueva.
Tools
Herramientas de desarrollo y depuración, se
actualizan periodicamente.
20. Introducción: Android
ADB (Linea de comandos)
u Cliente y servidor en la maquina de desarrollo
u Servicio (deamon) en el dispositivo
u Establecer conexion con los dispositivos
u Ejecutar comandos
u Instalar aplicaciones
<3 u Obtener el log del sistema
u Acceder a bases de datos SQLite en el dispositivo
25. Introducción Android
Creando un dispositivo virtual
En la herramienta android se pueden crear
tanto dispositivos virtuales se deseen
Por linea de comandos:
./RUTA_SDK_ANDROID/
tools/android
Por medio del IDE
26. Introducción: Android
MAS INFORMACION
http://developer.android.com/ guide/
developing/tools/index.html
Yes!
27. Programando en Android
¿Qué debo hacer primero?
u Entender los tipos de
aplicaciones
u Entender el ciclo de vida
u Entender los elementos
visuales
u Entender la interacción con
la interfáz
28. Programando en Android
El modelo MVC en Android
La parte visual
que permite al Código que
usuario recibe y
interactuar procesa los
eventos de la
vista
Define el
comportamiento
u objetivo del
programa
29. Programando en Android
Tipos de aplicación
Aplicaciones en primer plano
Tienen funcionalidad solo cuando estan en primer plano. Ejemplo:
juegos y aplicaciones con mapas
Aplicaciones en segundo plano
Despues de ser configuradas pasan la mayor parte del tiempo
ejecutandose en segundio plano, normalmente responden a
eventos causados por el HW, sistema u otras aplicaciones por
ejemplo la interfaz de las llamadas entrantes o salientes y el gestor
de red
Oh! Aplicaciones intermitentes
Necesitan algunas interacciones con el usuario, pero generalmente
resuelven todas sus actividades por si mismas, por ejemplo: el
reproductor multimedia
Widgets
Se ejecutan desde la pantalla de Home del usuario.
30. Programando en Android
Componentes de una aplicación
El usuario
Actividades
puede
interactuar a Consiste en una pantalla con una sola interfaz de usuario,
travez de ellas una aplicación se compone de un conjunto de actividades.
Se compone por la definición de un esqueleto xml de la
interfáz o varios y una clase controladora que hace uso de
dichos elementos.
Servicios
Se ejecuta en segundo plano y provee funcionalidad a otras
aplicaciones. Por ejemplo el reproductor de música que
corre en segundo plano mientras hacemos otras tareas
Tienen un
ciclo de vida
diferente a las
actividades
31. Programando en Android
Componentes de una aplicación
Por ejemplo,
existe un Proveedores de contenido
proveedor
para los Permiten compartir datos con otras actividades y servicios.
contactos del Usan una interfáz estándar en forma de URI.
teléfono
Cuando una aplicación es registrada en el sistema como
proveedor de contenido, puede ser capaz de responder a
estas peticiones
Notificaciones
Permiten desplegar de forma visual y/o auditiva mensajes
para capturar la atención del usuario.
Se pueden
personalizar
visualmente u obtener
datos a través de
ellas
32. Programando en Android
El ciclo de vida de una
Actividad
Para cada Actividad se deben
sobrecargar los metodos:
onCreate
onStart
onResume
onPause
onStop
onDestroy
33. Programando en Android
Ciclo de vida
onCreate
es llamada cuando la aplicacion se crea por primera vez.
Crear e inicar elementos de las vistas, bd
Objeter mensajes de otras actividades (mediante un Bundle)
onStart
es llamada cuando la actividad se muestra en pantalla,
onResume
Me! se ejecuta despues de onStart si la actividad corre en segundo
plano de la vista, puede manejar los eventos derivados de la
vista.
Si otra aplicacion pide el foco en pantalla y luego al finalizar
devuelve la vista a nuestra aplicacion, se ejecuta para poder
actualizar datos en la vista.
34. Programando en Android
Ciclo de vida
onPause
Cuando se hace la transición a otra actividad, aqui se puede
definir que partes del programa no se deben seguir
ejecutando para ahorrar recursos.
En este estado, si el dispositivo de queda sin memoria,
considerara terminar la aplicación.
onStop
se ejecuta cuando la actividad no esta visible ya sea porque
Me!
otra actividad solicitó el foco o porque la activida será
destruida
onDestroy
es el último método de la aplicación que se ejecutará antes
de que el proceso sea destruido
35. Programando en Android
Errores en tiempo de ejecución
ADB juega un
papel
fundamental
para hallar el
error
36. Programando en Android
AndroidManifest.xml
Proposito
Este archivo define la estructura y los metadatos de la
aplicacion, sus componentes y requerimientos.
Define cada componente de la aplicacion en un nodo y para
cada uno define filtros de intentos y permisos que controlan la
interaccion entre ellos.
Define configuraciones de seguridad, requerimientos de
hardware y de plataforma.
Oh! Algunos elementos:
reqFiveWayNav - especifica que el dispositivo debe tener un
trackball o un D-pad
reqHardKeyboard - especifica que se necesita un teclado fisico
37. Programando en Android
AndroidManifest.xml
Algunos elementos:
uses-feature
android.hardware.camera si se requiere la camara del
dispositivo
suports-screns
smallScreens - QVGA
normalScreen - WVGA
anyDensity - si la aplicacion se acomodaa cualquier
densidad
application
Oh!
activity
provider
receiver
uses-permision - habilita el uso de recursos
permision - establece restricciones al acceder a la aplicacion
instrumentation - declara clases de prueba de la aplicacion
.
38. Programando en Android
Configuración de AndroidManifest.xml
Configuraciones que ya tenemos
Declaración de las actividades que forman la aplicación
Lo que vamos a agregar
Indicar qué actividad es la inicial
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
40. Programando en Android
Configuración de AndroidManifest.xml
<uses-sdk android:minSdkVersion="8" />
<uses-permission
android:name="android.permission.VIBRATE" />
Por ejemplo aquí estamos otorgando a la aplicación permiso para
que pueda generar vibraciones a través del hardware del teléfono
Wow
41. Programando en Android
Comunicación e Intenciones (intents)
Las actividades, servicios y los receptores de mensajes de difusión
Reutilizar se comunican y son invocados mediante mensajes asíncronos
funciones de llamados Intents,
otras apps
Permiten invocar actividades de otras aplicaciones
Permiten enviar datos mediante un objeto de tipo Bundle que puede
contener objetos serializables
Compartimos Los elementos accesibles se pueden referenciar por su nombre de
información clase + paquete o bien por una URI
entre
Actividades
Nombre
clase o
destino
Activity
Datos
43. Programando en Android
Elementos visuales
Elemento miElementoX = (Elemento)findViewById(R.id.X);
Todos
heredan
propiedades
de View
44. Programando en Android
Elementos visuales
Estructura xml <LinearLayout xmlns:android="http://
que define id schemas.android.com/apk/res/android"
android:id="@+id/root"
android:orientation="vertical"
Referencia en android:background="@drawable/lt_gray"
el código del id android:layout_width="fill_parent"
android:layout_height="wrap_content">
... otros elementos....
package curso.ejemplo.ids; </LinearLayout>
import android.app.Activity;
import android.os.Bundle;
public class AndroidDemo extends Activity {
private LinearLayout root;
@Override public void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.main);
root = (LinearLayout) findViewById(R.id.root);
}
}
45. Programando en Android
Jugando con eventos
Acciones
guiadas por el
usuario
Toca
Desliza
Presiona
46. Programando en Android
Jugando con eventos
Button.OnClickListener listener = new
Button.OnClickListener() {
@Override public void onClick(View arg0) {
.........................acciones............................
^^ } };
((Button) findViewById(R.id.button1)).setOnClickListener
(listener);
47. Programando en Android
Menús
Se lanza al
presionar un
elemento
particular
Se obtiene
con la tecla
Menu
48. Programando en Android
Alertas y diálogos
Se puede
obtener
información
de ellos
Mensaje
informativo, 1
a la vez y
desaparece
solo
50. Programando en Android
Acceso a hardware
Se necesita establecer permisos en el Android Manifest para
acceder a la mayoría de los recursos
El API cuenta con clases especializadas para manejar de forma
sencilla el harware disponible: GPS, Acelerómetro, Vibrador,
Sonido, Cámara, Micrófono, Bluetooth
Intents
51. Programando en Android
private void recordVideo(Uri outputpath) {
Intent intent = new Intent
(MediaStore.ACTION_VIDEO_CAPTURE);
Acceso a hardware
If (outputpath != null)
intent.putExtra(MediaStore.EXTRA_OUTPUT, output);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,
HIGH_VIDEO_QUALITY);
startActivityForResult(intent, RECORD_VIDEO);
}
@Override
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {
if (requestCode == RECORD_VIDEO) {
Uri recordedVideo = data.getData();
//…. Otras acciones
}}
52. Programando en Android
En el Android Manifest
<uses-permission android:name="android.permission.CAMERA"/>
Acceso a hardware
En el código
Camera camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
List<String> colorEffects = parameters.getSupportedColorEffects();
if (colorEffects.contains(Camera.Parameters.EFFECT_SEPIA))
parameters.setColorEffect(Camera.Parameters.EFFECT_SEPIA);
camera.setParameters(parameters);
camera.release();
53. Reproducir
un video
Menu
usando Usar
layouts contenido
compuestas basado en
web
Una aplicación en 15 minutos
Una app para
la CNDH
54. Programando en Android
Refinando la aplicación
Antes de
teclear sin
control…
Recomendaciones para programar en Android
* No hacer suposiciones sobre el tamaño de la
pantalla o la resolución
* Nunca codificar los valores de cadena en el
código
* Utilizar diseños relativos y píxeles
independientes del dispositivo
* Optimizar los activos para diferentes
resoluciones de pantalla
* Determinar qué APIs están disponibles
* Guarde los valores como los recursos
(colores,dimensiones, matrices, imágenes, diseños)
55. Programando en Android
Creando un proyecto
usando Eclipse
El plugin que se instaló en eclipse permite
crear automáticamente proyectos con la
estructura adecuada, acceder a las
dispositivos virtuales y capacidades de
depuración
File>New>AndroidProject
56. Programando en Android
Referencia
de todos
Estructura de un proyecto los objetos
Clases
Objetos
del API
Textos, menús
Recursos colores,
formas, estilos
visuales
Esqueleto de las
vistas
Config.
de la app