Está en la página 1de 44

uesarrollo de Apllcaclones Mvlles en Androld

rofesorado:
!orge L. Carballo lranquls
uavld u. Par[anl Par[anl
ulrecLor:
!ose Luls 8oda
lndlce
Locallzacln
lnLerneL
8aLerla
referenclas
Menus conLexLuales
Androld Moderno
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 2
Locallzacln
odemos obLener lnformacln de locallzacln a
Lraves de la clase LocauonManager
La lnformacln de locallzacln uene dos
proveedores (Locauon rovlders)
8ecepLor CS (CS_8CvluL8)
8ed (Wl-ll o Lrlangulacln de anLenas)
(nL1WC8k_8CvluL8)
Ls necesarlo dlsponer de dos permlsos:
!"#$%&#'()$*&++&%"',--.//0123.045-,6253
!"#$%&#'()$*&++&%"',--.//0-5,8/.045-,6253
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 3
Locallzacln
Lo que hacemos es pedlrle al
LocauonManager que nos devuelva la uluma
poslcln conoclda de un deLermlnado
proveedor
LsLo nos devolver un ob[eLo de la clase
Locauon
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 4
Locallzacln


12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 3
!"#$%"&'$&$()* ,"#'(* - .!"#$%"&'$&$()*/
()01230)41)*56#).7"&0)809!"#$%&"'()*+,&#*-.

$&:*"6:9,"#$%"&9!"#$%"& ,"#$%"& -
,"#'(*9()0!$30;&"<&!"#$%"&.!"#$%"&'$&$()*901)(1+",&2*+-.

$&:*"6:9,"#$%"&9!"#$%"& ,"#$%"& -
,"#'(*9()0!$30;&"<&!"#$%"&.!"#$%"&'$&$()*9'*%3"+4(1+",&2*+-.

,"#$%"&9()0!"&(60=:)./>
,"#$%"&9()0!$%0=:)./>

Locallzacln
Ls Lodavla un campo por exploLar
LsLn surglendo empresas y redes soclales
dedlcadas a exploLar slo servlclos basados en
la locallzacln
odemos lnclulr la locallzacln en
prcucamenLe Lodos los casos de uso de
Androld que podamos lmaglnar
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 6
Locallzacln
aralelamenLe a los servlclos de poslcln,
Androld nos provee de mapas
Se LraLa del ob[eLo MapView, que es una Al
de Coogle Maps
odemos uullzar el mapa como queramos,
lnserLando punLos, pldlendole ruLas, eLc.
8equlere de acceso a lnLerneL, luego
neceslLamos del permlso
!"#$%&#'()$*&++&%"'236.83.6
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 7
Locallzacln
Ll MapView es una herramlenLa avanzada,
pero LremendamenLe poLenLe
8equlere que nos reglsLremos y sollclLemos
una llave para el servlclo Coogle Maps
Ls graLulLa sl nuesLra apllcacln es graLulLa
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 8
Acceso a lnLerneL
Poy dla, las dos Lecnologlas de acceso mvll a
lnLerneL ms uullzadas son 2C (C8S/LuCL) y 3C
(uM1S), y en general se las denomlna radlos".
LnLre 2C y 3C, exlsLen dos Lecnologlas
predomlnanLes, la CSM y la CuMA, que son
LoLalmenLe lncompaubles
no Lodas las operadoras uullzan las mlsmas
frecuenclas de radlo, luego dos Lelefonos 3C CSM
con dlsunLas frecuenclas pueden no operar de la
mlsma forma en dlsunLas operadoras
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 9
Acceso a lnLerneL
Ln Amerlca se uullzan las redes 3C (A1&1 y 1-
Moblle) y CuMA (verlzon Wlreless y SprlnL)
A1&1 y 1-Moblle sus proplas bandas de
frecuencla dlsunLas
verlzon y SprlnL usan la mlsma CuMA
Ln Luropa y Asla se suele uullzar 3C CSM con la
mlsma frecuencla
Las frecuenclas uullzadas por 1-Moblle son 100
compaubles con las de Luropa y Asla
Algunas operadoras de Asla/Cceanla Lamblen
uullzan CuMA
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 10
Acceso a lnLerneL
Ln los Lelefonos Androld, Lenemos Lres
meLodos de acceso a lnLerneL:
Celular (C8S y 3C)
8ed local (Wl-ll)
nosoLros podemos consulLar a Androld sl se
posee acceso a lnLerneL, y desde que fuenLe
(C8S, 3C, Wl-ll)
Androld esL preparado para funclonar con
Web-servlces (8LS1), y servleLs (doCeL y
doosL)
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 11
Acceso a lnLerneL
LsLn ordenadas de menor a mayor velocldad:
2C, 3C, Wl-ll
Crdenadas de menor a mayor consumo de
baLerla
2C, 3C, Wl-ll
Crdenadas de me[or a peor rauo de canudad
de daLos por mlll-amperlo de baLerla
consumldo
Wl-ll, 3C, 2C
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 12
Acceso a lnLerneL
uebemos suponer que nC slempre se dlspone
de acceso a lnLerneL
Calda de la red, poca senal, baLerla ba[a, eLc.
Al dlsenar nuesLras apllcaclones, debemos
proLeger el consumo de baLerla
AnLe la duda, lo me[or es slempre de[ar al
usuarlo eleglr (nosoLros no podemos predeclr
Lodos los casos poslbles, y se consldera como
buena prcuca)
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 13
Acceso a lnLerneL
Carrera hacla la cuarLa generacln (4C)
LxlsLen dos prlnclpales Lecnologlas que asplran a
alcanzar el esLndar 4C, WlMAx (basado en los
esLndares 802 de los que derlva la Wl-ll) y L1L o
Long 1erm Lvoluuon (evolucln naLural de las
redes 3C acLuales)
AcLualmenLe, nlnguna de las dos Lecnologlas han
logrado alcanzar los esLndares de velocldad 4C,
sln embargo ambas se venden como Lales
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 14
Acceso a lnLerneL
Carrera hacla la cuarLa generacln (4C)
Ln Suecla y noruega, ya se dlspone de red 4C
Ln LsLados unldos, ya esLn en funclonamlenLo
redes basadas en L1L, y WlMAx se esL
desfasando para su uso comerclal.
Ln Lspana, Lodavla nos esLamos peleando por
denlr un especLro de redes para que se pueda
lmplanLar, con L1L como favorlLa.
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 13
8aLerla
uenlmos una serle de nlveles en los
Lelefonos:
uumphones
leaLurephones
SmarLphones
Ll smarLphone de hoy se convlerLe en el
leaLurephone de manana, y asl
suceslvamenLe
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 16
8aLerla
Ln un dumbphone, la baLerla suele ser de
unos 800-900 mAh, y llega a durar ms de una
semana
Ln los feaLurephones, con la mlsma capacldad
que los dumbphones, la baLerla llega a durar
dlas
un smarLphone con baLerlas del orden de
1300 a 2300 mAh, sl dura ms de un dla, es un
auLenuco mllagro
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 17
8aLerla
Se suele conslderar que un SmarLphone se
carga duranLe la noche, se coge por la
manana, y al llegar la Larde ya esL
auLorlzado" a pedlr el cargador
Ls un punLo basLanLe crlucado en general
or que?
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 18
8aLerla
Ll elemenLo que ms gasLa la baLerla suele ser la
panLalla, que consume muchlslma luz al
encenderse y apagarse (operacln muy comun)
Ll segundo elemenLo es el uso del CS
Ll Lercer elemenLo es el uso de las radlos (3C y
Wl-ll), porque los smarLphones esLn
permanenLemenLe conecLados a lnLerneL
or ulumo el uso de apllcaclones, que sl no esLn
opumlzadas, pueden forzar al dlsposluvo a no
uullzar recursos de forma puma
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 19
8aLerla
Asl que, que hacemos nosoLros?
no slempre es culpa nuesLra, la Lecnologla de
baLerlas es la que avanza ms lenLamenLe de
enLre Lodas las que forman un smarLphone
Las apllcaclones paslvas (que no hacen nada a
menos que el usuarlo acuve evenLos) poco
pueden hacer
Las que uullcen lnLerneL y CS deben moderar
su uso y anadlr cdlgo que apague los
slsLemas sl no se esLn uullzando
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 20
referenclas
Al conLrarlo que en oLras plaLaformas, es
basLanLe comun que las apllcaclones Androld
Lengan su proplo panLalla de preferenclas,
aunque sea muy bslco.
LxlsLe una Al que nos permlLe guardar
parmeLros sobre el comporLamlenLo general de
nuesLras acuvldades en las preferenclas
odemos hacer Loda la lnLerfaz de la panLalla de
preferenclas con xML, como sl fuese una
acuvldad ms
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 21
referenclas
LxlsLen unas Views especlcas para las
preferenclas, como
EditTextPreference,
CheckBoxPreference,
ListPreference, eLc.
odemos dlvldlr las preferenclas en
caLegorlas, con el 9!:
PreferenceCategory
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 22
referenclas
Las preferenclas no uenen id, slno una llave
(key)
no hay un campo de LexLo, slno un uLulo
(title)
LxlsLe un campo de descrlpcln, que no debe
ser largo (summary)
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 23
referenclas
?@*)A)*)&#)1#*))&
84,&3B$&:*"6:-56789::;<6=>?;@?ABCDEB@<D>:?8F:C=;:?ABCDEB5
$&:*"6:B%0,)-G1C=H=C=A<=;5I
?@*)A)*)&#)7$0)("*2
$&:*"6:B%0,)-GJ?;E< 1C=H=C=A<=;5I
?C:60D)80@*)A)*)&#)
$&:*"6:BE)2-GK;=CA?>=5
$&:*"6:B&$4)-GK;=CA?>=*BEL%=ML5
$&:*"6:B6&F=0D2F)-5L=ML1?;;NDCB5
$&:*"6:B%0,)-GO;=CA?>=5
$&:*"6:B3=44$*2-G1P=?;= EA;=CL QDKC K;=CA?>=5I
?GC:60D)80@*)A)*)&#)H
?G@*)A)*)&#)7$0)("*2H
?G@*)A)*)&#)1#*))&H

