Vous êtes sur la page 1sur 43

Academia de Studii Economice din Bucureti

Facultatea de Cibernetic, Statistic i


Informatic Economic

LUCRARE DE LICEN
APLICAIE ANDROID PENTRU ANALIZA
DATELOR PRELUATE DE PE
PLATFORMA DE SOCIALIZARE
FACEBOOK

BUCURETI
2014
Cuprins
Introducere
Context
Obiectivul i necesitatea lucrrii
Structura lucrrii
Tehnologii folosite
Platforma Android
Caracteristici Android
Arhitectura pe niveluri a sistemului Android

Elemente componente
Android SDK
Facebook SDK pentru Android
ADT (Android Development Tool)
Dezvoltarea aplicaiei
Structura aplicaiei
Persisiena datelor
Fiiere de resurse
Crearea aplicaiei pe platforma Facebook
Concluzii
Lista tabelelor
Lista figurilor
ANEXE
Bibliografie

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
2

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 aplica ii 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-timesmartphone-users/ )

T1 2014 (mii)

T4 2013 (mii)

T1 2013

Cota

Cota de

Cretere

Cretere

(mii)

de

pia T4

secvenial

anual

pia

2013

T1
2014
Android

187.027,721

188.227,483

AOSP

53.749,521

53.919,640

Apple iOS

43.719,00

51.024,482

150.621,7

37.406,8

44%

39%

-1%

13%

11%

0%

10%

11%

-14%

24%

17%

BlackBerry

550,000

765,000

981,300

0%

1%

-28%

-44%

750,000

3.516,3

5.426,5

0%

1%

-79%

-86%

13.274,030

11.418,218

6.070,800

3%

2%

16%

119%

127.593,495

167.338,026

229.408,8

30%

35%

-24%

-44%

Altele

545,000

428,637

1.126,6

0%

0%

27%

-52%

Total

427.208,766

476.637,786

431.042,5

100%

100%

-10%

-1%

10
BlackBerry
OS
Windows
Phone
Sisteme

de

operare

de

baza

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)

Versiune

Nume de cod

Data lansarii

4.4

KitKat

TBA

4.1

Jelly Bean

9 iulie 2012

4.0

Ice Cream Sandwich

16 decembrie 2011

3.1

Honeycomb

10 mai 2011

2.3.3

Gingerbread

6 decembrie 2010

2.2

Froyo

20 mai 2010

2.0

Eclair

26 octombrie 2009

1.6

Donut

15 septembrie 2009

1.5

Cupcake

30 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 aplica ile 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.
5

Tehnologii folosite
n 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.
6

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

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
7

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 pu in 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 ac ioneaz 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.
9

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_DATE

Formatul 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 ma ina
virtual Dalvik; de la versiunea 4.4, este suportat o nou ma in 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;
10

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 provider
Nivelul 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 con in 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 Filters


11

Un 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 activiti
O 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 serviciu
Un 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 broadcast
Un 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.
12

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 gse te 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 con ine 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 aplica iei 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 po i fi sigur cine l va prelua,
iar utilizatorul nu poate vedea ce serviciu pornete.
13

2. Activity
O 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 aplica iei. 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.

14

Figur 3 : Ciclul de via al unui Activity


