Professional Documents
Culture Documents
FP Dam m08 U1 Pdfindex PDF
FP Dam m08 U1 Pdfindex PDF
de dispositius mbils
Eduard Garca Sacristn
ndex
Introducci 5
Resultats daprenentatge 7
Introducci
Un dels mercats amb major creixement en els darrers anys ha estat el de lano-
menada telefonia intelligent. Un dels aspectes fonamentals daquesta ha estat
lampli ventall daplicacions disponibles per aquests dispositius, que tenen unes
caracterstiques de maquinari avanades. Android s un dels sistemes operatius
punters en aquest mbit i amb el qual s possible crear aplicacions de manera lliure
i gratuta. En aquesta unitat us endinsareu en la programaci de dispositius mbils
i multimdia en Android.
Per seguir els continguts daquest mdul, s convenient anar fent les activitats i
els exercicis dautoavaluaci i llegir els annexos (si nhi ha). Tot i que les unitats
formatives tenen un contingut important des del punt de vista conceptual, sempre
sha procurat donar-los un enfocament prctic en les activitats proposades.
Programaci multimdia i dispositius mbils 7 Introducci a la programaci de dispositius mbils
Resultats daprenentatge
Avui dia la batalla dels dispositius mbils est ms dactualitat que mai. Apple
va revolucionar el mercat de la telefonia mbil amb el seu iPhone, deixant una
srie de vctimes pel cam com van ser Palm, Windows C i els telfons de Nokia
amb Symbian. Tota la resta del mercat ha estat cercant durant anys lanomenat
iPhone Killer (assass deliPhone) o el telfon que desbancaria el fams telfon
intelligent de la companyia de la poma com a telfon amb ms xit. Finalment, ens
hem trobat que no ha existit tal telfon, sin que lxit daltres plataformes (com
Android) ha consistit en establir tot un ecosistema de dispositius compatibles amb Tot i no vendre tants telfons
qu combatre la quota de mercat dels dispositius Apple. Els altres actors daquesta com altres companyies, els
beneficis dApple superen
competici de mercat (Blackberry de RIM i Windows Phone de la m de Microsoft amb escreix els de les altres
companyies.
i Nokia) tenen la difcil tasca de trobar el seu espai en un mercat on cada vegada
s ms difcil trobar visibilitat.
Quant als sistemes operatius dels anomenats telfons intelligents, es pot veure la
quota de mercat el desembre de 2011 a la taula 1.1.
Programaci multimdia i dispositius mbils 10 Introducci a la programaci de dispositius mbils
Taula 1.1. Quota de mercat dels diferents sistemes operatius (desembre de 2011)
Android 47,3%
iOS 29,6%
Blackberry 16,0%
Symbian 1,4%
Una de les caracterstiques que ms va afianar Apple amb el seu iPhone va ser
la inclusi dun mercat daplicacions integrat al propi dispositiu, on els usuaris
poden cercar, analitzar i comprar aplicacions duna manera molt senzilla. Aquest
ecosistema daplicacions sha demostrat com un dels valors afegits ms importants
en els actuals dispositius mbils, ats que un aparell amb un gran maquinari
t una utilitat molt limitada si no ve acompanyat dun programari que en faci
un servei adequat. En aquest sentit, Google va entendre la importncia de les
aplicacions i ha facilitat la creaci daplicacions i la seva publicaci en llur mercat
daplicacions. Aix, a pesar dhaver llanat la seva plataforma daplicacions ms
tard, la quantitat daplicacions descarregades creix a un ritme molt alt, tal com es
pot veure a la figura 1.1.
El mercat de la telefonia mbil va deixar de ser fa temps una promesa per establir-
se com una de les principals formes de comunicaci al mercat de consum actual.
Aix, si en un principi els telfons ens permetien realitzar trucades telefniques
i enviar missatges, a poc a poc shan anat introduint noves caracterstiques i
funcionalitats als dispositius mbils fins arribar al punt actual, on s possible
portar a la butxaca un autntic ordinador personal.
Al final dels anys noranta, la majoria dels telfons encara tenien unes funcionalitats
molt limitades, i aquells usuaris que tenien necessitats ms enll del que podia La primera PDA
La primera PDA de la histria va
oferir el seu telfon tamb carregaven amb un dispositiu tipus PDA (Personal ser la Psion Organizer
desenvolupada lany 1984.
Digital Assistant, assistent digital personal), que oferia funcionalitats avanades, (Psion s una companyia que va
desenvolupar programes per al
com ara: agenda, pantalles tctils, expansi amb targetes de memria, connexi mtic ordinador ZX Spectrum
pels volts dels anys vuitanta).
sense fils i una srie daplicacions prpies de la plataforma. La primera PDA de la Tot i aix, la primera vegada que
histria va ser la Psion Organizer desenvolupada lany 1984 (figura 1.2). Aquestes es va fer servir lexpressi
PDA va ser lany 1992 amb la
PDA portaven un sistema operatiu propi, com per exemple Palm OS, BlackBerry presentaci delApple Newton.
Encara que el mercat de les PDA estava dominat per lempresa Palm (fabricant
tant del maquinari com del sistema operatiu mbil), Microsoft va treure al mercat
Windows Mobile, basat en la plataforma Pocket PC lany 2000 que, grcies a la
possibilitat de llicenciar-lo per part daltres empreses, va ser molt popular i lany
2007 va obtenir un 42% del mercat.
GPS
Teclat en pantalla
Aplicacions de tercers
En aquest materials hem decidit fer servir Android (figura 1.4) com a eina de
desenvolupament per les segents caracterstiques:
Per tot aix, pensem que Android s la plataforma ideal per introduir-se en el
desenvolupament de la programaci en dispositius mbils i multimdia.
Android t una llicncia de codi lliure i est disponible de forma gratuta per als
fabricants per a la seva adaptaci. No existeixen configuracions fixes de maquinari
i programari, encara que Android suporta les segents caracterstiques:
Programaci multimdia i dispositius mbils 15 Introducci a la programaci de dispositius mbils
Android Runtime: est al mateix nivell que les llibreries i proporciona una
srie de llibreries fonamentals que permeten als desenvolupadors escriure
aplicacions dAndroid fent servir Java. El runtime dAndroid tamb inclou
la mquina virtual Dalvik, que permet a cada aplicaci Android executar-se
en el seu propi procs (que s una instncia daquesta mquina virtual). Les
aplicacions Android estan compilades en executables Dalvik.
Lagost del 2008, Google va anunciar lAndroid Market, el seu propi mer-
cat daplicacions, que va ser rebatejat com a Google Play el mar de 2012
(https://play.google.com/store). Els usuaris poden descarregar aplicacions de
tercers directament des del seu dispositiu (a travs de laplicaci Play Store, preins-
tallada a la majoria de dispositius Android). Google Play disposa daplicacions
gratutes i de pagament.
3. Execuci de laplicaci.
5. Desinstallaci de laplicaci.
T una mida reduda i un pes lleuger. Per tant, la mobilitat s una de les seves
principals caracterstiques. Idealment, s un dispositiu que es pot portar a
la butxaca o a una bossa petita i que es pot fer servir rpidament.
T una alta capacitat dinteracci amb lusuari mitjanant una pantalla tctil
o una pantalla i un teclat.
Aix, considerem dispositius mbils els telfons mbils, els telfons intelligents
(smartphones), les PDA i els tablets. Descartem els ordinadors porttils com a
dispositius mbils, ats que donades les seves dimensions i pes sn dispositius
que no es poden portar a la butxaca.
Els dispositius mbils tenen unes caracterstiques particulars quant a les seves
capacitats de processament i memria. El fet que aquests dispositius siguin
principalment mbils i, per tant, dunes dimensions i pes reduts, determina
les seves caracterstiques de maquinari. Principalment, les seves limitacions,
comparats amb els dispositius de taula, sn les segents:
Solen tenir una connexi permanent a Internet, i per tant sha de donar
especial importncia a la seguretat.
Totes aquestes caracterstiques es van millorant a poc a poc, i els nous dispositius
cada vegada tenen ms capacitat de processament, ms memria, pantalles ms
grans i millors connexions a Internet. Aix i tot, sempre aniran per darrere dels
ordinadors de taula, i per tant shan de tenir en compte les seves caracterstiques
quan programem sobre aquests dispositius.
Aquests passos poden canviar amb el temps, i estan especificats a la web dAndroid
(developer.android.com/sdk/installing.html); per tant, es recomana revisar que el
procediment segueix sent vlid.
En primer lloc, heu de confirmar que el vostre ordinador compleix els reque-
riments del sistema per desenvolupar en Android. Hem de dir que les exign-
cies sobre les caracterstiques de la mquina sn elevades (especialment per a
lexecuci del simulador). Els requeriments del sistema poden canviar al llarg
del temps. Podeu trobar els requeriments actualitzats a la web oficial dAndroid:
developer.android.com/sdk/requirements.html.
Els sistemes operatius han de ser, com a mnim (requeriments a abril de 2012):
Plugin JDT per a Eclipse. Existeixen diferents versions dEclipse per a cada
plataforma. Per desenvolupar aplicacions Android es recomana una deles
segents:
Podeu descarregar el JDK des de la pgina oficial dOracle. Tot i Lobjectiu principal del
que ja es troba disponible la versi 7, al web dAndroid encara hi projecte OpenJDK s
produir una implementaci
recomanen el JDK 6, i per tant aquest s el que descarregareu de: de codi obert de la
plataforma Java Standard
www.oracle.com/technetwork/java/javase/downloads/jdk-6u30-download- Edition.
1377139.html.
Podeu comprovar quina versi de Java teniu installada amb la comanda java Per comprovar quina versi
de Java teniu installada, feu
-version. Ubuntu ve en moltes ocasions amb la versi OpenJDK, que no s tan servir la comanda java
-version.
rpida ni ptima per treballar amb Eclipse; per tant, es recomana que feu servir la
versi de Sun.
Una vegada descarregat, el podeu trobar a la carpeta de baixades, tal com es veu
a la figura 1.5.
Per poder installar-lo, primer li doneu permisos dexecuci amb sudo chmod
777 ./nom_del_fitxer,i a continuaci executeu amb ./nom_del_fitxer. Aix us
descomprimir una srie de paquets .rpm dinstallaci, com es veu a la figura 1.6.
Com que per defecte els fitxers RPM no sn per treballar amb sistemes Ubuntu, els Podeu installar alien o
podeu convertir a fitxers .deb o installar-los directament amb el programa alien qualsevol altre programa
amb sudo apt-get install
amb la comanda sudo alien -i nom_paquet. nom_programa.
Una altra forma dinstallar-lo s actualitzant els repositoris del sistema amb
la comanda sudo add-apt-repository deb http://archive.canonical.com/
lucid partner i sudo apt-get update.
Una vegada actualitzat el repositori, el podeu installar amb sudo apt-get install
sun-java6-jdk i actualitzar amb sudo update-java-alternatives -s java-6-sun.
www.eclipse.org/downloads/
Tot i que es pot fer daltres maneres, desenvolupar en Eclipse amb ADT s una
aproximaci molt recomanable de programar per a Android.
Per descarregar el plugin ADT feu servir lUpdate Manager (gestor dactualitza-
cions) de lEclipse.
Una vegada dins lEclipse, entreu a Help/Install New Software. Afegiu una nova
localitzaci on trobar el programari, prement el bot Add que es troba dalt a la
dreta. El dileg que apareix el podeu veure a la figura 1.8.
Connexi segura? En aquest dileg introduu ADT plugin com a nom i el segent URL en la
Si teniu problemes en aconseguir
el plugin ADT, podeu provar de
localitzaci https://dl-ssl.google.com/android/eclipse/. Feu clic a OK.
fer servir el protocol http en lloc
dhttps simplement canviant una Seleccioneu el checkbox al costat de Developers Tools a la llista de programari
paraula per laltra al
comenament de ladrea. disponible i feu clic a Next (segent).
Una vegada fet tot aix, tornem al punt de la installaci on ho havem deixat. En
aquest punt haureu de veure un dileg amb la llista delements que sinstallaran
i cap tipus dincidncia a la caixa de baix on diu Details, com es pot veure a la
figura 1.9. Feu clic a Next.
Programaci multimdia i dispositius mbils 23 Introducci a la programaci de dispositius mbils
En el segent dileg, accepteu els termes de la llicncia i feu clic a Finish per
installar els paquets. Aquesta operaci pot tardar uns minuts.
Si us pregunta si voleu installar alguns dels paquets que no estan signats (dileg
de la figura 1.10), contesteu que s. Una vegada installat, reinicieu Eclipse.
Una vegada reiniciat lEclipse, heu de configurar les preferncies delADT perqu
apunti al directori delSDK dAndroid (el directori que us hem demanat abans que
apunteu). Quan inicieu Eclipse, el primer que veureu ser un dileg com el de la
figura 1.11.
Programaci multimdia i dispositius mbils 24 Introducci a la programaci de dispositius mbils
La versi 2.1, que est suportada pel 97% dels dispositius Android.
Tamb podeu fer servir la versi de lSDK que heu installat amb anterioritat
(per aix haureu dintroduir el directori on es trobalSDK que heu installat
anteriorment).
Per veure totes les formes dinstallaci, installareu de nou lSDK des del mateix
ADT (aquesta opci no existia en versions anteriors). Si b s cert que amb
la versi 2.1 dAndroid podreu fer prcticament qualsevol tipus daplicaci,
seleccioneu installar les dues versions (la ms nova i la 2.1). Feu clic a Next.
En el segent dileg us pregunta si voleu enviar estadstiques a Google de ls
de lSDK dAndroid per tal de millorar-lo en properes versions. Podeu escollir
lopci que preferiu i feu clic a Finish. Aix installar les versions de lSDK que
heu escollit.
Lltim pas per configurar lSDK s fer servir lSDK dAndroid i lAVD Manager
(una eina inclosa a lSDK) per descarregar els components de lSDK essencials
per al nostre entorn de desenvolupament.
Programaci multimdia i dispositius mbils 25 Introducci a la programaci de dispositius mbils
LSDK fa servir una estructura modular que en separa les principals parts, els
afegits, les eines, els exemples i la documentaci en components installables
de forma separada. El SDK Starter Package que heu installat (paquet de
comenament dSDK) inclou nicament la darrera versi de les eines de lSDK.
Podeu descarregar altres components (com les darreres versions de la plataforma
dAndroid quan es publiquen).
Podeu executar lAndroid SDK and AVD Manager duna de les segents maneres:
2. Des de la consola, entreu dins del directori /tools dins del directori de lSDK
dAndroid i executeu ./android.
Des daqu podeu seleccionar els components que voleu installar o actualitzar.
SDK Tools: cont les eines per comprovar i depurar les aplicacions
Android. Aquestes eines estan installades juntament a lSDK dAndroid
i reben actualitzacions peridiques. Es troben a la carpeta /tools dins de la
carpeta dinstallaci de lSDK.
Els afegits de tercers (Third party Add-ons) proporcionen components que per-
meten la creaci dun entorn de desenvolupament fent servir una llibreria externa
dAndroid especfica (com, per exemple, la llibreria de Google Maps) o una imatge
de sistema dAndroid feta a mida (en angls, customized).
Quan desenvolupeu per a Android tindreu el dubte de quina versi de la plataforma feu
servir. Si feu servir la darrera versi disponible, s possible que el vostre programa estigui
disponible nicament per a un percentatge de dispositius reduts del mercat. Per aquest
motiu, s interessant en alguns casos fer servir versions anteriors perqu la vostra aplicaci
sigui compatible amb la major quantitat de dispositius possibles.
Samples: els exemples de components donen codi que podeu fer servir per
aprendre Android, carregar-lo com a projecte i executar-lo, o, fins i tot,
reaprofitar-lo en els nostres projectes. Existeixen samples (exemples) per
a cada versi de la plataforma, aix que escolliu els que corresponen.
1 PATH=${PATH}:/home/usuari/androidsdk/tools:/home/usuari/android
sdk/platformtools
Programaci multimdia i dispositius mbils 29 Introducci a la programaci de dispositius mbils
Existeixen tota una srie de conceptes que s interessant veure abans de comenar
directament amb la programaci del dispositiu i lexplicaci de les diferents
classes que constitueixen lAPI dAndroid.
Primer de tot, si heu fet ja una aplicaci bsica (tipus Hola mon), podeu veure
linterior del projecte Android que sha creat i examinar cadascuna de les seves
parts. Obriu el projecte 01 HolaAndroid dels recursos de la unitat. Quan obriu
el projecte amb lEclipse veureu al Package Explorer una srie de fitxers i carpetes
com els que es mostren a la figura 2.1.
Programaci multimdia i dispositius mbils 30 Introducci a la programaci de dispositius mbils
La carpeta /src cont els fitxers .java amb el codi del projecte. En aquest cas,
HolaAndroidActivity.java. Aquest fitxer cont el codi de lactivitat. Escriureu el
codi de la vostra aplicaci en aquest fitxer.
La carpeta /gen cont el fitxer R.java, un fitxer generat pel compilador que serveix
de referncia a tots els recursos del vostre projecte. Aquest fitxer no sha de
modificar a m. A mida que es van afegint fitxers a les carpetes de recursos (dins
de la carpeta /res), els noms dels fitxers es van afegint automticament dins del
fitxer R.java.
La biblioteca de funcions (en el cas de la figura 2.1, la versi Android 2.1) cont
un fitxer, android.jar, que disposa de totes les biblioteques de classes necessries
per a una aplicaci Android.
El directori /res cont tots els recursos que es fan servir a laplicaci. Dins hi
ha altres subdirectoris (diferents carpetes drawable per a diferents resolucions,
layout, values). Les carpetes drawable, en aquest moment noms contenen les
icones de laplicaci en diferents resolucions. La carpeta layout cont el fitxer
main.xml. Si lobriu amb leditor de text pla obtindreu un codi com el segent:
Tot i que podeu ficar els camps de text com cadenes de carcters constants, s
recomanable que deseu totes les constants de text (els textos que apareixeran al
vostre programa) dins del fitxer string.xml i que feu referncia a aquests textos a
partir de lidentificador @string. Daquesta manera, si heu de traduir la vostra
aplicaci a un altre idioma, tot el que necessitareu s traduir els textos del fitxer
strings.xml amb lidioma desitjat i tornar a compilar el projecte.
El directori /assets cont altres recursos que es fan servir a laplicaci, com ara
fitxers de text, bases de dades, etc.
Els blocs principals per construir les vostres aplicacions sn els components que
fareu servir per programar les aplicacions Android. Sn elements conceptuals que
ficareu junts per construir una aplicaci en conjunt:
Activitats.
Serveis.
Provedors de continguts.
Receptors broadcast.
2.2.1 Activitats
Una Activity (activitat) representa una nica pantalla amb una interfcie dusu-
ari. Per exemple, una aplicaci de missatgeria pot tenir una Activity que mostri
la llista de contactes, una altra per enviar missatges i una altra per llegir missatges
rebuts. Tot i que totes aquestes activitats treballen juntes dins de laplicaci de
missatgeria, cadascuna s independent de les altres. A ms a ms, en Android, les
Programaci multimdia i dispositius mbils 32 Introducci a la programaci de dispositius mbils
2.2.2 Serveis
Els serveis dAndroid no sn el mateix que els serveis de Linux (tamb anomenats
daemons), que representen un component del sistema operatiu de ms baix nivell.
Els serveis tenen un cicle de vida molt ms senzill que les activitats, com es pot
veure a la figura 2.2.
Els content providers tamb sn tils per llegir i escriure dades que sn privades
a la vostra aplicaci i no estan compartides. Per exemple, una aplicaci de bloc
de notes pot fer servir un content provider per guardar notes.
Els receptors broadcast no tenen una representaci visual, per quan es llancen
executen una part de codi (com engegar una activitat o servei) i poden crear una
notificaci a la barra destat per alertar lusuari quan ha ocorregut un esdeveniment
broadcast.
Per als receptors broadcast, un intent simplement defineix lanunci que sest
transmetent; per exemple, un missatge a tot el dispositiu per indicar que la bateria
del dispositiu est baixa inclouria nicament un String indicant aquest anunci.
Els provedors de continguts no sactiven per intents, sin amb peticions dun
ContentResolver (resolutor de continguts). El resolutor de continguts tracta
totes les transaccions directes amb el provedor de continguts, per tal que el
component que el fa servir no ho hagi de fer ell directament. Aix proporciona
una capa dabstracci entre el provedor de contingut i el component que sollicita
la informaci (per seguretat).
Identifica els permisos que necessita laplicaci (com ara, permisos per
accedir a Internet).
Programaci multimdia i dispositius mbils 36 Introducci a la programaci de dispositius mbils
La cmera.
La resoluci de la pantalla mnima per poder funcionar.
Els dispositius dentrada necessaris per executar laplicaci (com el
pad de quatre direccions).
Bluetooth.
Pantalla multitctil.
Altres.
Declara les llibreries daplicaci, a banda de les API dAndroid, que
shan denllaar (link) a laplicaci, per exemple com la llibreria de
Google Maps.
Altres.
fer), algunes vegades s ms fcil i rpid editar el fitxer text XML directament.
Per exemple, el fitxer XML del projecte dHolaMon s el segent:
Es pot fer servir un Intent per activar activitats, serveis i receptors broadcast. Per
fer-ho es pot especificar a lIntent el nom del component que es vol activar (fent
servir el nom de la classe de lactivitat que voleu activar, per exemple). Per
existeix una altra forma dactivar activitats a travs del que es coneix com a intent
actions (intents dacci). Un intent dacci consisteix a descriure el tipus dacci
que es vol realitzar (i, opcionalment, les dades sobre les quals es vol realitzar)
i permetre al sistema trobar un component en el dispositiu que pugui realitzar
aquesta acci i activar-lo. Per exemple, el pot llanar un Intent demanant que es
vol visitar una pgina web o fer una foto, i deixar queel sistema trobi lactivitat
(de laplicaci que sigui) que pot realitzar aquesta acci. En el cas que hi hagi
mltiples components que poden realitzar lacci, es demana a lusuari quina
delles vol fer servir.
Com pot saber el sistema quins components sn apropiats per fer la tasca que es
demana des de lIntent? Els components poden definir uns filtres dintents (intent
filters) al fitxer de manifest que seran comparats pel sistema amb lacci que sha
demanat fer. Podeu, opcionalment, definir aquests filtres dintents al manifest per
tal que el vostre component pugui respondre a intents daltres aplicacions. Per
fer-ho, heu dafegir un element<intent-filter>com un fill de lelement de la
declaraci de component al fitxer XML.
Podeu trobar ms informaci sobre els filtres dintents a la pgina del desenvolu-
pador dAndroid: developer.android.com/guide/topics/intents/intents-filters.html.
2.3 Activitats
Una aplicaci consisteix en mltiples activitats que estan relacionades entre si.
En general, existeix una activitat considerada com lactivitat principal (o main)
Programaci multimdia i dispositius mbils 39 Introducci a la programaci de dispositius mbils
Quan una activitat satura perqu una altra comena, lactivitat queda notificada a
travs dels mtodes de callback. Sn mtodes de lactivitat que sn cridats quan
aquesta canvia destat (tant si es crea, satura, es destrueix, etc.) i que li permeten
realitzar tasques apropiades al canvi destat. Per exemple, quan lactivitat satura
aquesta hauria dalliberar els recursos reservats i tancar les comunicacions de
xarxa. Quan una activitat es llana, podria activar aquestes mateixes connexions
de xarxa.
Callback
Una funci de callback (retrotrucada o devoluci de trucada) s una referncia a una porci
de codi executable (funci A) que es passa com a argument en la crida a un altre codi
(funci B). Daquesta manera, el codi (la funci B) pot cridar la funci que se li passa
com a argument (funci A) quan ho necessiti. Per exemple, voleu cridar una funci que
realitza una cerca a una llista (B), i quan troba un element en concret voleu que cridi una
funci vostra per mostrar-ho per pantalla (A). En aquest cas, es passaria una referncia
a A a la crida de la funci B. Quan B trobi lelement, far una crida a A.
Per crear una activitat heu de crear una classe derivada de la classe Activity(o
una classe derivada della). En la classe que heu creat heu dimplementar els
mtodes de callback que cridar el sistema en les transicions dels diferents estats
del cicle de vida de lactivitat (quan es crea, es destrueix, etc.). Els dos mtodes
ms importants sn:
A Android disposeu duna srie de vistes ja fetes que podeu fer servir per dissenyar
la vostra Activity. Els widgets sn vistes que proporcionen elements visuals i
interactius en pantalla com un bot, un camp de text, un checkbox o una imatge.
Els layouts (distribucions) tamb sn vistes que deriven de la classe ViewGroup.
Contenen altres vistes i proporcionen un tipus de distribuci particular per a elles.
Per exemple, un layout linear pot contenir altres botons (vistes) que es mostraran
en forma de vista en la pantalla. Podeu crear subclasses derivades de View i
ViewGroup (o les seves subclasses) per crear els vostres widgets i layouts i aplicar-
los a les vostres activitats.
Els layouts de les diferents activitats de laplicaci estan definits a una srie de
fitxers XML que es troben a la carpeta /res/layout del projecte. Existeix un fitxer
XML per cada layout, sent el fitxer main.xml el que es crea per defecte per a
la primera activitat de laplicaci. Podeu carregar els layouts com la interfcie
grfica de la vostra Activity amb una crida a la funci setContentView (int
layoutResID) que t un nic argument, lidentificador del layout que es vol
carregar.
Per crear una activitat primer heu de crear una classe de Java que hereta de la
El codi daquest projecte,
el podeu trobar als classe base Activity. Per seguir lexplicaci, creeu un nou projecte.
Annexos de la unitat
amb el nom U1 Cicle de
vida.zip. Fixeu-vos en la definici de la classe que trobeu quan creeu un nou projecte:
1 public class ActivitatPrincipal extends Activity {
2 /** Called when the activity is first created. */
3 @Override
4 public void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.main);
7 }
8 }
Un handler (controlador) s
Per defecte, lactivitat que es crea al nou projecte cont levent onCreate(). Dins un mtode o funci que
sexecuta per tractar un
daquest mtode (s un handler de levent) est el codi que serveix per mostrar els esdeveniment ocorregut al
elements de la UI (user interface, interfcie dusuari) en pantalla. El cicle de vida sistema.
duna activitat i les diferents fases per les quals passa sn les segents:
Estat inicial
Estat en execuci
Estat pausat
Estat destruda
Estat inicial
Quan una activitat est engegant passa a travs de tota una srie de crides a mtodes
de callback on podeu ficar codi. Finalment, passar a lestat dexecuci. Aquest
procs de creaci de lactivitat (la transici entre lestat inicial i lestat en execuci)
s una de les operacions ms costoses en temps de computaci i, per tant, afecta
la vida de la bateria del dispositiu. Aquest s el motiu pel qual les activitats no es
destrueixen automticament quan es deixen de mostrar, ja que lusuari pot voler
tornar-hi aviat.
Estat en execuci
Estat pausat
Quan una activitat no t el focus (no est interaccionant amb lusuari) per encara
est visible en pantalla, diem que est en estat de pausa. No s una situaci
que passi molt sovint, ja que la pantalla del dispositiu sol ser petita i lactivitat
generalment o fa servir tota la pantalla o no la fa servir en absolut. Per a vegades
Programaci multimdia i dispositius mbils 42 Introducci a la programaci de dispositius mbils
Una activitat est en estat aturada quan no s visible per encara est en memria.
Una activitat aturada es pot tornar a mostrar (i, per tant, tornar a ser una activitat
en execuci) o es pot destruir definitivament i es treu de memria. El sistema es
guarda les activitats en estat aturat, ja que s probable que lusuari vulgui tornar
a executar aquestes activitats aviat, i reiniciar una activitat aturada s ms rpid
que engegar una activitat des de zero. Aix s aix perqu els objectes ja estan
carregats en memria i s ms fcil portar-los al capdavant de la pantalla. Les
activitats aturades es poden treure de memria en qualsevol moment (ja que el
sistema pot necessitar la memria que estan ocupant).
Estat destruda
Imatge reproduda a partir del treball creat i compartit pel projecte Android Open Source Project i feta servir a partir dels termes
descrits a la llicncia Creative Commons 2.5.
En execuci i aturada
El fet que una activitat estigui en
Qu fa lactivitat en cada estat? Per veure i entendre les diferents fases del cicle execuci no vol dir
necessriament que estigui fent
de vida duna activitat, el millor s crear un projecte i interactuar-hi, i veure quan moltes coses. Podria estar
senzillament esperant interacci
ocorren els diferents projectes. per part de lusuari. Igualment,
una activitat en estat aturat no
vol dir que necessriament no
Una vegada creat el projecte nou, el fitxer ActivitatPrincipal.java quedar com estigui fent res. Els noms dels
estats fan referncia a com
segueix: dactiva est lactivitat respecte a
lentrada de lusuari. En altres
paraules, si lactivitat est
1 package com.ioc.android; visible, si t el focus o si no s
visible en absolut.
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.util.Log;
6
7 publicclass ActivitatPrincipal extends Activity {
8
9 String tag = "Events";
10
11 /** Called when the activity is first created. */
Programaci multimdia i dispositius mbils 44 Introducci a la programaci de dispositius mbils
12 @Override
13 publicvoid onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.//main//);
16
17 Log.d(tag, "A levent onCreate()");
18 }
19
20 publicvoid onStart()
21 {
22 super.onStart();
23 Log.d(tag, "A levent onStart()");
24 }
25
26 publicvoid onRestart()
27 {
28 super.onRestart();
29 Log.d(tag, "A levent onRestart()");
30 }
31
32 publicvoid onResume()
33 {
34 super.onResume();
35 Log.d(tag, "A levent onResume()");
36 }
37
38 publicvoid onPause()
39 {
40 super.onPause();
41 Log.d(tag, "A levent onPause()");
42 }
43
44 publicvoid onStop()
45 {
46 super.onStop();
47 Log.d(tag, "A levent onStop()");
48 }
49
50 publicvoid onDestroy()
51 {
52 super.onDestroy();
53 Log.d(tag, "A levent onDestroy()");
54 }
55
56 }
Abans dexecutar el projecte feu clic amb el bot dret del ratol al projecte a la
finestra del Package Explorer, i escolliu lopci Run As/Run Configurations. Des
daqu, aneu a la pestanya Target i escolliu lopci Always prompt to pick device
(sempre demaneu escollir dispositiu). Aix far que la propera vegada que execu-
teu el programa us demani on sexecutar entre les diferents opcions possibles del
sistema (mquines virtuals o dispositius fsics connectats a lordinador). Feu clic
a Run per executar el projecte. Veureu una pantalla com la de la figura 2.5. En
aquest cas en concret, ens demana si el volem executar entre un Nexus 7 connectat
a lordinador o si volem llanar una mquina virtual.
Programaci multimdia i dispositius mbils 45 Introducci a la programaci de dispositius mbils
Una vegada fet aix, podeu executar el projecte per depurar amb bot dret al
projecte al Package Explorer i lopci Debug As/Android Application. Seguiu
aquests events amb el grfic de la figura 2.4 (figura de lesquema del cicle de vida).
Podeu veure tamb els esdeveniments de log a la finestra LogCat de lEclipse, tal
com podeu observar a la figura 2.6.
Podeu provar dafegir filtres fent clic al bot + i donant certs criteris per veure
nicament els events que us interessen.
Aix que les inicialitzacions de la vostra aplicaci les podeu fer a levent
onCreate. Quan premeu el bot de tornar enrere al simulador, els events que
es mostren al log sn aquests:
1 D/Events ( 227): A levent onPause()
2 D/Events ( 227): A levent onStop()
3 D/Events ( 202): A levent onDestroy()
I si torneu a laplicaci (des del men, o prement durant una estona el bot Home
i seleccionant laplicaci):
Programaci multimdia i dispositius mbils 46 Introducci a la programaci de dispositius mbils
Aix que les inicialitzacions de la vostra aplicaci les podeu fer a levent
onCreate(), ja que onStart() i onResume() sexecuten tamb quan torneu a
laplicaci.
Levent onPause()s cridat als dos escenaris, quan lactivitat senvia al fons
(background) i quan s eliminada amb el bot Back. Quan lactivitat es torna
a engegar sempre es cridaonStart() i onResume(), independentment de si ha
tornat dels fons (background) o si sha creat de nou.
2.4 Intents
Els Intents sn missatges enviats entre altres blocs importants de les aplicacions
dAndroid. Les activitats, serveis i broadcast receivers (receptors broadcast) sn
activats a travs daquests missatges, anomenats intents. Els intents li diuen a
una activitat que sengegui, a un servei que comenci o saturi, o sn simplement
missatges broadcast (dirigits a totes les aplicacions del dispositiu). En definitiva,
serveixen per comunicar components de la mateixa aplicaci o de diferents.
En cada cas, el sistema Android troba lactivitat, servei o receptor broadcast que
respondr a lIntent, instanciant-lo si cal.
Acci
Dades
Categoria
Extres
Flags
El nom del component que hauria de tractar lintent. Aquest camp s un objecte
ComponentName. El nom del component s opcional. Si sespecifica, lintents
enviat a una instncia de la classe especificada. Si no sespecifica, el sistema
trobar un component per tractar lintent (en base a una altra informaci espe-
cificada a lobjecteIntent). El component sespecifica amb setComponent(),
setClass() o setClassName().
Acci
Dades
MIME Les dades contenen la informaci de les dades sobre les quals sha de realitzar
MIME (Multipurpose Internet
Mail Extensions, extensions de
lacci (especificant lURI) i el tipus MIME daquestes dades.
correu dInternet multipropsit)
s un estndard dInternet que es
va dissenyar originalment per
Depenent del tipus dacci, lURI especificar unes dades diferents. Per exemple,
especificar el tipus de les dades
adjuntes a un correu electrnic,
quan lacci s ACTION_CALL el camp de dades ser de tipus tel: i un URI
per que actualment serveix per amb el nmero de telfon que sha de trucar. O si lacci s ACTION_VIEW,
especificar tipus de dades en
general. el camp de dades pot ser del tipus http: i ladrea de la pgina web que es vol
visitar.
Moltes vegades, el tipus de dades es pot deduir de lURI. Per exemple, mirant si s
una URL duna web o una imatge del dispositiu. Per es pot definir especficament
el tipus de les dades a lobjecte Intent.
El mtode setData (Uri data) serveix per especificar lURI de les dades i
el mtode setType (String type) serveix per especificar el tipus MIME de
les dades. Tamb podeu fer servir el mtode setDataAndType (Uri data,
String type) per especificar ambds. Per llegir lURI i el tipus MIME, podeu
fer servir getData() i getType(), respectivament.
Categoria
s una cadena que cont informaci addicional sobre el tipus de component que
hauria de tractar lintent. La classe Intent defineix algunes categories, entre les
quals es troben les de la taula 2.2.
Programaci multimdia i dispositius mbils 49 Introducci a la programaci de dispositius mbils
Constant Significat
Extres
Els extres sn parells clau-valor que donen informaci addicional que sha denviar
al component perqu tracti lintent. Aix, diferents URI tenen associats alguns
extres en particular. Per exemple, lacci ACTION_HEADSET_PLUG que correspon
a una canvi en lestat de la connexi dels auriculars del dispositiu, t un camp
extra indicant si els auriculars shan endollat o no. Un altre exemple, lacci
ACTION_TIMEZONE_CHANGED, que correspon al fet que sha canviat ls horari,
t un extra time-zone per especificar ls horari que sha definit.
La classeIntent t una srie de mtodes que es fan servir per afegir extres, els
podeu consultar a lajuda del desenvolupador. Tamb es pot fer servir un objecte
del tipus Bundle per afegir extres. Un objecte de la classe Bundle (literalment
de langls, paquet o feix) permet emmagatzemar una srie de dades (que
poden ser de diferent tipus). Les variables es poden afegir al Bundle simplement
donant un nom i la variable que es vol guardar. En certa manera, recorda els
arrays amb qu es passen variables entre els formularis en PHP: un array de
tuples [nom, valor]. Podeu fer servir els mtodes putExtras(Bundle extras)
i getExtras() per afegir i obtenir extres de lintent.
Flags (banderes)
Les aplicacions fan servir els objectes Intent per enviar broadcasts i activar
components del sistema. Per exemple, a la taula 2.3 teniu uns exemples dintents
que criden a serveis estndard del sistema i el seu significat.
Programaci multimdia i dispositius mbils 50 Introducci a la programaci de dispositius mbils
Els intents explcits senvien pel sistema a una instncia de la classe definida,
nicament es fa servir el nom del component (definit al ComponentName de
lobjecte Intent) per determinar quin s el component al qual va dirigit lintent.
Els intent filters serveixen per dir al sistema les capacitats del component.
El sistema sabr a quin tipus dintent pot respondre el component comparant
les caracterstiques de lintent amb el filtre dintent.
Programaci multimdia i dispositius mbils 51 Introducci a la programaci de dispositius mbils
Per exemple, podeu crear una activitat que serveixi per veure pgines web. Podeu
anunciar al sistema que la vostra activitat est oberta a rebre intents per veure
pgines web. La propera vegada que es faci un intentper veure una web des del
vostre dispositiu, la vostra activitat ser una de les candidates per obrir la web (en
el cas que hi hagi diversos components per atendre l Intent, el sistema demanar
a lusuari quin vol fer servir).
Els filtres permeten que els components puguin rebre intents implcits. Si un
component no t intent filters, nicament pot rebre intents explcits (amb el seu
nom). Un component que defineix filtres dintents pot rebre intents implcits i
explcits.
Per saber si un objecte Intent s acceptat per un filtre dintents es comparen les
segents caracterstiques de lobjecte Intent:
Acci
Categoria
Els extres i els flags no es fan servir per determinar quin component rep l Intent.
Un component t un filtre diferent per cada treball que pot fer. Per exemple, una
aplicaci multimdia pot tenir diferents tipus de filtres per anunciar que pot obrir
diferents tipus de fitxers (fotos, udio, vdeo, etc.).
Un filtre t camps similars als de lobjecte Intent: acci, dades i categoria. Els
intents implcits es comparen amb els camps del filtre. Perqu lintent sigui enviat
al component, la comparaci amb els tres camps del filtre ha de ser vlida. Es
realitza un test amb cada camp per separat:
Programaci multimdia i dispositius mbils 52 Introducci a la programaci de dispositius mbils
Acci
Categoria
Dades
Acci
1 <intentfilter>
2 <action android:name="android.settings.SOUND_SETTINGS"/>
3 <action android:name="android.settings.WIFI_SETTINGS"/>
4 <action android:name="android.intent.action.CALL"/>
5 </intentfilter>
Encara que els objectes Intent nicament defineixen una nica acci, els filtres
poden definir-ne ms duna. La llista no pot estar buida, ha de tenir almenys un
element <action>, o bloquejar tots els intents. Perqu lobjecte Intent passi
el test del filtre dacci ha de coincidir una de les accions definides al filtre. Si
lobjecte Intent no especifica una acci, passa el test dacci automticament i
es comprovaran la resta de camps.
Categoria
1 <intentfilter>
2 <categoryandroid:name="android.intent.category.DEFAULT"/>
3 <categoryandroid:name="android.intent.category.BROWSABLE"/>
4 </intentfilter>
Fixeu-vos que es fan servir les cadenes completes per definir les accions i les
categories (a diferncia del que hem vist per a la creaci de lobjecte Intent).
Aix, quan a lobjecte Intent definiu la categoria CATEGORY_BROWSABLE, al filtre
dintent sha de definir android.intent.category.BROWSABLE.
Existeix una petita caracterstica que cal aclarir. Tots els intents implcits
que senvien a startActivity() es tracten pel sistema com si tinguessin la
categoria CATEGORY_DEFAULT definida. Per tant, les activitats que volen rebre
intentsimplcits han dincloure android.intent.category.DEFAULT en el seu
filtre dintents.
Dades
1 <intentfilter>
2 <data android:mimeType="image/*"/>
3 <data android:scheme="http"android:type="video/*"/>
4 </intentfilter>
Cada element <data> pot especificar un URI i un tipus de dades (MIME). Latribut
type de lelement <data> especifica un tipus MIME de les dades.
Com que la majoria de les dades es proporcionen amb provedors de continguts, els
filtres que especifiquen tipus de dades no especifiquen URI. Tant lobjecte Intent,
com el filtre poden usar un comod * per especificar un subtipus. Per exemple,
text/* o audio/* indica que per a qualsevol subtipus es compleix.
Per exemple, el primer element <data> diu al sistema que el component pot
obtenir una imatge i mostrar-la.
Les activitats serveixen per interactuar amb lusuari i mostren la interfcie dusuari
(o UI, User Interface) de la vostra aplicaci, que pot tenir elements grfics
(widgets, en angls) com botons, caixes de text, etiquetes, etc. LaUI est definida
al fitxer main.xml, a la carpeta res/layout del vostre projecte. Si lobriu des
del Package Explorer de lEclipse, veureu dues pestanyes: Graphical Layout i
main.xml, que mostren el contingut del fitxer XML i la interpretaci grfica del
mateix, com es pot veure a la figura 2.7.
Programaci multimdia i dispositius mbils 54 Introducci a la programaci de dispositius mbils
Crear la UI En temps de compilaci, cada element del fitxer XML s compilat en una classe
En general, el ms senzill s
crear la UI mitjanant un fitxer
dUI dAndroid equivalent amb els seus mtodes i atributs.
XML, encara que s possible
crear la UI mitjanant
programaci. En alguns casos,
La UI a Android es construeix fent servir objectesView (vistes) i ViewGroups
com els videojocs, aquesta
darrera opci s preferible.
(grups de vistes). Existeixen moltes Views i ViewGroups, tots derivats de la classe
View.
LinearLayout
AbsoluteLayout
TableLayout
RelativeLayout
FrameLayout
ScrollView
El ms habitual s combinar els diferents tipus de layouts per crear la UI que volem
(tal com es mostra a la figura 2.8, combinant uns dins duns altres).
2.5.1 Layout
Si voleu veure les diferents caracterstiques dels diferents layouts, les podeu trobar
a developer.android.com/guide/topics/ui/layout-objects.html.
Per mostrar els diferents tipus de layouts que existeixen es poden crear UI
mitjanant ledici dun fitxer XML o mitjanant leditor grfic que proporciona
lEclipse. Per obrir-lo, obriu el fitxer main.xml que es troba a la carpeta res/layout
del projecte al Package Explorer.
Paleta: aqu teniu els diferents Views i ViewGroups que podeu fer servir
a la vostra GUI. Per afegir qualsevol daquests Views, els podeu arrossegar
amb el ratol a la representaci grfica del GUI o a la jerarquia de Views. De
vegades s ms senzill introduir els Views a travs de la jerarquia. Feu clic
a les diferents carpetes (Form Widgets, Text Fields, Layouts...) per donar
una ullada als diferents elements grfics amb els quals podeu treballar.
Eclipse t ajuda contextual Els Views i ViewGroups tenen una srie datributs comuns que es poden veure a
sobre el cursor del ratol. Si
deixeu el cursor sobre els la taula 2.4.
diferents botons de leditor,
us sortir una petita etiqueta
explicant qu fa aquest
Taula 2.4. Atributs comuns de View i ViewGroup
bot.
Atribut Descripci.
Podeu tenir els layouts niuats els uns dins dels altres per crear disposicions ms
complexes, tal com es pot veure a la figura 2.12.
De cada View podeu modificar les seves propietats fent clic dret i seleccionant
la propietat que voleu modificar. Per exemple, podeu modificar el valor delID
que identifica el View, o la seva amplada i alada. En la figura 2.13 podeu veure
tres botons amb caracterstiques damplada diferents. El primer t lamplada que
ve per defecte, al segon sha escollit el valor Fill Parent (omplir pare) a la
propietat Layout Width(amplada del layout),i el tercer ha agafat per a aquesta
mateixa propietat el valor de 100 dp (100 punts de pantalla).
Programaci multimdia i dispositius mbils 61 Introducci a la programaci de dispositius mbils
Finalment, el resultat del layout que creeu mitjanant les eines grfiques generaran
un fitxer XML amb el qual el sistema Android sabr com crear en temps dexecuci
la interfcie grfica. Per exemple, el layout de la figura 2.13 correspon al segent
fitxer XML:
1 <?xml version=//"1.0"//encoding=//"utf8"//?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:id="@+id/LinearLayout1"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 android:orientation="vertical">
7
8 <Button
9 android:id="@+id/button1"
10 android:layout_width="wrap_content"
11 android:layout_height="wrap_content"
12 android:text="Button"/>
13
14 <Button
15 android:id="@+id/button2"
16 android:layout_width="fill_parent"
17 android:layout_height="wrap_content"
18 android:text="Button"/>
19
20 <Button
21 android:id="@+id/button3"
22 android:layout_width="100dp"
23 android:layout_height="wrap_content"
24 android:text="Button"/>
25
26 </LinearLayout>
Al comenament s normal que feu servir leditor grfic per crear els vostres
layouts, per quan aneu agafant experincia veureu que editar directament el fitxer
XML fa molt ms rpida ledici del layout.
Unitats de mesura
Pt (point, punt). Un punt est especificat com 1/72 duna polsada, basat en
la mida fsica de la pantalla.
Podeu fer qualsevol dels dos mtodes (generalment fareu servir el primer) i, fins i
tot, els dos. Podeu dissenyar la UI de laplicaci i desprs, en temps dexecuci,
modificar lestat dels elements que estan en pantalla.
En general, el vocabulari XML per declarar UI t una estructura similar als noms
corresponents a les classes i mtodes que representen. Aix, s fcil saber els
elements de lXML a quines classes i atributs corresponen (encara que no sempre
sn idntiques).
Es poden crear layouts dUI i els elements que contenen rpidament, fent servir
un fitxer XML de la mateixa manera que es creen pgines web amb HTML, amb
una srie delement niuats. Cada fitxer layout ha de tenir un element arrel, que ha
de ser un objecte View o ViewGroup. Una vegada definit lelement arrel, podeu
afegir widgets o objectes de layout com a elements fills de larrel per crear a poc
a poc la jerarquia de Views que definir el vostre layout. Per exemple, aquest s
el fitxer XML dun layout que usa un LinearLayout i t dins un TextView i un
Button:
Programaci multimdia i dispositius mbils 63 Introducci a la programaci de dispositius mbils
Els fitxers XML de layout sn compilats a la vostra aplicaci dins dun recurs
View. Heu de carregar el recurs del layout en la vostra aplicaci des del
codi. Aix ho feu en el mtode de callback onCreate()de la vostra activitat,
que es crida quan laplicaci sest inicialitzant. Per fer-ho, crideu el mtode
setContentView (int layoutResID), que t com a argument un identificador
de recurs de layout. Aquest ID, el podeu trobar a la classe que cont els
recursos android.R. Concretament, els identificadors de layouts es troben dins de
R.layout.nom_del_fitxer_layout . Aix, si el nostre layout est contingut al
fitxer principal.xml, trobareu lidentificador a R.layout.principal. La forma
de carregar aquest recurs seria la segent:
Atributs
Els objectes de les classes View i ViewGroup tenen els seus propis atributs. Alguns
dells sn comuns a tots els Views (com lid) i altres, especfics de cada tipus de
View; per exemple els TextView tenen latribut textSize, que no est present en
tots els Views.
Tots els objectes View tenen un nmero ID amb el qual estan associats, i que
identifica el View de forma unvoca. Aquest ID est present en forma de string
al fitxer XML, encara que en compilar laplicaci s referenciat mitjanant un
Integer. Aquest atribut s present a tots els objectes View i derivats dell. La
sintaxi per definir lID al fitxer XML s la segent:
1 android:id="@+id/el_meu_boto"
Programaci multimdia i dispositius mbils 64 Introducci a la programaci de dispositius mbils
El smbol + diu al compilador que s un nou recurs i que sha de crear i afegir als
recursos del projecte (que es troben al fitxer R.java). Quan es referencia un ID de
recurs dAndroid, sha de fer aix:
1 android:id="@android:id/empty"
1 <Button android:id="@+id/botoAcceptar"
2 android:layout_width="wrap_content"
3 android:layout_height="wrap_content"
4 android:text="@string/acceptar"/>
Creeu una instncia de lobjecte View (o classe derivada dell) que correspon i
referencieu-lo al del layout (generalment, a la funci de callback onCreate()):
A partir daquest moment ja podeu comenar a treballar amb el bot des del codi.
Una vegada afegits els widgets, heu de programar perqu el programa interaccioni
amb lusuari. Heu de capturar els events de lobjecte View amb qu lusuari est
interactuant i desprs fer quelcom quan aix succeeixi (executar una part de codi).
La classe View (de la qual hereten elswidgets) t una srie de mtodes decallback
que serveixen per tractar els events de la interfcie grfica. Aquests mtodes
sn cridats pel sistema Android quan lacci respectiva succeeix en aquest
objecte. Per exemple, quan es toca un bot, el sistema crida el mtode de
callback onTouchEvent().
Un event listener s una interfcie de la classe View que cont un nic mtode
de callback. Aquests mtodes seran cridats pel sistema Android quan el View
(al qual est registrat levent listener) sactiva per la interacci de lusuari.
Per exemple, podeu definir un event listener amb un mtode de callback i registrar-
lo a un View de tipus bot. Quan lusuari premi el bot, el sistema cridar el
mtode de callback definit i podreu executar el codi que vulgueu.
Per aix heu de definir un event listener i registrar-lo al View. Un event listener
s un mtode que es cridar pel sistema quan es produeixi un esdeveniment en
concret, per exemple quan es premi un bot.
Per registrar un event listener, en primer lloc heu dobtenir una referncia al View
sobre el que voleu definir la funci de callback. Per obtenir la referncia podeu fer
servir el mtode findViewById(int id) de lobjecte de lActivity. Largument
del mtode (lidentificador) s el que est definit al fitxer AndroidManifest.xml i
el podeu obtenir a partir de lobjecte R.id.
Per exemple, per obtenir una referncia a un bot anomenat buttonSi fareu el
segent:
1 Button btnSi;
2
3 //Listener delbotoSi
4 btnSi = (Button) findViewById(R.id.buttonSi);
1 btnSi.setOnClickListener(
2
3 new OnClickListener()
4 {
5 @Override
6 publicvoid onClick(View v)
7 {
8 //Codi que sexecutar quan es faci clic
9 Toast.makeText(c, "Boton si", Toast.LENGTH_LONG).show();
10 }
11 }
12 );
premi aquest bot. En aquest cas, el codi correspon a mostrar un missatge per
pantalla amb Toast.
Aix shauria de fer per cada View que existeixi al layout i amb qu es vulgui
interactuar.