Academia de Studii Economice din BucuretiFacultatea de
Cibernetic, Statistic i Informatic Economic
LUCRARE DE LICEN
APLICAIE ANDROID PENTRU ANALIZA DATELOR PRELUATE DE PE PLATFORMA
DE SOCIALIZARE FACEBOOK
BUCURETI 2014CuprinsIntroducereContextObiectivul i necesitatea
lucrriiStructura lucrriiTehnologii folositePlatforma
AndroidCaracteristici AndroidArhitectura pe niveluri a sistemului
AndroidElemente componenteAndroid SDKFacebook SDK pentru AndroidADT
(Android Development Tool)Dezvoltarea aplicaieiStructura
aplicaieiPersisiena datelorFiiere de resurseCrearea aplicaiei pe
platforma FacebookConcluziiLista tabelelorLista
figurilorANEXEBibliografie
Introducere
Context
n ultimele decenii, odat cu dezvoltarea tot mai rapid a
tehnologiei, piaa a nceput s se concentreze tot mai mult n jurul
conceptului de smartphone (telefon mobil multimedia multifuncional,
conectat la o reea GSM sau UMTS). Este o tendin normal, avnd n
vedere faptul c traficul de date a devenit tot mai rapid i mai
accesibil ca costuri, smartphone-urile oferind aproape toate
funcionalitile cu care este obinuit un utilizator de computer
(agend, calendar, navigare GPS, e-mail, browser, editor de text,
minicalculator, aparat foto-video i chiar soft-uri de specialitate
precum Adobe Photoshop). Treptat, mijloacele clasice de comunicare
ntre dispozitivele mobile sunt tot mai puin utilizate, locul lor
fiind luat de aplicaii ce comunic prin Internet. De exemplu,
utiliznd Facebook Messanger sau Skype poi vorbi gratuit oriunde n
lume consumnd foarte puin din traficul de date disponibil.Creterea
numrului de smartphone-uri a fost , cu siguran , influenat i de
nevoia oamenilor de a fi conectai n permanen la surse de informaii
i la reelele de socializare pentru a interaciona mai uor ntre ei. n
aceste condiii , reelele de socializare sunt percepute ca un ajutor
n procesul de socializare dintre oameni. Termenul smartphone
descrie un dispozitiv mobil , care pe lng caracteristicile sale de
telefon are i multe alte caracteristici multimedia. Un smartphone
folosete un sistem de operare care suport instalarea i tergerea de
pe dispozitiv a aplicaiilor dezvoltate de programatori. Primul
dispozitiv pentru care s-a folosit acest termen , smartphone , a
fost modelul GS88 Penelope prezentat de compania Ericsson n anul
1997. Dup aceast lansare principalii productori de telefoane mobile
: Nokia , Motorola , Sony Ericsson i Samsung s-au concentat asupra
procucerii de smartphone-uri. Sistemele de operare Symbian i RIM de
la Nokia respectiv BlackBerry dominau piaa la sfritul anului
2007.
Odat cu lansarea de ctre Apple a primei generaii de telefoane
iPhone i dezvoltarea sistemului de operare Android de ctre Google,
piaa smartphone-urilor s-a dezvoltat considerabil iar marea
majoritate a productorilor s-au orientat spre folosirea sistemului
de operare dezvoltat de Google. Dup acest an a avut loc ascensiunea
dispozitivelor mobile ce au adoptat sistemul de operare Android
precum i al celor produse de Apple ce ruleaz iOS. n acest timp,
Nokia cu Symbion i BlackBerry cu RIM au nregistrat scderi constante
ale cotelor de pia. n continuare vom studia sistemul de operare
lider, anume Android.Tabel 1 : Uniti vndute i cote de pia T4 2013
(surs:
http://techcrunch.com/2014/05/06/android-still-growing-market-share-by-winning-first-time-smartphone-users/
)T1 2014 (mii)T4 2013 (mii)T1 2013 (mii)Cota de pia T1 2014Cota de
pia T4 2013Cretere secvenialCretere anual
Android187.027,721188.227,483150.621,744%39%-1%24%
AOSP53.749,52153.919,64013%11%0%
Apple iOS43.719,0051.024,48237.406,810%11%-14%17%
BlackBerry 10550,000765,000981,3000%1%-28%-44%
BlackBerry OS750,0003.516,35.426,50%1%-79%-86%
Windows Phone13.274,03011.418,2186.070,8003%2%16%119%
Sisteme de operare de
baza127.593,495167.338,026229.408,830%35%-24%-44%
Altele545,000428,6371.126,60%0%27%-52%
Total427.208,766476.637,786431.042,5100%100%-10%-1%
Primul smartphone pe care a rulat sistemul de operare Android a
fost HTC Dream, cunoscut i sub numele de T Mobile G1. n februarie
2009, telefonul este lansat pe pia cu versiunea 1.5, alias Cupcake,
dar care are cteva lipsuri. Totui, comparativ cu prima versiune,
1.0, Cupcake face posibil afiarea tastaturii virtuale pe ecran i
personalizarea ecranului de pornire cu widget-uri. ncepnd din 2009
Google a lansat constant noi versiuni ale sistemului de operare
Android, nbuntind de fiecare dat problemele aprute la versiunea
precedent si adaugnd noi funcionaliti. Astfel n tabelul 2 sunt
prezentate versiunile stemului de operare: Tabel 2 : Versiuni
Android (surs :
http://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
VersiuneNume de codData lansarii
4.4KitKatTBA
4.1Jelly Bean9 iulie 2012
4.0Ice Cream Sandwich16 decembrie 2011
3.1Honeycomb10 mai 2011
2.3.3Gingerbread6 decembrie 2010
2.2Froyo20 mai 2010
2.0Eclair26 octombrie 2009
1.6Donut15 septembrie 2009
1.5Cupcake30 aprilie 2009
Sistemul de operare Android beneficiaz, de asemenea, de cel mai
mare magazin virtual de aplicaii, Google Play, care a devansat
recent pe cel de la Apple. Acesta ofer posibilitatea
dezvoltatorilor de a aduaga aplicaia lor contra unei taxe unice. Pe
lng aplicaile publicate n Google Play se mai gsete i coninut video,
cri i muzic.
Obiectivul i necesitatea lucrrii
Obiectivul propus este acela de a dezvolta o aplicaie ce va rula
pe sistemul de operare Android. Pentru a realiza aceast aplicaie
este necesar s studiem structura sistemului de operare precum i
tehnologiile folosite. Funcia principal a aplicaiei prezentate n
cadrul acestei lucrari este aceea de a alctui un top al
preferinelor prietenilor selectai ai unui utilizator al reelei de
socializare Facebook. n urma studierii magazinului virtual Google
Play, am constatat lipsa unei astfel de aplicaii care s prezinte
unui utilizator principalele preferine ale prietenilor. Necestiatea
poate fi justificat prin numrul mare de utilizatori al acestei
reele de socializare, dintre care majoritatea folosesc
smartphone-uri pentru a o accesa i prin dorina acestora de a vedea
preferinele prietenilor. Structura lucrrii
n cadrul acestei lucrri vor fi abordate toate noiunile teoretice
necesare pentru a ndeplini obiectivul propus, acela de a construi o
aplicaie ce va rula pe sistemul de operare Android.Astfel, n
urmtorul capitol va fi prezentat structura sistemului de operare
prezentnd fiecare nivel al acestuia. n cea de-a doua parte vom
prezenta tehnologiile puse la dispoziie de Google ca mediul de
dezvoltare precum i limbajul de programare. Deoarece aplicaia
folosete i reeaua de socializare Facebook, va fi prezentat i SDK ul
oferit de aceasta dezvoltatorilor. Toate aceste tehnologii vor fi
abordate prin intermediul studierii literaturii de specialitate i a
documentaiei oficiale.Al treilea capitol va prezenta structura
aplicaiei, procesul de dezvoltare al acesteia i modalitatea de
implementare a noiunile prezentate n capitolul anterior.Ultimul
capitol al acestei lucrri prezint posibile dezvoltri ulterioare ale
aceste aplicaii precum i concluziile la care am ajuns n urma
dezvoltrii.
Tehnologii folositen acest capitol vom detalia tehnologiile
folosite pentru a dezvolta aplicaia prezentat. Proiectul a fost
realizat folosind tehnologii i tool-uri open-source. Aceast alegere
a fost fcut deoarece prezint urmtoarele avantaje: Au n spate
comuniti mari de utilizatori i dezvoltatori preocupai de
dezvoltarea continu a acestor tehnologii, existnd suport din partea
acestor comuniti cum ar fi tutoriale i acces la diverse resurse cum
ar fi librrii specializate Costul redus de dezvoltare al aplicaiei,
neexistnd taxe de liceniere pentru aceste tehnologii
Aplicaia este destinat dispozitivelor mobile ce ruleaz Android
i, prin urmare, aceasta a fost realizat folosind Android SDK.
Deoarece s-a dorit conectarea la reeaua de socializare Facebook i
folosirea anumitor date ale utilizatorilor, a fost folosit i
Facebook SDK. Ambele SDK-uri sunt disponibile pentru a fi descrcate
n mod gratuit de pe site-urile oficiale.Mediul de programare ales
este ADT (Android Developer Tools). Acesta este o extensie a
mediului de programare Eclipse IDE, avnd integrat Android SDK.Codul
surs a fost scris n limbajul Java.n continuare vor fi detaliate
tehnologiile folosite n realizarea aplicaiei, precum i justificarea
folosirii acestora.
Platforma Android
Caracteristici Android
Android este un sistem de operare din familia Unix, bazat pe
kernel-ul Linux, cu o interfa utilizator bazat pe manipulare
direct, proiectat n primul rnd pentru dispozitive mobile cu ecran
tactil (touchscreen), folosind input-uri de tip atingere.Un aspect
foarte important legat de Android l constituie faptul c are codul
surs publicat de ctre Google sub licene open-source. Acest lucru a
format o comunitate activ de dezvoltatori ce folosesc codul surs al
proiectului AOSP (Android Open Source Project) pentru a dezvolta i
distribui propriile versiuni modificate ale sistemului de operare.
Acestea aduc deseori funcionaliti noi i actualizri pentru
dispozitive mai repede dect productorul oficial sau operatorul de
telefonie mobil, totui, fr a garanta funcionarea la parametri
optimi. De asemenea, comunitatea ofer suport continuu pentru
dispozitivele mai vechi ce nu mai primesc actualizri oficiale i
ajut utilizatorii neexperimentai s porteze Android pe dispozitive
ce oficial ruleaz alte sisteme de operare. Versiunile lansate de
comunitate sunt de cele mai multe ori pre-rooted i conin modificri
inadecvate pentru utilizatorii neiniiai n acest domeniu, cum ar fi
capacitatea de supraturare sau subturare a procesorului.
CyanogenMod este versiunea comunitar cea mai popular i st la baza
majoritii celorlalte.
De-a lungul timpului, productorii de dispozitive i operatorii de
telefonie mobil au descurajat orice tentativ de dezvoltare de
versiuni paralele a sistemului de operare de ctre o ter parte.
Productorii i exprim ngrijorarea cu privire la funcionarea
necorespuztoare a dispozitivelor ce ruleaz astfel de versiuni
neoficiale i costurile de asisten ce rezult din acest motiv. Mai
mult dect att, firmware-urile modificate ofer de multe ori
funcionaliti precum tethering-ul, pentru care operatorii ar percepe
un tarif suplimentar. De aceea, multe dispozitive au acces
restricionat la permisiunile de root (admin) sau bootloader-ul
blocat. Chiar i aa, cum versiunile dezvoltate de comunitate au
devenit tot mai populare iar n S.U.A. a fost dat chiar o lege n
acest sens (devenind legale), productorii au luat poziii din ce n
ce mai puin radicale, ajungnd la ora actual s sprijine dezvoltarea
lor. Ca urmare a acestui fapt, un numr tot mai mare de dispozitive
sunt livrate deblocate, pentru a scpa utilizatorul de ocolirea
tuturor restriciilor hardware n cazul n care acesta opteaz pentru
instalarea unei versiuni neoficiale (totui, n 90% dintre cazuri,
procednd astfel, se pierde garania). Dei productorii au o atitudine
tot mai deschis, muli operatori de telefonie comand nc dispozitive
blocate, pentru a se asigura de fidelitatea clienilor lor.
Arhitectura pe niveluri a sistemului Android
Sistemul de operare Android este structurat, conform figurii 3,
pe mai multe nivele, fiecare nivel depinznd de funcionalitile
oferite de nivelul inferior acestuia.
Figur 1 : Arhitectura sistemului Android(surs :
http://www.cprogramming.com/android/android_getting_started.html)
Nivelul Linux Kernel st la baza arhitecturii Android i asigur
funcionaliti de baz precum gestionarea proceselor, gestionarea
sistemului de fiiere, gestiunea retelistica a dispozitivului i
driverele. Sistemul de operare Android este derivat din Linux
Kernel 2.6 i este de fapt creat de la surs Linux, compilate pentru
dispozitive mobile. Kernel-ul acioneaz ca un strat de abstractizare
hardware ntre hardware i stiva software-ul Android. Librria
standard de C a Android-ului, Bionic, a fost dezvoltat special de
Google, ca o derivare a librriei BSD. Bionic conine o suit major de
funcionaliti noi, specifice kernel-ului Linux, aflndu-se n prezent
ntr-o continu dezvoltare (independent de alte baze de cod surs
Android). Nivelul Libraries cuprinde un set de librrii C/C++ ce
stau la baza funcionrii componentelor sistemului Android. O librrie
prezent n acest nivel este SQLite pe care am folosit-o n cadrul
aplicaiei prezentate pentru a stoca date persistente. SQLite este o
bibliotec public n cadrul creia se gsete implementarea unui motor
de baze de date, de sine stttor, care nu necesit server sau alte
configuraii speciale.Citirea i scrierea datelor se face direct pe
disk, o baz de date complet SQL cu mai multe tabele, view-uri,
indexi i triggeri fiind stocat sub forma unui singur fiier. Aceste
fiiere sunt salvate n memoria dispozitivului n
directorul:DATA/data/NUMELE_APLICAIEI/databases/NUMELE_BAZEI_DE_DATEFormatul
fiierelor stocate este cross-platform, facilitnd portarea bazelor
de date SQLite.Tipurile de date ce pot fi folosite n SQLite sunt
TEXT (echivalentul tipului de date String din Java), INTEGER
(echivalentul tipului de date long din Java) i REAL (echivalentul
tipului de date double din Java) nsa nu se face validarea automat a
tipurilor de date nainte ca acestea s fie introduse n baza de date.
Android SDK conine o serie de clase cu ajutorul crora poate fi
accesat SQLite i se poate efectua operaii asupra bazelor de date.
Aceste clase sunt n pachetul android. Database i android. Database.
Sqlite.Alte librrii prezente la acest nivel al arhitecturii sunt:
Surface Manager: Suport diferite formate i codec-uri audio i video,
inclusiv redarea i nregistrarea lor. System C Libraries: Un subset
al librriei standard C (libc) special adaptat pentru dispozitive
mobile pe care ruleaz Linux OpenGL ES Libraries: Acestea sunt
bibliotecile grafice pentru randare grafica 2D i 3D.Nivelul Android
Runtime include un set de librrii care au disponibile marea parte a
funcionalitilor disponibile pentru limbajul de programare Java. n
cadrul acestui nivel fiierele. Class sunt convertite de sistemul
Android n fiiere. Dex (un tip special de bytecode optimizat pentru
dispozitive mobile fiind necesare puine resurse). Android ruleaz n
maina virtual Dalvik; de la versiunea 4.4, este suportat o nou main
virtual experimental, ART, care nu este ns activat n mod implicit.
Aceasta ruleaz fiierele. Dex, fiindu-i alocat cte o main virtual
fiecrei aplicaii.Nivelul Application Framework ofer dezvoltatorilor
un set foarte mare de API-uri pentru ca acetia s nu fie nevoii s
scrie fiecare aciune ntreprins de sisiemul de operare atunci cnd
dezvolt o aplicaie Android. Aceste servicii i mecanisme stau la
baza funcionrii tuturor aplicaiilor. Dintre acestea amintim:
Activity Manager: gestioneaz ciclul de via al aplicaiilor i poate
avea mai multe stri; o aplicaie poate avea mai multe activiatati
care pot avea ciclul lor de via; exist o activitate principal care
pornete atunci cnd aplicaia este lansat; o activitate se ncheie
atunci cnd este lansat o alt activitate Notification Manager: Acest
manager permite aplicaiilor s creeze alerte personalizate Resource
Managers: Aplicaii au nevoie de resurse externe, cum ar fi imagini,
iruri de caractere, etc Toate aceste resurse sunt gestionate de
ctre managerul de resurse, care le face disponibile ntr-un mod
standardizat. Content Provider: Aplicaii mprtesc, de asemenea date.
Din cnd n cnd, o singur cerere poate avea nevoie de unele date din
alt aplicaie. Acest acces la date la alt aplicaie este activat de
ctre content providerNivelul Applications este ultimul nivel i este
reprezentat de aplicaiile create de ctre dezvoltatori i care pot fi
folosite de utilizatorii finali.O aplicaie const ntr-un fiier. Apk
(android package) i conine, de obicei, 3 componente: Fiierul
executabil Dalvik reprezint codul surs Java compilat pentru a obine
executabilul i care e rulat de maina virtual Dalvik. Resurse orice
nu este cod surs este o resurs. Aplicaia poate s conin imagini,
fiiere audio/video i numeroase fiiere XML care descriu layout-ul,
etc. Librrii native Opional, aplicaia poate conine librrii native,
C/C++, care sunt incluse n fiierul Apk.Aceste aplicai sunt formate
din componente slab cuplate, legturile fiind fcute printr-un fiier
manifest.xml. n cadrul acestui fiier sunt prezente metadate despre
fiecare component i cum interacioneaz cu alt component.
Elemente componente
Pentru a putea trece la detaliile de implementare, trebuie s
explicm mai nti cteva componente specifice platformei:
1. Intents & Intent FiltersUn intent este un obiect de
mesagerie ce poate fi folosit pentru a solicita o aciune din alt
component a aplicaiei. Dei intent-urile faciliteaz comunicarea ntre
componente n diferite moduri, putem separa trei cazuri de utilizare
fundamentale: Declanarea unei activitiO activitate reprezint un
singur ecran al aplicaiei. Putei ncepe o nou instan a unei activiti
pasnd un intent ca parametru funciei startActivity (). Acesta
descrie activitatea ce urmeaz s porneasc i conine toate datele
necesare.Dac dorii s primii un rezultat n momentul n care
activitatea se termin, trebuie s apelai metoda
startActivityForResult (). Activitatea dumneavoastr va primi
rezultatul sub forma unui intent separat, n cadrul callback-ului
onActivityResult (). Declanarea unui serviciuUn serviciu este o
component care efectueaz operaiuni n fundal, fr a avea nevoie de o
interfa utilizator. Putei porni un serviciu pentru a efectua o
operaiune o singur dat (cum ar fi descrcarea unui fiier), pasnd un
intent metodei startService (). Acesta descrie serviciul ce urmeaz
s porneasc i conine toate datele necesare.n cazul n care serviciul
este proiectat cu o interfa client server, v putei lega la serviciu
din alt component a aplicaiei pasnd un intent funciei bindService
(). Transmiterea unui broadcastUn broadcast reprezint un mesaj ce
poate fi primit de orice aplicaie. Sistemul transmite astfel de
mesaje pentru diverse evenimente, cum ar fi atunci cnd sistemul
pornete sau cnd dispozitivul ncepe s se ncarce. Utilizatorul poate
trimite i el mesaje de tip broadcast ctre alte aplicaii pasnd un
intent ctre una din urmtoarele trei metode: sendBroadcast(),
sendOrderedBroadcast(), sendStickyBroadcast().Din punct de vedere
al specificitii, putem de asemenea deosebi dou tipuri de
intent-uri: Explicite specific numele componentei ce trebuie s
porneasc (mai exact numele complet al clasei). Vei folosi de obicei
un intent explicit pentru a porni o activitate sau un serviciu din
cadrul propriei aplicaii, deoarece cunoatei numele clasei
componentei respective. De exemplu, declanai o nou activitate ca
rspuns la o aciune efectuat de utilizator sau pornii un serviciu
pentru a descrca un fiier n fundal. Implicite nu denumesc o
component specific ns declar o aciune general, ceea ce permite unei
componente din alt aplicaie s o efectueze. De exemplu, dac dorii s
artai utilizatorului o locaie pe hart, putei utiliza un intent
implicit pentru a solicita ca o alt aplicaie capabil s fac acest
lucru.Atunci cnd creai un intent explicit pentru a porni o
activitate sau un serviciu, sistemul lanseaz imediat componenta
specificat. n cazul unui intent implicit, sistemul caut cea mai
potrivit component prin compararea coninutului acestuia cu filtrele
de intenie (intent filters) declarate n fiierele manifest ale altor
aplicaii instalate pe dispozitiv. Dac sistemul gsete o singur
potrivire, lanseaz imediat componenta. Altfel, afieaz o fereastr
(de tip dialog) prin care utilizatorul poate alege ce aplicaie s
fie utilizat.
Figur 2 : Utilizarea intent-urilor(surs :
http://developer.android.com/guide/components/intents-filters.html
)
Schema din Figura 2 ilustreaz cum este pasat un intent implicit
prin intermediul sistemului pentru a ncepe o nou activitate. Aadar,
activitatea A creaz un intent ce conine o descriere a aciunii de
efectuat i l paseaz metodei startActivity (). Sistemul caut n toate
aplicaiile un intent filter potrivit pentru intent-ul primit.
Atunci cnd gsete o potrivire, sistemul pornete acea activitate (n
cazul nostru, activitatea B) prin invocarea metodei onCreate ()
creia i paseaz intent-ul.Un intent filter este o expresie aflat n
fiierul manifest al aplicaiei ce specific tipurile de intent-uri pe
care componenta accept s le primeasc. De exemplu, prin declararea
unui intent filter pentru o activitate, devine posibil ca aceasta s
fie deschis de ctre alte aplicaii prin intermediul unui anumit
intent. De asemenea, dac nu este declarat niciun filtru pentru o
activitate, atunci ea poate fi pornit doar explicit.Din motive de
securitate, este recomandat ca pornirea serviciilor s fie fcut
printr-un intent explicit, fr a declara filtre. Folosind un intent
implicit, nu poi fi sigur cine l va prelua, iar utilizatorul nu
poate vedea ce serviciu pornete.
2. ActivityO activitate este o component a aplicaiei care ofer
un ecran cu care utilizatorii pot interaciona n scopul de a face
ceva, cum ar fi s formeze un numr de telefon, s fac o fotografie, s
trimit un e-mail, sau pentru a vizualiza o hart. Fereastra umple
tipic ecran, dar poate fi mai mic dect acesta i poate sta deasupra
altor ferestre.O aplicaie poate conine una sau mai multe componente
de tip Activity n funcie de design, una distre acestea fiind marcat
ca i activitatea principal a aplicaiei. Activitate principal va fi
lansat n execuie la pornirea aplicaiei.Pentru a crea o activitate,
trebuie s creai o subclas de Activity. n aceast subclas trebuie s
suprascrieti metodele care sunt apelate atunci cnd activitatea
trece dintr-o stare n alta pe parcursul ciclului de via, ca de
exemplu la creare, la opriere, la revenire sau la distrugere. Cele
mai importante metode care trebuie suprascrise sunt: onCreate ():
aceast metod trebuie implementat obligatoriu pentru a putea fi
apelat cnd este creat activitatea.n cadrul acestei metode trebuie
iniializate componentele de baz ale activitii. onPause (): sistemul
apeleaz aceast metod la primul semn ca utilizatorul a prsit
activitatea curent.
Figur 3 : Ciclul de via al unui Activity(surs :
http://developer.android.com/guide/components/activities.html )
Figura 3 ilustreaz diverse ci pe care le poate lua o activitate
ntre diferite stri la acesteia. Dreptunghiurile reprezint metodele
suprascrise care le putei implementa pentru a efectua operaiuni n
cazul n care n activitatea respectiv se face tranziia ntre stri.O
activitate poate exista n una din cele trei stri: Resumed:
Activitatea este n prim-planul ecranului fiind utilizat. (Aceast
stare este uneori menionat ca stare activ.) Paused: Activitatea nu
se afl n prim-plan dar este nc vizibil. Componentele activitii
aflate n aceast stare nu interacioneaz cu utilizatorul ns sunt
ataate manager-ului de ferestre fiind vizibile utilizatorului.
Stopped: Activitatea este complet acoperit de o alt activitate
(activitatea este acum n "background"). Cu toate acestea, acesta nu
mai este vizibil pentru utilizator i poate fi nchis de sistem
atunci cnd este nevoie de memorie n alt parte.n cazul n care o
activitate este ntrerupt sau oprit, sistemul poate scdea din
memorie, fie prin solicitarea ca aceasta s se termine (apelul
metodei finish ()), sau pur i simplu nchiderea procesului. Cnd
activitatea este deschis din nou (dup ce a fost terminat sau
nchis), acesta trebuie s fie crea peste tot.3. FragmentsUn fragment
reprezint un comportament sau o poriune de interfa grafic dintr-o
activitate. Acesta a fost creat i introdus n cadrul lansrii
API-ului 11 (sau Android 3.0) pentru a permite unei interfee
grafice s fie mai flexibil deoarece n cazul tabletelor ecranul este
mult mai mare dect al unui telefon mobil. Spre exemplu o aplicaie
poate folosi un obiect de tip Fragment pentru a afia o list de
articole n stnga iar n dreapta poate folosi un alt obiect de tip
Fragment pentru a afia detalii despre obiectul selectat din list,
ambele obiecte Fragment aflndu-se n cadrul aceluiai obiect
Activity. Exemplul cu aceste 2 obiecte Fragment este ilustrat n
figur de mai jos.
Figur 4 : Utilizarea fragmentelor(surs :
http://developer.android.com/guide/components/fragments.html )
ntr-o activitate se pot combina mai multe (obiecte de tip)
fragmente pentru a construi o interfa grafic, iar un fragment poate
fi utilizat n mai multe activiti. Ciclul de via al unui obiect de
tip Fragment este similar cu cel al unui obiect de tip Activity.
Pentru a aduga un obieect de tip Fragment la o nou activitate se
poate proceda n dou moduri: Declararea fragmentului n interiorul
fiierului de layout al activitii:n acest caz se specific
propietatile fragmentului la fel ca pentru un view. De exemplu
pentru o activitate cu dou fragmente vom avea:
(Surs exemplu cod :
http://developer.android.com/guide/components/fragments.html)Dup
cum se observ, fiecare fragment trebuie s aib un identificator unic
pentru ca atunci cnd activitatea este repornit, sistemul s poat
restaura fragmentul. Adugarea fragmentului la un obiect ViewGroup
existentn orice moment, n timp ce activitatea se execut, se poate
aduga fragmente la activitate. Trebuie doar se fie specificat
ViewGroup-ul la care se adaug.Pentru a putea face diferite aciuni
cu fragmente ntr-o activitate (adugare, tergere sau nlocuire)
trebuie s folosim API-ul FragmentTransaction. O instan de
FragmentTransaction se poate obine astfel:FragmentManager
fragmentManager = getFragmentManager()FragmentTransaction
fragmentTransaction = fragmentManager.beginTransaction();(Surs
exemplu cod :
http://developer.android.com/guide/components/fragments.html)Pentru
a aduga un fragment se folosete metoda add () specificnd fragmentul
de adugat i view-ul n care se dorete adugarea. Spre
exemplu:ExampleFragment fragment = new
ExampleFragment();fragmentTransaction.add(R.id.fragment_container,
fragment);fragmentTransaction.commit();(Surs exemplu cod :
http://developer.android.com/guide/components/fragments.html)Se
poate aduga un fragment care s conin operaii de background, nu doar
componente grafice. Acest lucru se face tot cu ajutorul metodei add
(Fragment, Strng) oferind ns un strng de identificare unic n loc de
id-ul view-ului. 4. Services Un serviciu este o component de
aplicaie care poate efectua operaii de funcionalitate n fundal i nu
ofer o interfa cu utilizatorul. O component a unei aplicaie poate
ncepe un serviciu i va continua s ruleze n fundal, chiar dac
utilizatorul trece la alt aplicaie.
5. Content ProvidersObiectele de tip Content Providers
gestioneaz accesul la un set structurat de date. Acestea ncapsuleaz
datele i pune la dispoziie mecanisme de definire a securitii
datelor. Obiectele Content Providers sunt interfee standard care
conecteaz datele dintr-un proces cu codul care ruleaz ntr-un alt
proces. Unele elemente de baz ale sistemului Android conin
componente de tip ContentProvider pentru a face datele disponibile
altor aplicaii.Datele puse la dispoziie de un anumit furnizor sunt
accesate folosind un obiect de tip ContentResolver. Acesta este un
obiect client care asigur operaii de creare, citire, update i
tergere asupra datelor din ContentProvider.Datele gestionate de un
obiect de tip ContentProvider pot fi: audio, video, imagini i
fiiere de baze de date SQLite.
Android SDK
Android SDK reprezint o colecie de software i de tool-uri
specifice cu ajutorul crora se pot dezvolta aplicaii pentru
sistemul de operare Android. Aceast colecie poate fi descrcat
separat prin intermediul SDK Manager-ului.n continuare sunt
prezentate cteva pachete importante:
Tabel 3 : Pachete prezente in SDK Android (surs :
http://developer.android.com/sdk/exploring.html
)PachetDescriereLocalizare n cadrul SDK
SDK ToolsCuprinde unelte necesare depanrii si testrii
aplicaiilor alturi de alte utilitare necesare dezvoltrii
aplicaiilor./tools/
SDK Platform-toolsConine unelte specifice anumitor platforme de
Android necesare proiectrii respectiv depanrii aplicaiilor
specifice platformei respective./platform-tools/
DocumentationO copie offline actualizat a documentaiei
API-urilor diverselor platforme Android/docs/
SDK PlatformExist o platforma SDK pentru fiecare versiune de
Android lansat, care poate fi aleas ca i platform int pentru
aplicaii./platforms//
System ImagesFiecare platform ofer una sau mai multe imagini
sistem pentru procesoarele ARM sau X86.Aceste imagini sistem sunt
necesare emulatorului de Android pentru a putea
rula./platforms//
Sources for Android SDKO copie a codului surs pentru
componentele diverselor platforme de Android./sources
Samples for SDKExemple care ilustreaz funcionalitaile diverselor
API-uri de Android./platforms//samples/
Google API Pachet special ce permite unei aplicaii s apeleze
servicile oferite de Google prin intermediul Google
API./add-ons/
Android SupportLibrarie de suport care poate fi inclus n
aplicaii pentru a putea oferii acestora funcionaliti disponibile
unui nivel API superior n cazul n care acestea trebuie s ruleze pe
o versiune de Android mai nou./extras/android/support/
Google Play Billing Librrie static care permite integrarea unui
serviciu de taxare n aplicaii./extras/google/
Google Play LicensingLibrrie ce ofer funcionaliti de verificare
a licenelor pentru aplicaii atunci cnd acestea sunt distribuite
prin intermediul magazinului virtual Google
Play./extras/google/
Facebook SDK pentru Android
Facebook SDK ofer o soluie simpl i rapid pentru a integra uor
platforma de socializare cu aplicaiile dezvoltate pentru sistemul
de operare Android. Acest SDK ofer suport pentru autentificarea n
cadrul aplicaiei cu datele unui utilizator al platformei de
socializare, manipularea obiectelor prezente n API-ul Facebook
precum i suport pentru componentele interfeei grafice
specifice.Graph API este principala modalitate de a aduga i extrage
date din platform de socializare. Cu ajutorul acestui API este
posibil interogarea datelor, ncrcarea pozelor i multe alte activiti
necesare unor aplicaii la acestei platforme.
ADT (Android Development Tool)
ADT este un mediu de dezvoltarte Eclipse care are integrat
SDK-ul de Android.Eclipse este un mediu de dezvoltare software
folosit pentru a scrie aplicaii n Java. Este structurat sub forma
unei ierarhii de plugin-uri care asigur diferite funcionaliti.ADT a
fost creat pentru a facilita dezvoltarea aplicaiilor destinate
dispozitivelor care rulaeaza sistemul de operare Android. Acesta
extinde capabilitile mediului de dezvoltare Eclipse, oferind n plus
posibilitatea de a proiecta interfee grafice special
Figur 5 : Mediul de dezvoltare ADTTot cu ajutorul acestui tool
se poate aduga noi versiuni de API precum i crearea unor emulatoare
pentru a putea instala aplicatile create. Dup cum se observa, din
componenta Android SDK Manager se poate instala versiunea de API
dorit pentru a dezvolta aplicaia.
Figur 6 : SDK Manager
Pentru a testa aplicaia se poate opta fie pentru a utiliza un
dispozitiv mobil fie prin a crea un dispozitiv virtual care
simuleaz toate aproape toate caracteristicile unui dispozitiv
mobil.
Dezvoltarea aplicaiei
n acest capitol vom prezenta structura aplicaiei , cum
funcioneaz aceasta i elementele folosite pentru dezvoltarea
ei.Structura aplicaieiInterfaa aplicaiei cuprinde 7 ferestre. Cnd
este lansat aplicaia se afiaz activitatea principala
(MainActivity). Aceast activitate conine un intent care este
folosit pentru a obine date de la aplicaia Facebook utilizate
pentru a se putea realiza conexiunea la contul deja autentificat n
aplicaie. Tot din aceast activitate principal se vor putea accesa
celelalte ferestre ale aplicaiei. Astfel se v-a putea ajunge la
fereastra care permite selectarea prietenilor. Dupa selectarea
prietenilor pentru care se dorete s se fac topul preferinelor , o
alta fereastra v-a fi afiat ,iar din aceasta se va putea alege
topul care se dorete a fi vizualizat. Pentru fiecare top va fi
deschis alta fereastra n care acesta va fi afiat. Navigarea n
aplicaie se va face cu ajutorul butoanelor prezente n fiecare
fereastr.
Figur 8 Ferestrele aplicaieiFigura de mai sus ne prezint cele 7
activiti i posibilitatea de a naviga printre acestea. Pentru a
putea face legtura ntre cele 7 activiti am folosit obiecte de tip
Intent. Aceste obiecte conin informaii pentru a putea conecta dou
componente ale aplicaiei. Intent-ul creat conine doi parametrii :
clasa din care este apelat intent-ul respectiv i clasa cruia
sistemul ar trebui s transmit intent-ul. Intent intent = new
Intent(MainActivity.this,select_preferences.class);Obiectul intent
este apelat din clasa MainActivituy i este transmis clasei
select_preferences.O activitate nou este lansat cu ajutorul
comenzii startActivity() care primeste ca parametu un Intent.
Sistemul primete apelul i pornete o instam a Activity-ului
specificat de intent.n continuare vom prezenta Activity-urile i
clasele declarate, evideniind felul n care acestea se leag ntre
ele. Aceasta aplicaie folosete anumite obiecte prezente n SDKul
oferit de Facebook dezvoltatorilor i vor fi folosite ca atare ,
precizndu-se scurt principalele lor caracteristici.
MainActivity Aceast activitate este lansat la prima interaciune
a utilizatorului cu aplicaia. Din cadrul acestei ferestre pot fi
accesate celelalte activiti ale aplicaiei , i anume selectarea
prietenilor pentru care se dorete s se alcatuiasc topul
preferinelor i afiarea acestui top. (informaii despre versiunea
curent a aplicaiei).n aceast fereastr utilizatorul poate efectua
doua aciuni prin intermediul a dou butoane. Prima aciune accesat
prin butonul Pick Friends lanseaz o nou activitate care permite
selectarea prietenilor in list. A doua aciune disponibila prin
butonul Show Top 10 Preferences lanseaz o nou aciune care la randul
ei are mai multe opiuni de a alege topurile dorite.MainActivity-ul
constituie clasa plincipal a aplicaiei , aici fcndu-se majoritatea
operaiilor. n cadrul acestei clase s-a folosit un obiect Session
care are ca scop autentificarea i gestionarea sesiunilor de
conectarea ale unui utilizator la Facebook. O sesiune trebuie sa
fie deschis atunci cand un utilizator dorete s fac o anumit cerere
reelei de socializare. Pentru a tii n ce moment al cilulului de via
al aplicaiei ne aflam , este folosit un obiect SessionState . Odata
ce o sesiune a fost nchis , aceasta nu mai poate fi redeschis ,
fiind necesar crearea unui nou obiect Session. Pentru a lucra cu
obiectele Session am folosit clasa UiLifecycleHelper . Aceast clasa
permite crearea , deschiderea automata , salvarea si restaurarea
sesiunii ntr-un mod similar ciclului de via al interfeelor grafice
Android.
Figur 9 Folosirea UiLifecycleHelperntruct din aceast fereastr se
face navigarea ctre alte doua Activity-uri au fost definite doua
butoane crora li s-a asociat un listener care la apasarea butonului
face trecerea la activitatea noua precizat prin obiectul
Intent.
Figur 10 Apelarea altor Activity-uriPickFriendsActivityAceast
clas utilizeaz FriendPickerFragment pentru a afia lista de prieteni
a utilizatorului. Metoda populateParameters() este folosita pentru
a popula ce dorim sa transmitem obiectului FriendPickerFragment. n
aceast clas n metoda suprascris onStart() folosim un obiect
FriendPickerApplication care contine o list de utilizatori
(GraphUser).
Figur 11 Metoda onStart() din PickFriendsActivityn aceast metod
se apeleaza loadData() din clasa FriendPickerFragment care la
randul ei seteaza lista lista de prieteni cu obiectele preluate cu
ajutorul Graph API Clasa PickFriendsActivity este apelata n
MainActivity prin metoda startPickFriendsActivity(). n cadrul
acestei metode , ne asiguram ca sesiunea este deschis i astfel
putem lansa activitatea pentru selecia prietenilor. Acest lucru se
realizeaz tot prin folosirea unui Intent.
Figur 12 Figura 3.5 Metoda startPickFriendsActivity() din
MainActivity
Select_preferencesAceast activitate este apelat tot din
MainActivity i cuprinde 5 butoane care permit lansarea unei noi
activitai. Acete butoane sunt :
Figur 13 Figura 3.6 Declarearea butoanelor clasei
Select_preferencesAceast navigare ctre celelalte ferestre se face
tot cu ajutorul unui listener pentru fiecare buton care transmite
obiectul de tip Intent.Show_topAceste 5 activitai conin un obiect
ListView i un obiect UserDataSource care conine informaiile salvate
anterior. Prin parcurgerea obiectelor UserDataSource sunt inserate
in ListView valorile elementelor n funcie de topul la care se
refer. Acest lucru este realizat n metoda onCreate() cand este
lansat activitatea.
Figur 14 Figura 3.7 Afisarea n ListView
Persisiena datelor
Pentru a stoca preferinele utilizatorilor selectai s-a folosit
SQLite . Aceste preferine sunt salvate dup ce sunt selectai
prietenii din lista cu ajutorul metodei getFriendsLikes() din
MainActivity.n cadrul acestei metode dup ce ne asiguram c sesiunea
este deschis , pentru fiecare prieten din list este apelat fqlQuery
= "SELECT movies,books,music,tv,games FROM user where uid ="+
names.get(i); Acest query este transmis n request mpreun cu metoda
parsePagesFromGRAPHResponse();
Figur 15 Metoda parsePagesFromGRAPHResponse()Aceasta metoda dupa
cum se observa foloseste un obiect JSON si un array JSON cu
ajutorul carora parseaza datele obtinute din bundle-ul transmis.
Dupa ce se parseaza , datele necesare sunt introduse intr-un array
de String-uri . Dupa un obiect de tipul respectiv este inserat in
baza de date cu functia insert.
MySQLiteHelperAceasta clasa este folosita pentru a defini
modelul bazei de date . Pentru inceput sunt definite numele bazei
de date precum i versiunea.private static final String
DATABASE_NAME = "facebook_top.db";private static final int
DATABASE_VERSION = 1;Tabelele bazei de date au fost definite cu
doua coloane , respectiv id si nume. Au fost create tabelele
table_movies, table_music, table_books, table_tv si
table_games.Pentru a fi create a fost executate comanda
execSQL.
Figur 16 Crearea tabelelor din BD
UserDataSourcen aceasta clasa sunt executate operatiile asupara
bazei de date . Aceste operatii sunt folosite atat in MainActivity
cat si in Activity-urile in care sunt introduse datele in
ListView-uri si afisate utilizatorului. Pentru fiecare dintre cele
5 date pe care doream sa le obtinem am efectuat operatii de insert
si extragere . Vom prezenta aceste operatii pentru tabela movies ,
celelealte fiind similare .
Figur 17 Metoda InsertAceasta metoda insereaza un obiect de tip
movies transmis ca parametru. In caoloanele declarate in
MySQLiteHelper inseram valorile preluate din obiectul transmis ca
parametru. Metoda insert() este apelata in MainActivity dupa ce s-a
efectuat parsarea insernd in tabela corespunzatoare obiectul
respectiv.
Figur 18 Inserarea apelata in MainActivityMetoada de extragere
este folosita pentru a afisa elementele dorite. Aceasta foloseste
urmatoarea interogare pentru a extrage primele 10 elemente din
lista ordonate dupa numarul lor de apariii , luate descrescator:
String sql = "SELECT name from movies GROUP BY name ORDER BY
count(name) desc limit 10";Acest query returneaza un obiect de tip
Cursor . Un Cursor reprezinta rezultatul unui query si pointeaza un
rand din rezultatul intors de query. In acest fel , sistemul
Android trateaza rezultatele intoarse de query-uri eficient ,
nefiind nevoie de a salva toate datele in memorie
Figur 19 Extragerea din BDPentru a ne deplasa intre diferite
randuri ale rezultatului putem folosi metodele moveToFirst() si
moveToNext() . Metoda isAfterLast() permite verificarea sfarsitului
rezultatelor.Pentru tabelele music,books,tv si games , metodele de
inserare si de extragere sunt similare.
Fiiere de resurse
Pe langa clasele prezentate pana acum , un proiect Android
conine i multe fiiere de resurse. Aceste sunt folosite pentru a
construi interfaa grafica a aplicaiei sau pentru a face referire la
anumite variabile care au o valoare constant.
AndroidManifest.xmlFiecare aplicatie trebuie sa aiba un fisier
AndroidManifest.xml in radacina proiectului. Acest fisier manifest
prezinta informatii esentiale despre aplicatie sistemului de
operare Android, informatii pe care sistemul trebuie sa le aiba
inainte sa poata rula codul aplicatiei. Printre alte lucruri , in
fisierul manifest se gasesc urmatoarele : Numele pachetului Java al
aplicatiei. Acesta este un identificator unic al aplicatiei
Descrierea componentelor aplicatiei , activitati , servicii si
content providers. Declara ce permisiuni trebuie sa aiba aplicatia
pentru a putea accesa parti protejate ale API-ului si sa
interactioneze cu alte aplicatii Declara si ce permisiuni trebuie
sa aiba alte aplicatii pentru a putea sa interactioneze cu
aplicatia. Declara nivelul minim al Android API pe care aplicatia
il suportaElementele ce pot fi prezente in fisierul manifest sunt
prezentate mai jos:
Android pune la dispoziie un limbaj XML care cuprinde subclase
ale View si ViewGroup. Pe baza acestora se pot defini elemente de
interfa folosint XML .
Figur 20 Ierarhia View si ViewGroup
View-urile sunt widget-uri ale interfetei cu utilizatorul ca de
exemplu butoane , campuri text, etc. Aceste view-uri au atribute pe
baza carora se poate configura aspectul si comportamentul lor.Un
ViewGroup este responsabil pentru aranjarea celorlalte View-uri ,
acesta mai fiind cunoscut si ca layout manager .Clasa de baza
pentru acest layout manager este android.view.ViewGroup care
extinde la randul ei android.view.View, clasa de baza a
View-urilor.Interfetele cu utilizatorul ale unei activitati sunt de
obicei descrise cu ajutorul unui fisier XML (layout files) . Aceste
pot fi construite i prin intermediul grafic , Android punand la
dispozitie un set de View-uri (Custom & Library Views) ,
propietatile putand fi setate din tabelul Properties , fara a fi
nevoie de editarea fisierului XML. n continuare sunt prezentate
layout-urile pentru principalele activitai:
Figur 21 Custom & Library Views si Properties
main.xmlAcest fisier construieste interfata pentru MainActivity
, activitatea cu care se lanseaza aplicaia. Are la baza un
RelativeLayout care are setat ca background o imagine referita in
alt fisier de resurse , si anume drowable.
Figur 22 Layout main.xml
pick_friends_activity.xmlAcest layout contine un FrameLayout
care face referire la fragmentul oferit de Facebook care permite
selectarea prietenilor.android:id="@+id/friend_picker_fragment"
select_preferences.xmlPentru acest layout s-a folosit un
RelativeLayout si cuprinde 5 butoane , fiecare buton avand
propietatea android:background setate cu o referire la fisierul
back_button.xml din drawable care contine unele caracteristici ale
unui buton ca forma , culoare si asezarea acestuia.
Figur 23 Layout select_preferences
activity_list_view.xmlAcest layout contine un View de tip
ListView pentru a afisa topul respectiv.
Figur 24 Layout activity_list_view
Aceste layout-uri sunt referite in cadrul activitatilor
principale in metodele suprascrise onCreate().
setContentView(R.layout.main);setContentView(R.layout.pick_friends_activity);setContentView(R.layout.select_preferences);setContentView(R.layout.activity_list_view);
Un alt fisier de resurse important se gaseste n folderul values.
Acesta conine pe lng numele aplicaiei i un identificator unic
oferit de Facebook.
Figur 25 Resursa Strings.xml
Crearea aplicaiei pe platforma Facebook
Pentru a putea folosi functionalitaile oferite de Facebook SDK
este necesar nregistrarea pe platforma de socializare a unui cont
de dezvoltator. n acest cont trebuie sa nregistram un HashKey
generat de un tool prezent n Android SDK. Pentru aceasta aplicatie
, generarea HashKey-ului s-a facut n cadrul clasei MainActivity n
metoda onCreate() prin adaugarea urmatorului cod:
Figur 26 Generare HashKeyDupa ce acest cod este generat , el se
adauga in tabul Sample App din contul de dezvoltator al platformei
Facebook.
Figur 27 Inregistrare HashKeyUrmatorul pas il constituie crearea
aplicatiei , acest lucru facandu-se astfel 'Apps' > 'Create a
New App': Dupa ce ste creata aplicatia va aparea codul aplicatiei
care trebuie introdus in fisierul de resurse strings.xml .
Figur 28 Codul aplicaiei FacebookPentru aplicatia creata de la
Settings va trebui sa adaugam platforma pe care dorim sa o folosim.
n acest caz am adaugat Android i am introdus numele pachetului
folosit i al activitaii principale.
Figur 29 Platforma pe care dorim sa folosim aplicatia
Nu n ultimul rnd atrbuie s trimitem o cerere pentru a putea
folosi toate facilitaile platformei Facebook. Odata aprobata
aceasta cerere , aplicaia dezvoltat poate beneficia de toate
serviciile implementate cu ajutorul Facebook SDK.
Figur 30 Cerere pentru aprobarea folosirii coninutului
Facebook
Concluzii
Aceast aplicaie mi-a oferit ocazia studierii unei tehnologii
foarte populare i pentru care n urmatorii ani se prognozeaz
creterea folosirii acestora. Aplicaiile pentru sistemul de operere
Android au un numar foarte mare de utilizatori , mai ales cele cu
specific social.Am reuit s nelg principalele componente ale
sistemului Android ct i principalele modalitai de utilizare ale
resurselor puse la dispoziie dezvoltatorilor de platforma de
socializare Facebook.n momentul finalizrii redactarii acestui
document , aplicaia se afla ntr-o stare ce i confer utilitate ,
putnd-i fi aduse mbunatairi. Printre viitoarele dezvoltari
ulterioare , cele mai importante ar putea fi : Adaugarea unui buton
care s permit selectarea tuturor prietenilor din list. Navigarea
spre pagina de Facebook a fiecarui element din topul prezentat.
Afiarea unui grafic care s permita vizualizarea numarului de
prieteni care au dat like la elementele din top. Afiarea pozei de
profil a utilizatorului pe prima activitate lansat. Analiza altor
date preluate din lista de prieteni ai utilizatorului Optimizarea
aplizaiei pentru viitoarele versiuni ale sistemului de operare
(Android L ).
n concluzie , consider c am reuit s ndeplinesc obiectivul
prezentat la nceputul lucrarii , iar aplicaia prezentat
implementeaz facilitile enumerate. n forma ei actuala aceast
aplicaie poate fi folosit de utilizatorii reelei de socializare
Facebook care au deja aplicaia de socializare instalata i sunt
autentificai. Acestia pot , cu ajutorul aplicaiei prezentate, s
selecteze prietenii pentru care doresc s afle ce preferine au i s
vizualizeze preferinele lor pentru urmatoarele lucruri : cari ,
filme , muzic , seriale i jocuri. Dup ce vor fi adaugate
funcionalitaile prezentate ca dezvoltri ulterioare , aplicaia va fi
publicat n magazinul virtual Google Play deoarece , dup cum am
menionat la nceputul acestei lucrari , lipsete o astfel de
aplicaie. Lista tabelelor
Tabel 1 : Uniti vndute i cote de pia T4 2013Tabel 2 : Versiuni
AndroidTabel 3 : Pachete prezente in SDK Android
Lista figurilor
Figur 1 : Arhitectura sistemului AndroidFigur 2 : Utilizarea
intent-urilorFigur 3 : Ciclul de via al unui ActivityFigur 4 :
Utilizarea fragmentelorFigur 5 : Mediul de dezvoltare ADTFigur 6 :
SDK ManagerFigur 7: AVD ManagerFigur 8 Ferestrele aplicaieiFigur 9
Folosirea UiLifecycleHelperFigur 10 Apelarea altor
Activity-uriFigur 11 Metoda onStart() din PickFriendsActivityFigur
12 Figura 3.5 Metoda startPickFriendsActivity() din
MainActivityFigur 13 Figura 3.6 Declarearea butoanelor clasei
Select_preferencesFigur 14 Figura 3.7 Afisarea n ListViewFigur 15
Metoda parsePagesFromGRAPHResponse()Figur 16 Crearea tabelelor din
BDFigur 17 Metoda InsertFigur 18 Inserarea apelata in
MainActivityFigur 19 Extragerea din BDFigur 20 Ierarhia View si
ViewGroupFigur 21 Custom & Library Views si PropertiesFigur 22
Layout main.xmlFigur 23 Layout select_preferencesFigur 24 Layout
activity_list_viewFigur 25 Resursa Strings.xml
ANEXE
Bibliografie
[1]STEE2010 STEELE James , TO Nelson , The Android Developers
Cookbook Building Application with the Android SDK , Addison-Wesley
, Crawfordsville , 2010