(surs : http://developer.android.com/guide/components/activities.html )

15

Figura 3 ilustreaz diverse ci pe care le poate lua o activitate ntre diferite stri la
acesteia. Dreptunghiurile reprezint metodele suprascrise care le pute i 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. Fragments
Un 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.

16

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:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent" android:layout_height="match_parent">
<fragment
class="com.example.android.apis.app.FragmentLayout$TitlesFragment"
android:id="@+id/titles" android:layout_weight="1"
android:layout_width="0px" android:layout_height="match_parent"
/>
<FrameLayout android:id="@+id/details" android:layout_weight="1"
android:layout_width="0px" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
</LinearLayout>
(Surs exemplu cod : http://developer.android.com/guide/components/fragments.html)

17

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 existent
n 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 opera ii de func ionalitate
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 Providers
Obiectele 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.
18

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 )

Pachet

Descriere

Localizare n
cadrul SDK

SDK Tools

Cuprinde unelte necesare depanrii si testrii aplicaiilor alturi de

<sdk>/tools/

alte utilitare necesare dezvoltrii aplicaiilor.


SDK Platform-tools

Conine unelte specifice anumitor platforme de Android necesare

<sdk>/platform-

proiectrii respectiv depanrii aplicaiilor specifice platformei

tools/

respective.
Documentation

O copie offline actualizat a documentaiei API-urilor diverselor

<sdk>/docs/

platforme Android
SDK Platform

System Images

Exist o platforma SDK pentru fiecare versiune de Android lansat,

<sdk>/platforms/<a

care poate fi aleas ca i platform int pentru aplicaii.

ndroid-version>/

Fiecare platform ofer una sau mai multe imagini sistem pentru

<sdk>/platforms/<a

procesoarele ARM sau X86.Aceste imagini sistem sunt necesare

ndroid-version>/

emulatorului de Android pentru a putea rula.


Sources for Android

O copie a codului surs pentru componentele diverselor platforme

<sdk>/sources

SDK

de Android.

Samples for SDK

Exemple care ilustreaz funcionalitaile diverselor API-uri de

<sdk>/platforms/<a

Android.

ndroidversion>/samples/

Google API

Pachet special ce permite unei aplicaii s apeleze servicile oferite

19

<sdk>/add-ons/

de Google prin intermediul Google API.


Android Support

Librarie de suport care poate fi inclus n aplicaii pentru a putea

<sdk>/extras/andro

oferii acestora funcionaliti disponibile unui nivel API superior n

id/support/

cazul n care acestea trebuie s ruleze pe o versiune de Android mai


nou.
Google Play Billing

Google

Play

Licensing

Librrie static care permite integrarea unui serviciu de taxare n

<sdk>/extras/googl

aplicaii.

e/

Librrie ce ofer funcionaliti de verificare a licenelor pentru

<sdk>/extras/googl

aplicaii atunci cnd acestea sunt distribuite prin intermediul

e/

magazinului virtual Google Play.

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

20

Figur 5 : Mediul de dezvoltare ADT

Tot 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
Manager

Android
se

poate

SDK
instala

versiunea de API dorit pentru a


dezvolta aplicaia.

Figur 6 : SDK Manager

21

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

22

n acest capitol vom prezenta structura aplicaiei , cum funcioneaz aceasta i elementele
folosite pentru dezvoltarea ei.

Structura aplicaiei
Interfaa 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 aplicaiei

Figura 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
23

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 .
24

Aceast clasa permite crearea , deschiderea automata , salvarea si restaurarea sesiunii ntr-un
mod similar ciclului de via al interfeelor grafice Android.

Figur 9 Folosirea UiLifecycleHelper

ntruct 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-uri

PickFriendsActivity
Aceast clas utilizeaz FriendPickerFragment pentru a afia lista de prieteni a
utilizatorului. Metoda populateParameters() este folosita pentru a popula ce dorim sa
transmitem obiectului FriendPickerFragment.
25

n aceast clas n metoda suprascris onStart() folosim un obiect


FriendPickerApplication care contine o list de utilizatori (GraphUser).

Figur 11 Metoda onStart() din PickFriendsActivity

n 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_preferences
Aceast activitate este apelat tot din MainActivity i cuprinde 5 butoane care permit
lansarea unei noi activitai. Acete butoane sunt :

26

Figur 13 Figura 3.6 Declarearea butoanelor clasei Select_preferences

Aceast navigare ctre celelalte ferestre se face tot cu ajutorul unui listener pentru fiecare
buton care transmite obiectul de tip Intent.
Show_top
Aceste 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

27

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.
28

MySQLiteHelper

Aceasta 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

UserDataSource
n 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 Insert

29

Aceasta 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 MainActivity

Metoada 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

30

Figur 19 Extragerea din BD

Pentru 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.xml
Fiecare 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 :
31

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 suporta
Elementele ce pot fi prezente in fisierul manifest sunt prezentate mai jos:
<action>
<activity>
<activity-alias>
<application>
<category>
<data>
<grant-uri-permission>
<instrumentation>
<intent-filter>
<manifest>
<meta-data>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>

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 .

32

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 Viewurilor.
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:

33

Figur 21 Custom & Library Views si Properties

main.xml
Acest 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

34

pick_friends_activity.xml
Acest layout contine un FrameLayout care face referire la fragmentul oferit de Facebook
care permite selectarea prietenilor.
android:id="@+id/friend_picker_fragment"

select_preferences.xml
Pentru 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.xml
Acest layout contine un View de tip ListView pentru a afisa topul respectiv.

35

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.

36

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:

37

Figur 26 Generare HashKey

Dupa ce acest cod este generat , el se adauga in tabul Sample App din contul de
dezvoltator al platformei Facebook.

Figur 27 Inregistrare HashKey

Urmatorul 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 .

38

Figur 28 Codul aplicaiei Facebook

Pentru 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.

39

Figur 30 Cerere pentru aprobarea folosirii coninutului Facebook

40

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.

41

Lista tabelelor
Tabel 1 : Uniti vndute i cote de pia T4 2013
Tabel 2 : Versiuni Android
Tabel 3 : Pachete prezente in SDK Android

Lista figurilor
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur
Figur

1 : Arhitectura sistemului Android


2 : Utilizarea intent-urilor
3 : Ciclul de via al unui Activity
4 : Utilizarea fragmentelor
5 : Mediul de dezvoltare ADT
6 : SDK Manager
7: AVD Manager
8 Ferestrele aplicaiei
9 Folosirea UiLifecycleHelper
10 Apelarea altor Activity-uri
11 Metoda onStart() din PickFriendsActivity
12 Figura 3.5 Metoda startPickFriendsActivity() din MainActivity
13 Figura 3.6 Declarearea butoanelor clasei Select_preferences
14 Figura 3.7 Afisarea n ListView
15 Metoda parsePagesFromGRAPHResponse()
16 Crearea tabelelor din BD
17 Metoda Insert
18 Inserarea apelata in MainActivity
19 Extragerea din BD
20 Ierarhia View si ViewGroup
21 Custom & Library Views si Properties
22 Layout main.xml
23 Layout select_preferences
24 Layout activity_list_view
25 Resursa Strings.xml

42

ANEXE

Bibliografie

[1]
STEE2010 STEELE James , TO Nelson , The Android Developers
Cookbook Building
Application with the Android SDK , AddisonWesley , Crawfordsville , 2010

43

Vous aimerez peut-être aussi