licenta android facebook

60
Academia de Studii Economice din București Facultatea de Cibernetică, Statistică și Informatică Economică LUCRARE DE LICENȚĂ APLICAȚIE ANDROID PENTRU ANALIZA DATELOR PRELUATE DE PE PLATFORMA DE SOCIALIZARE FACEBOOK BUCUREȘTI 2014 Cuprins Introducere Context Obiectivul şi necesitatea lucrării Structura lucrării

Upload: pinguin011

Post on 24-Sep-2015

98 views

Category:

Documents


19 download

DESCRIPTION

Lucrare de licenta despre dezvoltarea unei aplicatii Android folosind conectarea la reteaua Facebook.

TRANSCRIPT

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