GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...
Curso de android
1. Desarrollo
de
Aplicaciones
Móviles
en
Android
Profesorado:
Jorge
E.
Carballo
Franquis
David
D.
Harjani
Harjani
Director:
José
Luis
Roda
2. Índice
• SQLite
• Tabs
• Closing
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
2
3. SQLite
• Base
de
datos
relacional
para
sistemas
embebidos
• Ocupa
únicamente
unos
225KB
en
memoria
• No
se
trata
de
un
proceso,
sino
de
una
librería
que
se
añade
dinámicamente
a
las
aplicaciones
que
quieren
uWlizar
SQLite
• Implementa
la
mayor
parte
del
estándar
SQL-‐92,
pero
con
restricciones
• Soporte
para
ALTER_TABLE
limitado
• Las
columnas
no
Wenen
Wpos
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
3
4. SQLite
• Existen
diferentes
herramientas,
como
sqlite3,
disponible
desde
sqlite.org
• Existen
un
plugin
de
Firefox
para
visualizar
bases
de
datos
SQLite
(recomendado)
• Se
uWliza
internamente
en
Firefox
y
Thunderbird
• Lo
uWlizan
la
mayoría
de
las
plataformas
móviles
(iOS,
Android,
WP7,
BlackBerry
OS,
webOS)
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
4
5. SQLite
en
Android
• Existen
múlWples
formas
de
atacar
SQLite
• Nosotros
veremos
una
en
la
que
separamos
el
acceso
a
la
base
de
datos
del
objeto
Java
que
representa
cada
fila
de
la
base
de
datos
• No
existen
las
claves
ajenas
o
foráneas,
y
en
el
caso
de
necesitarlas,
debemos
forzarlas
“a
mano”
• Es
relaWvamente
fácil
conectar
una
base
de
datos
a
una
lista
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
5
6. SQLite
en
Android
• La
base
de
datos
está
protegida
dentro
de
la
memoria
interna
del
disposiWvo
• Mientras
trabajamos
con
el
emulador
(donde
tenemos
acceso
root),
podemos
extraer
(con
DDMS)
el
archivo
de
la
base
de
datos
y
visualizarlo
• En
general,
el
acceso
suele
ser
rápido
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
6
7. SQLite
en
Android
• Nosotros
queremos
guardar
un
objeto
Java
(un
JavaBean
o
un
POJO)
en
una
base
de
datos
• El
objeWvo
es
que
cada
fila
de
la
tabla
de
la
base
de
datos
represente
unívocamente
a
un
objeto
Java
• Por
tanto,
necesitamos
dos
clases:
– Objeto
Java
con
modificaciones
– Clase
SQLiteOpenHelper
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
7
8. SQLite
en
Android
• En
nuestro
objeto
Java
tendremos
los
siguientes
métodos:
-‐ public
sta+c
Cursor
getAll(SQLiteDatabase
db)
{}
-‐ public
sta+c
DbCryptoAlgorithm
loadFrom(SQLiteDatabase
db,
long
id)
{}
-‐ public
DbCryptoAlgorithm
loadFrom(Cursor
c)
{}
-‐
public
long
save(SQLiteDatabase
db)
{}
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
8
9. SQLite
en
Android
• La
SQLiteOpenHelper
es
una
clase
que
exWende
la
anterior
para
crear
nuestras
tablas
en
la
base
de
datos
• Además,
conWene
información
como
el
nombre
de
la
base
de
datos,
el
nombre
de
la
tabla
y
la
versión
actual
del
esquema
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
9
10. SQLite
en
Android
• Los
métodos
de
la
clase
que
exWende
SQLiteOpenHelper
son:
-‐ public
void
onCreate(SQLiteDatabase
db)
{}
-‐ public
void
onUpgrade(SQLiteDatabase
db,
int
versionAn+gua,
int
versionNueva)
{}
-‐
public
void
onOpen(SQLiteDatabase
db)
{}
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
10
11. Pestañas
• Las
pestañas
o
Tabs
facilitan
la
navegación
en
nuestra
aplicación
12. Creación
de
Pestañas
• Se
necesitara
un
TabHost
y
un
TabWidget
• El
TabHost
deberá
ser
el
nodo
padre
del
layout
– TabWidget
(Pestañas)
– FrameLayout (Contenido
de
las
pestañas)
• Dos
formas
de
implementación
– Diferentes
Views
en
la
misma
acWvidad
– Diferentes
acWvidades
13. Cada
pestaña
una
acWvidad
• Cada
acWvidad
será
una
de
nuestras
pestañas
<?XML
version="1.0"
encoding="ur-‐8"?>
<TabHost
xmlns:android="htp://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientaWon="verWcal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android;padding="5dp"
/>
</LinearLayout>
</TabHost>
14. AcWvidad
principal
• Deberá
extender
de
TabActivity
• En
el
método
onCreate()
TabHost
tabHost
=
getTabHost();
//
The
acWvity
TabHost
TabHost.TabSpec
spec;
//
Reusable
TabSpec
for
each
tab
Intent
intent;
//
Reusable
Intent
for
each
tab
//
Create
an
Intent
to
launch
an
AcWvity
for
the
tab
(to
be
reused)
intent
=
new
Intent().setClass(this,
ArWstsAcWvity.class);
//
IniWalize
a
TabSpec
for
each
tab
and
add
it
to
the
TabHost
spec
=
tabHost.newTabSpec("arWsts").setIndicator("ArWsts",
res.getDrawable(R.drawable.ic_tab_arWsts))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(getIntent());
15. Closing
• More…
– Google
I/O
2009
– Google
I/O
2010
– Google
I/O
2011
– Autores
• Mark
Murphy
• Reto
Meier
• Ed
Burnete
– Las
API
Demos
que
provee
el
SDK,
hechas
por
el
propio
equipo
de
Android
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
15
16. Closing
• Seguridad
en
Smartphones
– En
la
mayoría
de
procesadores,
los
algoritmos
de
cifrado
más
importantes
están
implementados
en
el
chip
(hard-‐wired)
– UWlizamos
algoritmos
de
seguridad
constantemente
en
Internet
(redes
Wi-‐Fi,
protocolo
HTTPS)
– Podemos
acceder
a
ellos
a
través
de
la
librería
java
crypto
(pero
no
es
trivial)
– Es
recomendable
guardar
las
contraseñas
encriptadas,
y
si
es
posible,
no
usar
algoritmos
débiles
como
MD5,
SHA-‐1
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
16
17. Closing
• Power
Efficiency
– Los
Smartphones
se
construyen
siguiendo
la
ideología
System-‐on-‐a-‐Chip
(SoC)
– Todos
los
componentes
(procesador,
módem
[radios],
adaptador
de
pantalla,
cámaras,
GPS,
micrófonos,
etc.)
están
en
una
sola
placa
o
chip
– Un
Smartphone
no
posee
un
único
procesador,
sino
uno
específico
para
determinadas
funciones
– Cuando
hablamos
de
un
ARM11,
ARM
Cortex
A8/
A9,
hablamos
del
procesador
de
aplicaciones
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
17
18. Closing
• La
industria
de
hardware
en
smartphones
es
bastante
diferente
a
la
de
los
PCs
• Actualmente,
hablamos
de
que
una
implementación
de
ARM
Cortex
A8
puede
variar
entre
1000
y
2000
MIPS
(Million
instrucWons
per-‐second),
siendo
un
procesador
súper
escalar
• Un
ARM
Cortex
A9
alcanza
perfectamente
4000
MIPS,
con
promesas
de
hasta
8000
• Los
fabricantes
de
smartphones
piden
los
componentes
a
disWntas
empresas
(la
pantalla,
los
botones,
los
plásWcos,
el
SoC,
etc.)
y
luego
los
ensamblan
en
sus
fábricas
• La
media
de
Wempo
de
desarrollo
de
un
smartphone,
desde
su
concepción
hasta
el
mercado,
es
de
18
meses
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
18
19. Closing
• Actualmente,
estamos
entrando
en
la
tercera
generación
de
disposiWvos
Android
(Galaxy
Nexus
S,
Samsung
Galaxy
S
II,
HTC
SensaWon,
LG
OpWmus
2X)
• Comienzan
a
aparacer
tablets
con
Android
(Samsung
Galaxy
Tab
10.1,
Motorola
Xoom)
• La
verdadera
explosión
de
los
teléfonos
mul$
core
(Cortex
A9)
está
aún
por
llegar
• Intel,
con
su
«Atom
reducido»,
no
sigue
la
arquitectura
ARM
sino
la
x86.
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
19
20. Closing
• Android
es
la
plataforma
que
más
está
creciendo
en
popularidad
en
Estados
Unidos,
y
ya
ha
superado
a
iOS
como
líder
en
cuota
de
mercado,
pero
sólo
en
smartphones
• Es
líder
en
tráfico
de
móviles
(según
AdMob)
superando
incluso
a
iOS
(anWguamente
iPhone
OS)
• En
Europa
está
extendiéndose
como
plataforma,
pero
desgraciadamente
la
mayoría
de
usuarios
no
saben
que
Wenen
Android
ni
lo
que
es
• Falta
un
mayor
empuje
de
publicidad
que
resalte
las
buenas
cualidades
de
los
disposiWvos
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
20
21. Closing
• El
mercado
de
aplicaciones
móviles
(tablets
y
smartphones)
crece
año
tras
año
• Se
espera
que
el
número
de
aplicaciones
descargadas
crezca
de
8,2
mil
millones
de
2010
a
los
17,7
mil
millones
en
2011
• Los
beneficios
obtenidos
en
2010
por
aplicaciones
móviles
se
esWmó
en
5,2
mil
millones
de
dólares,
y
para
2011
se
espera
que
crezca
hasta
los
15,1
mil
millones
– Fuente:
GARTNER
htp://www.gartner.com/it/page.jsp?id=1529214
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
21
22. Closing
• ¿Por
qué?
• El
consumidor
general
está
comenzando
a
entender
la
existencia
de
los
smartphones,
ni
los
servicios
que
ofrece
• Los
smartphones
apenas
representan
un
10
ó
15%
de
las
ventas
de
móviles,
pero
son
los
que
más
beneficios
reportan
a
fabricantes
y
operadoras
• En
los
mercados
emergentes,
se
produce
un
número
millonario
de
altas
nuevas
cada
mes
• La
concienciación
sobre
los
smartphones
crece
poco
a
poco,
y
el
número
de
usuarios
conWnuará
aumentando
• Muchos
creen
que
aún
no
se
ha
producido
la
verdadera
explosión
de
usuarios
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
22
23. Closing
• Android
Market
– Actualmente
está
en
pleno
apogeo,
con
más
de
500,000
aplicaciones
– No
importa
el
número,
sino
la
calidad
– Para
ser
desarrollador,
solamente
es
necesario
pagar
25
euros
una
sola
vez
– Podemos
subir
todas
las
aplicaciones
que
queramos,
aparecen
automáWcamente
– Si
nuestra
aplicación
es
de
pago,
no
la
veremos
en
nuestro
disposiWvo
(no
podemos
comprar
nuestras
aplicaciones)
– El
raWo
es
70%
para
el
desarrollador
y
30%
para
el
operador,
no
Google
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
23
24. Closing
• Android
Market
– Existen
diferentes
estrategias
para
vender
aplicaciones:
publicidad,
versiones
“Donate”,
etc.
– La
posibilidad
de
realizar
compras
desde
la
propia
aplicación
abre
paso
a
una
vieja
costumbre,
el
shareware
– Los
pagos
se
realizan
a
través
de
Google
Checkout
– Como
Android
es
libre,
existen
otros
mercados
que
compiten
con
el
Market;
especial
mención
merecen
la
Amazon
Android
Appstore
y
Getjar
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
24
25. Closing
• Eficiencia
– Cuando
programamos
para
un
ordenador,
hacer
un
bucle
como:
• for
(int
k
=
0;
k
<
S[i][j]*R[i][j]
+
1;
k++)
– No
Wene
graves
consecuencias,
pero
en
un
móvil
sí,
porque
repeWmos
el
gasto
de
batería
para
la
misma
operación
– De
hecho,
este
bucle
«clásico»
ya
es
ineficiente:
• For
(int
i
=
0;
i
<
myString.length;
i++)
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
25
26. Closing
• Eficiencia
– Cuando
escribimos
código
y
llamamos
código
desde
las
acWvidades,
estamos
ejecutando
desde
el
hilo
de
la
UI
– Si
el
código
que
ejecutamos
tarda
más
de
5
segundos,
Android
detectará
que
la
UI
ha
dejado
de
responder
ante
el
usuario
y
le
preguntará
si
quiere
cerrarla
– Debemos
separar
el
código
lento
en
un
nuevo
hilo,
y
mantener
el
hilo
de
la
UI
ocupado
con
un
ProgressDialog
– También
podemos
hacer
uso
de
los
Tasks,
que
son
clases
que
nos
permiten
ejecutar
código
en
hilos
disWntos
a
la
UI
con
una
interfaz
pre-‐definida
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
26
27. Closing
• ¿Es
importante
tener
un
disposiWvo
Android
de
verdad
como
desarrollador?
– La
respuesta
es
siempre
SÍ
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
27
28. Closing
• ¿Vale
la
pena
gastarse
tanto
dinero?
– Depende
de
si
vamos
a
inverWr
horas
en
desarrollar
aplicaciones
y
colocarlas
en
el
Android
Market
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
28
29. Closing
• Hay
tantos
disposiWvos
que
no
sé
cuál
comprar.
¿Qué
es
lo
ideal?
– Lo
ideal
es
tener
uno
de
cada
Wpo
de
pantalla
– La
pantalla
y
los
controles
marcan
la
diferencia
entre
un
disposiWvo
y
otro;
podemos
hacernos
una
idea
de
cómo
funciona
un
pad
en
lugar
de
un
teclado,
pero
no
podemos
imaginarnos
una
pantalla
con
una
determinada
resolución
• Lo
que
recomendamos
es
tener
2
disposiWvos:
uno
de
gama
baja/media
(HTC
Wildfire
S,
HTC
Legend,
etc.)
y
uno
de
gama
alta
(Galaxy
Nexus,
Samsung
Galaxy
S
II,
HTC
SensaWon,…)
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
29
30. Closing
• ¿Algo
más
que
se
les
ocurra?
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
30
31. Closing
¡¡¡Gracias!!!
Jorge
Carballo
Franquis
(jelcaf@gmail.com)
David
Dinesh
Harjani
Harjani
(goldrunner192287@gmail.com,
@dinesharjani)
11/7/11
Desarrollo
de
Aplicaciones
Móviles
en
Android
31