12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 24
referenclas
F=I,6# #,$33 JK1L$*):@*)A)*)&#)3 )80)&:3 @*)A)*)&#)M#%5602 N

F*65$0) C:60D)80@*)A)*)&#) =3)*&$4)>
F=I,6# 30$%# 10*6&( ((O)*+'$R*(4*S(( T GK;=CA?>=5.

OP5)**6:)
F=I,6# 5"6: "&7*)$0).K=&:,) 3$5):Q&30$&#)10$0)/ N
3=F)*9"&7*)$0).3$5):Q&30$&#)10$0)/>
$::@*)A)*)&#)3R*"4S)3"=*#).S9,$2"=09;=UAV;-.
)6?C=B1C=H=C=A<=; 8C=H; T
@*)A)*)&#)'$&$()*9V=L2=H?KPL)6?C=B1C=H=C=A<=;WL6E;-.
K;=CA?>= T .C:60D)80@*)A)*)&#)/
T&:@*)A)*)&#).UUV1CSWM'C(4*S((-.
X
X

12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 23
referenclas
Las preferenclas esLn muy valoradas por los
app revlewers" y en general por los usuarlos
Se consldera que las buenas apllcaclones
uenen una canudad #"**)#0$, de opclones,
permluendo a los usuarlos varlar el
comporLamlenLo de sus apllcaclones, sln ser
demaslado compllcadas
Adems de las opclones obvlas, convlene
anadlr preferenclas respecLo a los deLalles de
la apllcacln
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 26
referenclas
Lo ms usual, es anadlr las preferenclas en la
prlmera Acuvldad de la apllcacln como
opcln (menu de opclones)
Al lgual que sucede con los menus, podemos
Lener varlos nlveles de referenclas
Las referenclas del slsLema de Androld son el
me[or e[emplo
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 27
Menu ConLexLual
Los menus conLexLuales son aquellos menus
que aparecen dependlendo del conLexLo que
Lengas en la apllcacln
ContextMenu (exLensln de Menu)
ara ver un menu conLexLual medlanLe una
pulsacln larga", se deber reallzar la
llamada a registerForContextMenu(View) y
sobreescrlblr el meLodo
onCreateContextMenu(ContextMenu, View,
ContextMenu.ContextMenuInfo)
Crear opclones en el menu
conLexLual
@Override
public void onCreateContextMenu(ContextMenu menu, View view,
ContextMenuInfo menuInfo)
{
menu.add (0, MENU_DELETE_FRIEND, 0, ``Delete Friend'');
menu.add (0, MENU_MONITOR_FRIEND, 0,''Monitors your Friend'');
}
Acclones en el menu ConLexLual
CbLencln de acclones a reallzar
Se e[ecuLa el meLodo onContextItemSelected()
Ahl obLendremos la opcln selecclonada y el
AdapLador del menu conLexLual para obLener sobre
que vlsLa" de la llsLa se reallz al pulsacln larga.
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

switch (item.getItemId()) {
case MENU_ADD:
posicionDondeInsertar = info.position+1;
return true;

Androld Moderno
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 31
Androld Moderno
Con la llegada de la versln 3.0, Androld
neceslLaba revlLallzarse, neceslLaba buscar
una nueva forma de organlzar la gran canudad
de espaclo ofreclda por los 9!;<)9+.
Aunque las verslones 3.x no lban a ser
compaubles con los Lelefonos, sl que
neceslLaban senLar las bases para que las
verslones 4 en adelanLe, permluesen
comblnar lo me[or de los dos mundos.
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 32
Androld Moderno
8lenvenldos a los 1$!:*)"9+
uenen un elemenLo re-uullzable de la panLalla.
8slcamenLe, lo que anLes en un Lelefono era una sola
Activity, ahora es un solo Fragment.
Ll lragmenL manuene casl Lodo el comporLamlenLo
que ya conocemos de una Activity, lncluldo gran
parLe de su Clclo de vlda.
La Activity se manuene, Lodavla como
responsable de cada panLalla de la apllcacln, pero
con la responsabllldad de ser capaz de adapLarse
segun el enLorno (Lelefono == 1 Fragment, 9!;<)9 ==
2 ms Fragment en panLalla)
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 33
Androld Moderno
ueclarar un Fragment es lgual que una Activity, pero
en lugar de exLender de la clase Activity, exLendemos
de la clase Fragment.
Ln el meLodo onCreate() llamamos al mlsmo meLodo
pero de la superclase, y es Lamblen donde podemos denlr
opclones del Fragment, como lndlcar que no se nos
guarde el esLado setRetainInstance(false) o que
uene un Menu setHasOptionsMenu(true).
Ln el meLodo onCreateView() debemos expandlr el
<!=%>9 que conLendr el Fragment uullzando el
LayoutInflater que se nos pasa por parmeLro, y ese
mlsmo View como <!=%>9 que expandlmos es el que
Lenemos que devolver en el meLodo, ya que esLa es su
Larea.
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 34
Androld Moderno
A nlvel de xML, el Fragment es lgual que un Activity,
pudlendo nosoLros susuLulr el <!=%>9 de la segunda por la del
prlmero sln problemas.
ara que una Activity expanda un Fragment, debemos
declararlo de la slgulenLe forma:

12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 33
<fragment
class=com.aplicacion.fragments.miFragment
android:id=@+id/mainFragment
android:layout_width=match_parent
android:layout_height=match_parent>
</fragment>
Androld Moderno
La Activity pues, pasa a Lener como
responsabllldad mane[ar los Fragments en panLalla y
sus muluples lnLeracclones enLre ellos.
Los Fragments se convlerLen en elemenLos
reuullzables dedlcados al menor numero de funclones
poslbles, de forma que puedan ser reuullzados en
muluples Activity.
LxlsLen las Lransacclones" para lnLercamblar un
Fragment por oLro en e[ecucln.
Los Fragments slo exlsLen a parur de la versln 3.0,
pero a Lraves de la ACL los podemos Lener
compleLamenLe soporLados desde la versln 1.6.
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 36
Androld Moderno
Clclo de vlda de un lragmenL
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 37
Androld Moderno
Con la llegada de Androld 4, muchos camblos que se
vleron en los 9!;<)9+ fueron conrmados.
Ll boLn de Menu desaparecl, y fue susuLuldo por un
nuevo aLrn de ulseno de lnLerfaz, la 8arra de
Apllcaclones.
Los boLones, por norma general, de[aron de ser nslcos, y
pasaron a esLar lncorporados en la propla panLalla.
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 38
Androld Moderno
8arra de Apllcaclones
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 39
Androld Moderno
8arra de Apllcaclones
lncorpora lo que anLerlormenLe era conocldo
como Menu" como boLones en la esqulna
superlor derecha.
Sl alguna opcln no cabe, aparece en una llsLa
exLendlda.
La barra Lamblen cambla de forma conLexLual,
para mane[ar acclones de Coplar y egar, al lgual
que de upo ?$!: @ ?$%(.
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 40
Androld Moderno
8ack" vs. up"
CLro camblo fue la aparlcln de la navegacln
up", cuando el usuarlo pulsa el lcono de la
apllcacln en la 8arra de Apllcaclones.
Se hablllLa llamando al meLodo
getActionBar().setDisplayHomeAsUpEnable
d(true) en el onCreate() de la Activity.
Se deLecLa denLro del
onOptionsItemSelected(), ba[o el
ldenucador android.R.id.home
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 41
12/10/12
uesarrollo de Apllcaclones Mvlles en
Androld
42
12/10/12
uesarrollo de Apllcaclones Mvlles en
Androld
43
Androld Moderno
Al pasar de la verslones Anuguas a las Modernas, Androld
lnLenL modernlzarse y volverse mucho ms esLeuco.
Ll problema con el que slempre nos vemos es que, sl, las Als
nuevas lnLroducldas Lras 3.0 A%")=B%*; y sobre Lodo Lras 4.0
2B) -$)!* /!"#C&BD son muy buenas, pero slempre es
lnevlLable mlrar hacla hacla aLrs y pensar que alll no esL
dlsponlble.
La ,"#$%&# -%*(!E;<&9= 4&;$!$= (ACL) soluclona algunos de los
lnconvenlenLes, pero no Lodo puede esLar soporLado hacla
deLrs.
ara esos casos, lo que nos queda es uullzar lo que se conoce
como F!G! 8)H)BE%", y pregunLarle a !ava sl deLermlnados
elemenLos esLn dlsponlbles anLes de poder uullzarlos.
Aqul Lenels un enlace a uullzar en casos avanzados, y para Lemas
ms slmples, podels ver nuesLros L[erclclos lnLermedlos.
12/10/12 uesarrollo de Apllcaclones Mvlles en Androld 44

También podría gustarte