SlideShare a Scribd company logo
1 of 49
Download to read offline
Universitatea „Politehnica” din Bucureşti
Facultatea de Automatică şi Calculatoare, Catedra de Calculatoare




  PROIECT DE DIPLOMĂ
   Reţea de socializare bazată pe geolocalizare




                          Absolvent:
                       Vlad-Ştefan Petre
                      vlad@vladpetre.com


                     Coordonatori Ştiinţifici:
  Prof. Dr. Ing. Nicolae Ţăpuş     As. Drd. Ing. Alexandru Olteanu
      nicolae.tapus@cs.pub.ro      alexandru.olteanu@cti.pub.ro


                      Bucureşti, România
                          Iulie 2011
Abstract




Telefoanele mobile au apărut din nevoia oamenilor de a fi mereu în contact
unii cu alţii. Pe măsură ce capabilităţile acestor dispozitive au evoluat,
oamenii au început să folosească tot mai mult, prin intermediul aplicaţiilor,
servicii de socializare online precum Facebook™ sau Twitter™ pentru a
comunica. Lucrarea de faţă îşi propune să prezinte o evoluţie firească a
acestui tip de servicii: o reţea de socializare bazată pe geolocalizare în timp
real adresată în primul rând celor ce doresc să fie în contact permanent cu
cei apropiaţi, denumită în continuare FriLoc.
Proiect de Diplomă
                                                                                              Reţea de socializare bazată pe geolocalizare




                                                      Cuprinsul lucrării

1    Introducere ..........................................................................................................1
 1.1 Problema abordată .......................................................................................................... 2
 1.2 Scopul proiectului .......................................................................................................... 2
 1.3 Conţinutul lucrării .......................................................................................................... 3
2 Noţiuni preliminare .............................................................................................4
 2.1 Platforma Android .......................................................................................................... 4
    2.1.1     Scurt istoric .......................................................................................................... 4
    2.1.2     Ce este Android? .................................................................................................. 4
    2.1.3     Arhitectura platformei Android ............................................................................ 5
 2.2 Aplicaţiile Android ......................................................................................................... 7
    2.2.1     Componentele unei aplicaţii ................................................................................. 8
       2.2.1.1     Activităţile..................................................................................................... 9
       2.2.1.2     Serviciile ....................................................................................................... 9
       2.2.1.3     Furnizorii de conținut .................................................................................... 9
       2.2.1.4     Receptorii de difuzare ................................................................................... 9
 2.3 Reţeaua Facebook ........................................................................................................ 10
    2.3.1     Scurt istoric ........................................................................................................ 10
    2.3.2     Ce este Facebook? .............................................................................................. 11
       2.3.2.1     Chat ............................................................................................................. 11
       2.3.2.2     Credite ......................................................................................................... 11
       2.3.2.3     Oferte .......................................................................................................... 11
       2.3.2.4     Mesaje şi căsuţa poştală .............................................................................. 11
       2.3.2.5     Reţele şi grupurile de prieteni ..................................................................... 12
       2.3.2.6     Peretele ........................................................................................................ 12
       2.3.2.7     Fluxul de ştiri .............................................................................................. 12
       2.3.2.8     Notificări ..................................................................................................... 12
       2.3.2.9     Evenimente ................................................................................................. 12
       2.3.2.10 Locuri .......................................................................................................... 12
    2.3.3     Platforma Facebook ............................................................................................ 13
3 Analiza principalelor soluţii similare existente .............................................. 14
 3.1 Facebook Places ........................................................................................................... 14
 3.2 Foursquare .................................................................................................................... 14
 3.3 Gowalla ........................................................................................................................ 15
 3.4 Google Latitude ............................................................................................................ 15
 3.5 SCVNGR ...................................................................................................................... 16
 3.6 Geomium ...................................................................................................................... 16
 3.7 Urbo .............................................................................................................................. 17
4 Descrierea FriLoc ............................................................................................. 18
 4.1 Aplicaţia client ............................................................................................................. 18
 4.2 Interfaţa de autentificare ............................................................................................... 18
 4.3 Ecranul principal .......................................................................................................... 19
 4.4 Serviciul din fundal ...................................................................................................... 21


                                                                    ii
Proiect de Diplomă
                                                                                          Reţea de socializare bazată pe geolocalizare




 4.5 Ecranul cu informaţii despre FriLoc ............................................................................ 21
 4.6 Ecranul cu setări ........................................................................................................... 22
 4.7 Ecranul cu notificări ..................................................................................................... 23
 4.8 Ecranul cu fluxul de ştiri .............................................................................................. 24
 4.9 Ecranul de tip hartă ...................................................................................................... 24
 4.10 Ecranul cu alerte pe locaţie .......................................................................................... 25
 4.11 Ecranul cu locaţiile de interes ...................................................................................... 26
 4.12 Ecranul cu prieteni ....................................................................................................... 27
 4.13 Ecranul cu evenimente ................................................................................................. 28
5 Proiectare şi implementare .............................................................................. 30
 5.1 Arhitectura platformei .................................................................................................. 30
 5.2 Interfaţa cu Platforma Facebook .................................................................................. 31
    5.2.1   Graph API .......................................................................................................... 31
    5.2.2   Autentificarea în platforma Facebook ................................................................ 32
    5.2.3   Exemple de cereri către API-ul Facebook .......................................................... 33
    5.2.4   Utilizatori de test ................................................................................................ 34
 5.3 Serviciul web ................................................................................................................ 35
 5.4 Aplicaţia client ............................................................................................................. 36
6 Testare şi evaluare ........................................................................................... 38
7 Concluzii şi posibilităţi de extindere............................................................... 40
9 Bibliografie ........................................................................................................ 41




                                                                 iii
Proiect de Diplomă
                                                                                           Reţea de socializare bazată pe geolocalizare




                                                       Listă de figuri

Figura 1: Ce este Android. ......................................................................................................... 5
Figura 2: Arhitectura platformei Android. ................................................................................. 5
Figura 3: Ecranul de autentificare ............................................................................................ 19
Figura 4: Ecranul principal ....................................................................................................... 20
Figura 5: Serviciul şi interfaţa grafică ...................................................................................... 21
Figura 6: Ecranul cu informaţii despre FriLoc ......................................................................... 22
Figura 7: Ecranul cu setări ....................................................................................................... 22
Figura 8: Ecranul cu notificări şi ecranul cu fluxul de ştiri ...................................................... 23
Figura 9: Ecranul de tip hartă ................................................................................................... 24
Figura 10: Ecranul cu alerte pe locaţie ..................................................................................... 25
Figura 11: Ecranul cu locaţii de interes .................................................................................... 26
Figura 12: Ecranul cu prieteni .................................................................................................. 27
Figura 13: Ecranul cu evenimente ............................................................................................ 29
Figura 14: Diagrama de arhitectură .......................................................................................... 30
Figura 15: Introspecţia obiectelor Facebook ............................................................................ 32
Figura 16: Permisiuni de acces în platforma Facebook ........................................................... 33
Figura 17: Publicarea unui mesaj pe pagina de profil a unui utilizator Facebook ................... 34
Figura 18: Iniţierea unei cereri de creare a unui cont de test Facebook ................................... 34
Figura 19: Exemplu de răspuns în urma creării unui cont de test Facebook............................ 35
Figura 20: Activarea modulului RewriteEngine în Apache ..................................................... 35
Figura 21: Permisiuni necesare aplicaţiei Android .................................................................. 37
Figura 22: Perspectiva DDMS din mediul de dezvoltare Eclipse ............................................ 38
Figura 23: Instrumente de testare disponibile în Android ........................................................ 39
Figura 24: Sigla FriLoc ............................................................................................................ 40




                                                                  iv
Proiect de Diplomă
                                                               Reţea de socializare bazată pe geolocalizare




                                 Notaţii şi abrevieri

FriLoc        Numele proiectului propus în lucrarea de faţă.

GPS           Global Positioning System              Sistem de Poziționare Globală
              Este un sistem global de navigație prin satelit și unde radio.

POI           Point of Interest                      Punct de Interes
              Este un punct specific unei locaţii geografice pe care cineva îl poate găsi ca
              fiind util sau interesant.

Georeminder   Alertă specifică unei anumite locaţii geografice. Este utilă în momentul în
              care utilizatorul doreşte să i se reamintească anumite informaţii specifice
              zonei în care se află.

API           Application Programming Interface
              Este vorba despre interfața dintre programe externe și un sistem sau o
              platformă, care stabilește în amănunt modul în care programele externe pot
              accesa (apela) serviciile sistemului sau a platformei respective.

Startup       Startup este termenul prin care sunt definite companiile aflate în primii doi
              ani de la înfiinţare.

REST          Representational State Transfer        Transfer Reprezentat prin Stări

HTTPS         Hypertext Transfer Protocol Secure
              Reprezintă protocolul HTTP încapsulat într-un flux SSL/TLS cu scopul de
              a se oferi o identificare criptată şi sigură la un server.

SSL           Secure Sockets Layer
TLS           Transport Layer Security
              SSL/TLS sunt protocoale criptografice ce permit comunicaţii sigure pe
              Internet.

URL           Uniform Resource Locator
              Adresă uniformă pentru localizarea resurselor.

JSON          JavaScript Object Notation
              Este un format text de reprezentare și interschimb de date între aplicații
              informatice, inteligibil pentru oameni, utilizat pentru reprezentarea
              obiectelor și a altor structuri de date,folosit în special pentru a transmite
              date prin rețea.



                                            v
Proiect de Diplomă
                                                                  Reţea de socializare bazată pe geolocalizare




1   Introducere
În ultimii ani, Internetul a cunoscut o creştere exponenţială la o scară globală. Acest fapt a
condus omenirea către o nouă eră, o eră a informaţiei, transformând astfel societatea umană
într-o societate informaţională. Odată cu această evoluţie, reţeaua World Wide Web a
cunoscut şi ea o transformare firească, o trecere de la Web 1.0 (Web-ul bazat pe hyperlink-
uri) la Web 2.0 (Web-ul social).

Aplicaţiile şi site-urile Web 2.0 au devenit adevărate platforme de colaborare, bazate pe
comunităţi, unde utilizatorii nu mai sunt doar simpli consumatori de conţinut, ci au devenit
chiar producători de conţinut. De asemenea, Web-ul 2.0 a dus la apariţia unor noi platforme
specifice de comunicare între oameni, platforme care se adresează în mod special relaţiilor
interumane personale (prieteniilor). Astfel au apărut reţelele de socializare online -
instrumente cu ajutorul cărora oamenii, deşi aflaţi la distanţe geografice considerabile, pot să
continue să comunice facil cu apropiaţii lor, pot să facă schimb de impresii, sau să se menţină
la curent cu ultimele noutăţi de acasă.

Globalizarea ne forţează să fim mai rapizi, să căpătăm mobilitate şi să călătorim mai mult.
Acest lucru a condus către o dezvoltare tehnologică accelerată a dispozitivelor mobile (laptop-
uri, tablete, telefoane mobile inteligente), de care am ajuns să fim tot mai dependenţi în viaţa
de zi cu zi, atât pe plan profesional, cât şi pe plan personal.

Odată cu expansiunea Internetului, cu dezvoltarea tehnologică a dispozitivelor mobile şi a
reţelelor operatorilor de telefonie mobilă, precum şi cu creşterea tot mai mare a numărului de
utilizatori ai reţelelor de socializare online [1], acestea din urmă au început să fie tot mai des
accesate de pe telefoane mobile inteligente conectate la Internet [2].

Însă, tot acest melanj de tehnologie, socializare, Internet şi mobilitate a condus către apariţia
unei noi forme de reţea de socializare. Este vorba de reţelele de socializare online, bazate pe
geolocaţia utilizatorilor, dedicate spre a fi accesate prin intermediul terminalelor mobile
inteligente, dotate cu senzori de localizare globala (GPS - Global Positioning System) şi acces
la Internet.

Conform unui raport publicat de ComScore pe data de 12 mai 2011, aproximativ unul din
cinci utilizatori de telefoane inteligente (engleză: smartphones) folosesc servicii bazate pe
geolocalizare de tipul checkin, în genul Foursquare sau Gowalla. Tot conform acestui raport,
aproximativ 16.7 milioane de utilizatori de telefonie mobilă au folosit acest tip de servicii în
martie 2011. [3]




                                                1
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




1.1   Problema abordată
Majoritatea reţelelor de socializare online (inclusiv cele bazate pe geolocaţia utilizatorilor) din
ziua de astăzi sunt orientate pe amiciţiile dintre utilizatori, pe atingerea unui număr cât mai
mare de legături superficiale între utilizatori, şi nu pe cultivarea legăturile strânse dintre
aceştia (cum sunt prieteniile adevărate). De asemenea, principalele reţele de socializare
actuale încurajează utilizatorul să partajeze cât mai multe informaţii cu cât mai mulţi
utilizatori (de multe ori, fiind vorba de prieteni pe care utilizatorul nici măcar nu îi cunoaşte
personal).

De asemenea, majoritatea reţelelor de socializare online bazate pe geolocaţia utilizatorilor îi
încurajează pe aceştia să îşi facă publică prezenţa într-un anumit punct de interes (muzeu,
cafenea, etc.) la un anumit moment de timp (checkin). Problema apare în momentul în care
informaţia respectivă devine expirată. Spre exemplu, după o oră de stat într-o cafenea, deşi
utilizatorul părăseşte locaţia respectivă, informaţia despre prezenţa sa în acel punct de interes
rămâne înscrisă, deşi nu (mai) interesează pe nimeni.

1.2   Scopul proiectului
Prin lucrarea de faţă, doresc să abordez problema diferit. Astfel, lucrarea propune dezvoltarea
unei reţele de socializare online bazată pe geolocalizare în timp real şi dedicată accesării de pe
un dispozitiv mobil dotat cu sistem de operare Android: FriLoc. Soluţia este puternic orientată
pe prieteniile strâns legate şi apropiate dintre utilizatori, acest lucru însemnând că locaţia în
timp real a utilizatorului va fi disponibilă doar pentru câţiva cei mai buni prieteni ai acestuia.

De asemenea, soluţia mai propune ca utilizatorii înscrişi în această reţea să aibă posibilitatea
de a interacţiona cu prietenii lor prin mesaje, de a consulta locaţia curentă a acestora pe hartă,
de a crea evenimente destinate grupului respectiv de prieteni, de a consulta punctele de interes
din zona în care se află aceştia la momentul respectiv, precum şi de a plasa georeminder-e pe
hartă.

În fine, soluţia de faţă mai propune şi integrarea cu cea mai mare reţea de socializare online la
ora actuală: Facebook [1]. Scopul este ca un nou utilizator să nu fie nevoit să îşi creeze un
cont în această nouă reţea, ci să se folosească de unul actual, deja populat cu informaţii
precum nume sau adresă de e-mail, pe baza căruia să se facă autentificarea. De asemenea,
integrarea cu Facebook implică şi alte avantaje, cum ar fi: posibilitatea de a selecta prietenii
cei mai apropiaţi cu care utilizatorul va interacţiona în reţeaua FriLoc din lista de prieteni pe
care acesta îi are în reţeaua Facebook, promovarea unui eveniment creat în reţeaua FriLoc pe
reţeaua Facebook, şi nu în ultimul rând, popularea bazei de date cu locaţii de interes FriLoc pe
baza informaţiilor culese din reţeaua Facebook.




                                                2
Proiect de Diplomă
                                                                  Reţea de socializare bazată pe geolocalizare




1.3   Conţinutul lucrării
Lucrarea de faţă este împărţită în 7 părţi, după cum urmează:

Capitolul 1: Introducere
     Capitolul 1 oferă o prezentarea generală a proiectului, a problemei abordate precum şi a
     scopului acestuia.

Capitolul 2: Noţiuni preliminare
     Capitolul 2 prezintă informaţii generale şi noţiuni teoretice cu privire la dezvoltarea
     aplicaţiilor pe platforma Android, precum şi a API-ului reţelei Facebook. De asemenea,
     capitolul mai prezintă şi o scurtă istorie a celor două.

Capitolul 3: Analiza soluţiilor existente
     Capitolul 3 propune un studiu detaliat cu privire la principalele soluţii similare existente
     pe piaţă la ora actuală. O evaluare a acestor soluţii similare existente scoate în evidenţă
     aspecte ce pot fi îmbunătăţite, motivând astfel prezenta lucrare.

Capitolul 4: Descrierea reţelei FriLoc
     Capitolul 4 oferă o scurtă introducere şi o descriere a reţelei de socializare online
     FriLoc. De asemenea, acest capitol oferă şi o descriere a aplicaţiei Android din punctul
     de vedere al utilizatorului, bazată pe scenarii de utilizare.

Capitolul 5: Proiectare şi implementare
     Capitolul 5 prezintă detalii cu privire la arhitectura reţelei şi implementarea clientului de
     Android, precum şi a serviciului web.

Capitolul 6: Testare şi evaluare
     Capitolul 6 oferă câteva aprecieri legate de performanţă.

Capitolul 7: Concluzii şi posibilităţi de extindere
     Capitolul 7 încheie această lucrare, prezentând un scurt rezumat însoţit de concluzii şi
     câteva posibilităţi de extindere.




                                                3
Proiect de Diplomă
                                                                 Reţea de socializare bazată pe geolocalizare




2     Noţiuni preliminare
În acest capitol doresc să introduc câteva aspecte generale cu privire la platforma Android şi
să detaliez sumar procesul de scriere de aplicaţii pentru această platformă. De asemenea, tot în
acest capitol doresc să prezint şi câteva concepte generale legate de accesarea API-ului reţelei
Facebook.

2.1    Platforma Android
În acest subcapitol doresc să ofer câteva informaţii de bază legate de platforma Android,
informaţii menite pe de-o parte să familiarizeze cititorul cu această platformă, iar pe de altă
parte să scoată în evidenţă avantajele platformei datorate în mare parte flexibilităţii pe care o
oferă, motivând astfel alegerea făcută.

2.1.1 Scurt istoric
În anul 2003, Andy Rubin, Rich Miner, Nick Sears şi Chris White pun bazele unui startup,
denumit Android, Inc. Cei 3 îşi propuseseră să dezvolte software pentru dispozitive mobile
inteligente, care să ţină cont atât de preferinţele utilizatorului cât şi de locaţia acestuia.

În anul 2005, gigantul Google cumpără această mică companie, reuşind să îi convingă pe
fondatori să rămână sa lucreze în continuare la proiect. Echipa reuşeşte astfel să dezvolte o
platformă destinată dispozitivelor mobile, bazată pe kernel-ul Linux. Între timp, încep să
apară speculaţii cu privire la o posibilă intrare a gigantului Google pe piaţa dispozitivelor
mobile.

Pe data de 5 noiembrie 2007, este înfiinţat Open Handset Alliance, un consorţiu ce include
mai multe companii precum Broadcom Corporation, Google, HTC, Intel, LG, Marvell,
Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T-
Mobile şi Texas Instruments. Scopul acestui consorţiu era să dezvolte standarde deschise
pentru dispozitive mobile.

Începând cu data de 21 octombrie 2008, Android este licenţiat ca software cu sursă deschisă.
Astfel, majoritatea componentelor sistemului se află sub licenţă Apache, doar câteva aflându-
se sub licenţă GPL [4].

2.1.2 Ce este Android?
Android este o stivă software, o platformă pentru dispozitive mobile care include un sistem de
operare, middleware-ul şi aplicaţii cheie [5].

Printre trăsăturile de bază ale platformei putem aminti:
   arhitectură modulară pentru aplicaţii proiectată special pentru a permite reutilizarea de
      componente;
   maşină virtuală Dalvik optimizată pentru dispozitive mobile;


                                               4
Proiect de Diplomă
                                                                 Reţea de socializare bazată pe geolocalizare




    bază de date SQLite pentru a permite stocarea structurată de date;
    grafică optimizată atât 2D cât şi 3D, bazată pe OpenGL ES 1.0;
    browser integrat pentru navigarea pe site-uri web bazat pe motorul cu sursă deschisă
     WebKit;
    suport pentru diferite formate media audio şi video cum ar fi MPEG4, H.264, MP3,
     AAC, AMR, JPG, PNG, GIF;
    suport pentru telefonie GSM;
    suport pentru Bluetooth, EDGE, 3G şi WiFi;
    suport pentru cameră foto, GPS, busolă şi accelerometru;
    suport bogat pentru dezvoltarea aplicaţiilor ce include un emulator, instrumente pentru
     depanare a codului, instrumente pentru analiză de performanţă, precum şi o extensie
     pentru mediul de dezvoltare cu sursă deschisă Eclipse.




                                  Figura 1: Ce este Android.

2.1.3 Arhitectura platformei Android




                           Figura 2: Arhitectura platformei Android.

                                              5
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




În cele ce urmează, voi prezenta succint componentele prezentate în figura de mai sus.

Orice dispozitiv mobil dotat cu platformă Android va fi livrat împreună cu un set de aplicaţii
de bază precum un client de email, un program pentru gestiunea mesajelor scurte de tip SMS,
un program de tip calendar, un browser web şi un program pentru gestiunea contactelor. Toate
aplicaţiile Android sunt scrise în limbajul Java.

Deoarece Android este o platformă deschisă, dezvoltatorii au posibilitatea de a crea aplicaţii
bogate în conţinut şi inovative în idei. Astfel, dezvoltatorii pot să capete acces la hardware-ul
dispozitivului, la informaţii cu privire la locaţia dispozitivului, la serviciile care rulează în
fundal, pot sa adauge notificări în bara de status a sistemului (engleză: Status Bar) şi multe
altele.

Dezvoltatorii au acces complet la acelaşi API al framework-ului la care au acces şi aplicaţiile
de bază ale platformei. Arhitectura platformei a fost gândită de aşa natură încât componentele
să poată fi reutilizate, astfel că orice aplicaţie îşi poate face publice capabilităţile şi poate fi
accesată de către alte aplicaţii. Acelaşi mecanism permite ca componentele să poată fi
înlocuite de utilizator.

La baza tuturor aplicaţiilor stă un set întreg de servicii şi sisteme, printre care:
   un set bogat şi extensibil de componente grafice de tip View cum ar fi liste, tabele,
     butoane sau câmpuri de text, cu ajutorul cărora se pot construi interfeţe grafice bogate;
   furnizori de conţinut (engleză: Content Providers) ce permit aplicaţiilor să acceseze date
     ale altor aplicaţii (spre exemplu accesarea listei de contacte din aplicaţia Contacte),
     precum şi publicarea propriilor date spre a fi accesate de către celelalte aplicaţii;
   un manager de resurse (engleză: Resource Manager) ce facilitează accesul la resurse de
     tip non-cod cum ar fi fişiere ce definesc aspectul interfeţei grafice, sau şiruri de
     caractere localizate;
   un manager de notificări (engleză: Notification Manager) ce permite tuturor aplicaţiilor
     să afişeze mesaje de atenţionare sau de informare în bara de status (engleză: Status Bar)
     adresate utilizatorului;
   un manager al activităţilor (engleză: Activity Manager) ce gestionează durata de viaţă a
     aplicaţiilor şi facilitează o stivă de navigare comună.

Platforma Android include un set bogat de biblioteci C/C++ folosite de numeroase
componente ale sistemului. Accesul către aceste biblioteci pentru dezvoltatori este facilitat de
către framework-ul de aplicaţii.

Dintre bibliotecile de bază putem aminti:
  biblioteca de bistem C – o derivare BSD a bibliotecii standard C (libc), optimizată
      pentru dispozitivele încorporate bazate pe Linux;




                                                 6
Proiect de Diplomă
                                                                  Reţea de socializare bazată pe geolocalizare




     biblioteci media – bazate pe OpenCORE; aceste biblioteci oferă suport pentru redarea şi
      înregistrarea a numeroase formate audio şi video, dintre care putem aminti: MPEG4,
      H.264, MP3, AAC, AMR, JPG şi PNG;
     managerul de suprafeţe (engleză: Surface Manager) – gestionează accesul la
      subansamblele afişajului grafic şi facilitează compunerea imaginilor prin suprapunerea
      de straturi compozite 2D sau 3D provenite din diferite aplicaţii;
     LibWebCore – pune la dispoziţie un motor modern de randare a paginilor web, integrat
      atât în navigatorul web, cât şi în componenta grafică ce poate fi folosită în cadrul
      aplicaţiilor pentru a afişa pagini web;
     SGL – motorul ce gestionează grafica 2D;
     biblioteci 3D – implementate pe baza API-ului OpenGL ES 1.0; aceste biblioteci
      utilizează fie accelerarea 3D în hardware, acolo unde aceasta este disponibilă, fie
      accelerarea 3D efectuată în software puternic optimizată.
     FreeType – folosită pentru a randa fonturi bazate atât pe grafică vectorială cât şi pe
      grafică de tip raster;
     SQLite – o bază de date flexibilă şi puternic optimizată din punct de vedere al
      consumului de resurse, disponibilă pentru toate aplicaţiile.

De asemenea, platforma Android mai pune la dispoziţie un set de biblioteci de bază ce expun
majoritatea funcţionalităţilor prezente în bibliotecile standard Java. Dacă tot am atins acest
aspect, este bine de precizat faptul că Android nu este Java!

Fiecare aplicaţie Android rulează în propriul său proces şi are propria sa instanţă în cadrul
maşinii virtuale Dalvik. Maşina virtuală Dalvik rulează fişiere executabile în format .dex, ce
sunt optimizate pentru a folosi cât mai puţin memoria. Maşina virtuală Dalvik se bazează pe
nucleul Linux pentru a gestiona firele de execuţie şi pentru a gestiona memoria la nivel
hardware.

Platforma Android este bazată pe nucleul Linux, versiunea 2.6, pentru accesul la servicii de
bază precum securitatea, gestiunea memoriei, gestiunea proceselor, stiva de reţea şi driverele.
De asemenea, nucleul acţionează ca un intermediar între hardware şi restul stivei software.

2.2   Aplicaţiile Android
Aplicaţiile Android sunt scrise în limbajul de programare orientat obiect Java. Uneltele din
cadrul SDK-ului Android sunt cele ce compilează codul Java (împreună cu alte fişiere tip
resursă necesare) într-un pachet Android. Prin pachet Android înţelegându-se un fişier
comprimat având extensia .apk. Tot ceea ce se află într-un astfel de fişier .apk este considerat
ca fiind o aplicaţie Android, iar acest fişier este cel ce este instalat pe dispozitive, pentru ca
acestea să poată rula aplicaţia respectivă.

Odată instalată pe un terminal mobil, fiecare aplicaţie Android trăieşte în propriul spaţiu de
memorie virtualizat – conceptul se numeşte sandboxing:


                                                7
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




     sistemul de operare Android este un sistem multi-utilizator bazat pe Linux, în care
      fiecare aplicaţie este reprezentată de un utilizator unic;
     în mod implicit, sistemul alocă fiecărei aplicaţii un identificator de utilizator Linux unic;
      acest identificator este cunoscut şi utilizat doar de către sistemul de operare, nu şi de
      către aplicaţie în sine;
     fiecare proces are propria sa maşină virtuală, astfel că codul fiecărei aplicaţii este
      executat în mod izolat faţă de celelalte aplicaţii;
     în mod implicit, fiecare aplicaţie rulează în cadrul propriului ei proces Linux. Sistemul
      de operare porneşte acest proces în momentul în care oricare dintre componentele
      aplicaţiei trebuie să ruleze. Procesul este oprit în momentul atunci când componenta
      respectivă îşi termină ciclul de viaţă, sau în momentul în care sistemul rămâne fără
      memorie RAM.

În acest fel, sistemul Android implementează principiul celui mai mic privilegiu. Acest
principiu forţează ca fiecare aplicaţie, în mod implicit, să aibă acces doar la componentele
necesare funcţionări ei corespunzătoare şi nimic mai mult. Acest mecanism asigură un mediu
sigur în care o aplicaţie nu poate accesa părţi ale sistemului pentru care nu a primit
permisiuni.

Totuşi, pentru a mări gradul de flexibilitate, au fost implementate şi mecanisme prin care o
aplicaţie poate partaja date cu alte aplicaţii, precum şi prin care o aplicaţie poate avea acces la
serviciile sistemului:
   este posibil ca două aplicaţii să poată împarţi acelaşi identificator de utilizator Linux, în
      acest fel, cele două aplicaţii având posibilitatea de a îşi accesa fişierele una alteia.
      Pentru a conserva resursele sistemului, aplicaţiile având acelaşi identificator de
      utilizator pot să ruleze în cadrul aceluiaşi proces Linux şi pot partaja aceeaşi maşină
      virtuală. În acest caz însă, este necesar ca aplicaţiile să fie semnate cu acelaşi certificat
      digital;
   o aplicaţie poate cere permisiunea de a accesa date stocate în sistem precum contactele
      utilizatorului, mesajele scurte de tip SMS, cardul de memorie SD, camera foto, interfaţa
      Bluetooth, precum şi multe altele. Toate cererile de permisiunii ale unei aplicaţii trebuie
      să fie aprobate de utilizator în momentul în care aceasta este instalată.

2.2.1 Componentele unei aplicaţii
Componentele sunt cărămizile unei aplicaţii Android. Fiecare componentă reprezintă o
metodă diferită prin care sistemul are acces la o aplicaţie. Însă nu toate componentele unei
aplicaţii facilitează accesul utilizatorului. De asemenea, fiecare componentă există ca o
entitate separată având un rol bine definit în cadrul întregii aplicaţii.

Sunt patru tipuri diferite de componente. Fiecare astfel de tip are un rol specific şi are un ciclu
de viaţă specific ce definește modul în care componenta este creată şi distrusă. În continuare
vom descrie cele patru componente.



                                                8
Proiect de Diplomă
                                                               Reţea de socializare bazată pe geolocalizare




2.2.1.1 Activităţile
O activitate reprezintă un singur ecran cu o singură interfață pentru utilizator. Spre
exemplu, o aplicație de email poate avea o activitate ce afișează lista de emailuri
necitite, o activitate în care se poate compune un nou mesaj email şi încă o activitate în
care se pot citi emailuri. Deşi activităţile lucrează una cu cealaltă pentru a crea o
experienţă coezivă pentru utilizator, fiecare este totuşi independentă faţă de celelalte.
Prin urmare, o altă aplicație poate porni oricare dintre aceste activităţi (evident, acest
lucru fiind posibil doar dacă aplicaţia iniţială permite acest lucru). Spre exemplu,
aplicaţia specifică camerei foto poate porni o activitate în cadrul aplicaţiei de email
pentru a compune un nou mesaj email având ca ataşament fotografia ce tocmai a fost
făcută.
2.2.1.2 Serviciile
Un serviciu este o componentă ce rulează în fundal şi are rolul de a efectua operaţii de
lungă durată sau poate duce la îndeplinire diferite sarcini pentru alte procese. Un
serviciu nu poate interacţiona în mod direct cu utilizatorul. Spre exemplu, un serviciu
poate să redea muzică în fundal, în timp ce utilizatorul navighează pe internet utilizând
o altă aplicaţie. Sau, un serviciu poate să preia date de la un serviciu web fără a bloca
interactivitatea utilizatorului cu o activitate. Un serviciu este întotdeauna pornit de către
o altă componentă. Spre exemplu, o activitate poate porni un serviciu şi poate
interacționa cu acesta.
2.2.1.3 Furnizorii de conținut
Un furnizor de conţinut gestionează un set de date partajat între diferite aplicaţii. O
aplicaţie poate stoca date în sistemul de fişiere, în baza de date SQLite, pe web, sau în
oricare alt spaţiu de stocare persistent la care are acces aplicaţia respectivă. Folosind
furnizorii de conţinut, şi alte aplicaţii pot citi sau scrie diferite date, cu condiţia ca acesta
să permită acest lucru. Spre exemplu, sistemul Android pune la dispoziţie un furnizor de
conţinut ce gestionează contactele utilizatorului. Prin urmare, orice aplicaţie, având
permisiunile corespunzătoare aprobate de către utilizator, poate să obţină sau să
modifice informaţii despre un anumit contact. Furnizorii de conţinut sunt de asemenea
utili pentru scrierea sau citirea datelor private ale aplicaţiei curente.
2.2.1.4 Receptorii de difuzare
Un receptor de difuzare este o componentă ce răspunde la anunţurile generale.
Majoritatea anunţurilor generale sunt emise de către sistem - spre exemplu, în momentul
în care ecranul se stinge, sau nivelul bateriei atinge un prag critic, sau o fotografie a fost
făcută, sistemul iniţiază un anunţ general. Aplicaţiile pot şi ele să iniţieze anunţuri
generale - spre exemplu, pentru a anunţa celelalte aplicaţii de faptul că anumite date au
fost descărcate de pe internet şi sunt acum disponibile spre a fi utilizate. Deşi receptorii
de difuzare nu prezintă o interfaţă cu utilizatorul, ei pot să genereze notificări în bara de
stare, pentru a alerta utilizatorul atunci când un eveniment de difuzare are loc. În
general, un receptor de difuzare este un fel de poartă de acces către alte componente.



                                            9
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




      Spre exemplu, folosind un receptor de difuzare, se poate porni un serviciu care să
      trateze evenimentul respectiv.

Un aspect unic al modului în care a fost gândit sistemul Android este reprezentat de
mecanismul unic prin care o aplicaţie poate porni o componentă a altei aplicaţii. Spre
exemplu, daca se doreşte ca utilizatorul să facă o fotografie utilizând camera foto, cel mai
probabil este o altă aplicaţie care se ocupă de aşa ceva, iar aplicaţia curentă se poate folosi de
acest lucru, în loc să se piardă timpul cu dezvoltarea unei activităţi care să se ocupa de acest
lucru. Astfel, pentru a prelua o fotografie de la camera foto, este necesar doar ca activitatea
din cadrul aplicaţiei camerei foto care are rolul de a fotografia. După ce utilizatorul a terminat
de fotografiat, poza respectivă este returnată aplicaţiei iniţiale pentru a fi folosită. Pentru
utilizator se creează astfel impresia că cele doua activităţi fac parte din aceeaşi aplicaţie,
realitatea fiind evident diferită.

În momentul în care sistemul trebuie sa pornească o componentă, el porneşte mai întâi un
proces specific acelei aplicaţii (asta dacă nu există un proces specific acelei aplicaţii care
rulează deja), iar apoi instanţiază clasele necesare acelei componente.

Deoarece sistemul rulează fiecare aplicaţie într-un proces separat, având permisiuni ce
restricţionează accesul către alte aplicaţii, o aplicaţie nu poate să activeze o componentă a
altei aplicaţii în mod direct. Sistemul însă, poate. Astfel că, pentru a activa o componentă
dintr-o altă aplicaţie, aplicaţia iniţială trebuie să înştiinţeze sistemul cu privire la intenţia pe
care o are şi anume aceea de a utiliza o componenta particulară. Odată recepţionată intenţia,
sistemul poate activa componenta respectivă.

2.3   Reţeaua Facebook
În acest subcapitol doresc să prezint structurat informaţii cu privire la reţeaua de socializare
Facebook, insistând pe câteva dintre caracteristicile sale de bază, precum şi pe descrierea API-
ului pus la dispoziţie dezvoltatorilor de aplicaţii Facebook.

2.3.1 Scurt istoric
La începutul anului 2003, Adam D’Angelo pe vremea aceea student la Institutul Tehnologic
Caltech din California, a creat o reţea de socializare rudimentară, experimentală, denumită
Buddy Zoo, ce a apucat să fie folosită de câteva sute de mii de utilizatori până când D’Angelo
s-a hotărât să o închidă. În vara acelui an, Mark Zuckerberg – prieten cu D’Angelo încă din
liceu, împreună cu nişte prieteni analizează succesul website-ului Buddy Zoo şi discută despre
viitorul reţelelor de socializare de pe Internet. În data de 28 octombrie 2003, Mark Zuckerberg
dezvoltă Facemash, un site ce compara seturi de câte două poze şi în care utilizatorii erau
rugaţi să o voteze pe cea mai bună [6].

Pe data de 4 februarie 2004, Mark Zuckerberg, student anul 2 la Harvard, lansează
Thefacebook. În 24 de ore, pe site s-au înregistrat aproximativ 1300 de utilizatori noi. La doar



                                                10
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




6 zile de la lansarea acestui website, Zuckerberg este acuzat de 3 colegi (Cameron
Winklevoss, Tyler Winklevoss şi Divya Narendra) cum că le-a furat ideea.

Deşi iniţial accesul în website era disponibil doar studenţilor de la Harvard (în prima lună
înregistrându-se peste jumătate dintre aceştia), în martie 2004 Facebook a fost deschis şi
pentru studenţii de la Universităţile Stanford, Columbia şi Yale. Expansiunea a continuat cu
şcolile din zona Boston, iar apoi cu toate universităţile din Statele Unite ale Americii, precum
şi Canada.

În vara anului 2004, Facebook este înfiinţată ca şi companie, iar antreprenorul Sean Parker
devine preşedinte. În iunie 2004, sediul companiei este mutat în Palo Alto, California. În
2005, compania a renunţat la articolul „The” din numele acesteia, achiziţionând domeniul
facebook.com.

În prezent, Facebook este cea mai mare reţea de socializare online, numărând peste 600 de
milioane de utilizatori! [1]

2.3.2 Ce este Facebook?
Pentru a înţelege mai bine ce este o reţea de socializare online, am decis ca în continuare să
prezint câteva dintre caracteristicile esenţiale ale celei mai mari reţele de socializare online:
Facebook. [7]
     2.3.2.1 Chat
      Caracteristică introdusă în aprilie 2008, permite utilizatorilor reţelei să comunice între ei
      în timp real, de tip mesagerie instant, unu la unu, sau în cadrul unui grup de prieteni.
      Între timp, clienţii consacraţi de tip mesagerie instant au început să ofere integrare cu
      Facebook şi implicit suport pentru această caracteristică. Protocolul pe baza căruia a
      fost dezvoltată această componentă este unul deschis şi se numeşte XMPP (Extensible
      Messaging and Presence Protocol).
     2.3.2.2 Credite
      Această caracteristică a fost introdusă în iulie 2010 şi reprezintă moneda virtuală din
      reţea. Utilizatorii pot cumpăra credite folosind bani reali. Ei pot folosi creditele astfel
      cumpărate pentru a achiziţiona diverse lucruri în jocurile sau aplicaţiile specifice acestei
      platforme.
     2.3.2.3 Oferte
      În data de 25 aprilie 2011, Facebook a anunţat un program pilot denumit Deals, ce urma
      să pună la dispoziţie un sistem prin care utilizatorii să poată achiziționa cupoane online
      cu reduceri la diferiţi comercianţi locali. Această caracteristică se vrea a fi un
      competitor direct al site-urilor de cumpărături sociale tip Groupon.
     2.3.2.4 Mesaje şi căsuţa poştală
      Încă de la înfiinţarea website-ului, utilizatorii au putut să îşi trimită mesaje electronice –
      similar serviciului de email. Un utilizator Facebook poate trimite un mesaj către oricâţi

                                                11
Proiect de Diplomă
                                                               Reţea de socializare bazată pe geolocalizare




prieteni de-ai săi la un moment dat. Fiecare utilizator are o căsuţă proprie de mesaje -
inbox.
2.3.2.5 Reţele şi grupurile de prieteni
Facebook permite ca utilizatorii să facă parte din diferite reţele şi grupuri de prieteni. Pe
baza grupurilor de prieteni, un utilizator îşi poate particulariza setările ce ţin de
intimitatea sa. De asemenea, grupurile sunt utile pentru a discuta şi a organiza
evenimente. Un utilizator nu poate face parte din mai mult de 300 de grupuri la un
moment dat.
2.3.2.6 Peretele
Peretele (engleză: Wall) este un spaţiu aflat pe pagina fiecărui utilizator şi permite ca
prietenii acestuia să îi lase un mesaj public. Muţi utilizatori folosesc această
caracteristică pentru a lăsa mesaje scurte unui alt utilizator (e.g. un mesaj cu urări în
cazul unei aniversări).
2.3.2.7 Fluxul de ştiri
Această caracteristică a fost introdusă în septembrie 2006 şi permite utilizatorilor să
vadă ultimele noutăţi legate de activitatea prietenilor lor. Printre ştirile ce pot apărea în
acest flux se numără: schimbarea informaţiilor de pe profilul personal al unui prieten,
evenimente viitoare, zile de naştere, etc. De asemenea, în fluxul de ştiri mai pot apărea
şi discuţiile publice, purtate de utilizatori pe perete. Utilizatorii au totuşi posibilitatea de
a seta nivelul de informaţii care poate ajunge în acest flux de ştiri.
2.3.2.8 Notificări
Notificările sunt un mecanism prin care utilizatorii sunt alertaţi cu privire la evenimente
şi acţiuni importante ce au avut loc, cum ar fi: un prieten a comentat la o poză ce
aparţine utilizatorului curent, sau cineva a publicat un mesaj pe peretele utilizatorului
curent. Conceptul este similar cu cel din Android.
2.3.2.9 Evenimente
Evenimentele Facebook reprezintă o metodă prin care utilizatorii îşi pot ţine la curent
prietenii cu privire la viitoarele evenimente importante (e.g.: un concert, o reuniune,
etc.). Pentru a crea un eveniment, este necesar să se specifice un nume, o gazdă, tipul
evenimentului (public sau privat), ora şi data de începere precum şi ora la care
evenimentul se încheie, locaţia evenimentului şi o listă de invitaţi.
2.3.2.10 Locuri
Locurile (engleză: Places) au fost introduse în august 2010. Este o caracteristică prin
care un utilizator se poate înregistra ca fiind prezent într-o anumită locaţie folosind
telefonul mobil şi informându-şi astfel prietenii cu privire la prezenţa sa în locaţia
respectivă. Pentru ca un utilizator să poată să folosească această caracteristică, este
necesar să aibă un telefon cu Android, iOS sau BlackBerry şi să aibă instalată aplicaţia
oficială Facebook. Această caracteristică mai poate fi utilizată şi dacă este accesat site-
ul mobil Facebook folosind un navigator cu suport pentru HTML5.


                                           12
Proiect de Diplomă
                                                                     Reţea de socializare bazată pe geolocalizare




2.3.3 Platforma Facebook
Platforma Facebook pune la dispoziţie un API bogat şi instrumente diverse ce permit
dezvoltatorilor terţi să construiască şi să integreze propriile aplicaţii cu reţeaua de socializare.
Platforma a fost lansată în mai 2007 şi a evoluat de la dezvoltare exclusiv pe Facebook.com
până la dezvoltare pe dispozitive mobile. [8]

Platforma pune la dispoziţie un framework pentru dezvoltatorii de software pentru a crea
aplicaţii care să interacţioneze cu caracteristicile Facebook de bază.

Graph API este nucleul Platformei Facebook. Este componenta ce permite dezvoltatorilor să
scrie şi să citească date din reţea. Aceasta facilitează accesul la obiecte (e.g. utilizatori,
fotografii, evenimente, pagini) şi la legăturile dintre ele (prietenii, like-uri, fotografii marcate).
[9]

Mecanismul de autentificare permite aplicaţiilor scrise de terţi dezvoltatori să interacţioneze
cu Graph API în numele utilizatorilor Facebook şi facilitează un mecanism de single-sign-on
atât pe web cât şi pe aplicaţiile de tip desktop sau mobile.

Facebook Connect este un subset din API ce permite utilizatorilor Facebook să se autentifice
pe diferite site-uri sau aplicaţii folosindu-se de identitatea lor de pe Facebook. Odată conectaţi
în aceste terţe aplicaţii, utilizatorii au posibilitatea de a interacţiona cu prietenii lor, sau pot să
publice informaţii pe propriul perete. Dezvoltatorii pot folosi aceste servicii pentru a îi ajuta
pe utilizatori să se conecteze şi să partajeze informaţii cu prietenii lor din Facebook, atât
direct în reţea cât şi în afara acesteia, precum şi să crească rata de utilizare a aplicaţiilor lor.

Protocolul Open Graph permite dezvoltatorilor să îşi integreze propriile pagini web în graful
social. Odată integrate în graful social, aceste pagini capătă funcţionalităţi specifice oricărui
obiect din graf, precum o legătură către un profil sau un flux constant de actualizări pentru
utilizatorii conectaţi la respectivul obiect.




                                                  13
Proiect de Diplomă
                                                                  Reţea de socializare bazată pe geolocalizare




3     Analiza principalelor soluţii similare existente
Capitolul de faţă propune o analiză sumară a soluţiilor similare existente pe piaţă la ora
actuală, scoţând în evidenţă dezavantaje sau lipsuri ale acestor soluţii, motivând astfel
proiectul prezentat în lucrarea de faţă.

Principalele servicii de socializare online existente pe piaţă la ora actuală, dedicate spre a fi
accesate de pe dispozitive mobile şi care se bazează pe locaţia utilizatorului sunt: Facebook
Places, Foursquare, Gowalla, Google Latitude, SCVNGR, Geomium şi Urbo.

3.1    Facebook Places
Places este un serviciu oferit de către cea mai mare reţea de socializare online. A fost lansat în
august 2010 şi în prezent are peste 30 de milioane de utilizatori, deşi sunt mult mai puţini cei
ce folosesc acest serviciu în mod activ. [10]

Places este un serviciu disponibil pentru toţi utilizatorii reţelei Facebook, ce poate fi accesat
doar de pe un dispozitiv mobil, fie folosind aplicaţia oficială Facebook pentru Android, iOS
sau BlackBerry, fie accesând varianta mobilă a site-ului folosind un navigator cu suport
pentru HTML5.

Serviciul permite utilizatorilor să se înregistreze (engleză: checkin) într-un punct de interes
(engleză: POI – point of interest), informându-şi astfel prietenii cu privire la prezenţa sa în
acea locaţie. De asemenea, un utilizator are posibilitatea de a însemna (engleză: to tag)
anumiţi prieteni ca fiind şi ei prezenţi de asemenea în respectiva locaţie. [11]

O astfel de înregistrare apare pe fluxul de ştiri al prietenilor şi leagă această informaţie de un
anumit moment în timp. Spre deosebire de FriLoc, proiectul descris în amănunt în această
lucrare, Facebook Places nu este un serviciu în timp real.

3.2    Foursquare
În primul rând, Foursquare este un serviciu online de socializare, de tipul checkin, similar
Facebook Places, dar care a apărut cu un an înaintea acestuia, mai exact în anul 2009. În iunie
2010, această reţea de socializare a anunţat că a atins pragul psihologic de 10 milioane de
utilizatori. [12]

Pe lângă posibilitatea de a se înregistra ca fiind prezent într-un punct de interes sau de a
consulta cele mai recente înregistrări publicate de prietenii săi, un utilizator mai are
posibilitatea şi de a câştiga insigne (engleză: badges) speciale, în funcţie de cât de des
utilizează serviciul de înregistrare.

De asemenea, un utilizator poate să devină primar (engleză: mayor) al unei locaţii de interes
dacă are la activ cele mai multe înregistrări în acea locaţie în ultimele 60 de zile, În plus,

                                               14
Proiect de Diplomă
                                                                    Reţea de socializare bazată pe geolocalizare




utilizatorul mai are posibilitatea şi de a marca un punct de interes într-o listă de tip To Do ,
pentru a avea posibilitatea ca ulterior să îşi amintească de acesta.

Spre deosebire de FriLoc, nici acest serviciu de socializare nu oferă utilizatorului posibilitatea
de a consulta locaţia în timp real a prietenilor săi pe o hartă. De asemenea, FriLoc
implementează şi totodată extinde conceptul de listă tip To Do, oferind posibilitatea ca un
utilizator să fie automat alertat, dacă se află în zona geografică a punctului de interes. Această
caracteristică specifică FriLoc se numeşte Georeminder (română: alertă pe locaţie).

3.3   Gowalla
Gowalla este de asemenea un serviciu de socializare bazat pe geolocalizare de tipul checkin,
similar Foursquare şi Facebook Places. Reţeaua a luat fiinţă în anul 2007 şi în prezent numără
peste 1 milion de utilizatori. [13]

Similar Foursquare, serviciul încurajează utilizatorii să se înregistreze în locaţii de interes,
recompensându-i pe aceştia cu diferite obiecte virtuale. Spre deosebire de Foursquare, acest
serviciu permite utilizatorilor să îşi organizeze călătorii, grupând mai multe locaţii de interes
şi creând astfel o rută între acestea.

Începând cu luna martie a anului 2011, aplicaţia client de pe Android, ajunsă la versiunea a
treia, permite utilizatorilor să îşi publice înregistrarea (engleză: checkin) într-o locaţie şi pe
reţelele Foursquare, Facebook Places, Twitter şi Tumblr. De asemenea, noua versiune a
aplicaţiei mai permite utilizatorilor şi să consulte înregistrările pe care aceştia le-au efectuat în
cadrul celorlalte reţele de socializare bazate pe geolocalizare.

Similar Facebook Places şi Foursquare, nici acest serviciu de socializare bazat pe
geolocalizare nu este disponibil şi în varianta de timp real – o caracteristică de bază a
aplicaţiei FriLoc. In reţeaua FriLoc nu există nici conceptul de primar promovat de reţeaua
Foursquare, şi nici conceptul de obiecte virtuale câştigate în urma unui checkin – promovat
atât de Foursquare cât şi de Gowalla, deoarece caracteristica de înregistrare nu este una
fundamentală în cadrul proiectului de faţă, accentul punându-se pe posibilitatea de consulta
locaţiile prietenilor în timp real pe hartă.

3.4   Google Latitude
Google Latitude este un serviciu de socializare bazat pe geolocalizare lansat în februarie
2009, de către gigantul Google. Serviciul reprezintă o evoluţie a startup-ului ce oferea un
serviciu similar bazat pe geolocalizare, denumit Dodgeball, lansat în 2000 şi achiziţionat de
Google în 2005. [14]

Serviciul se vrea a fi o reţea de socializare bazată pe geolocalizare prin intermediul căreia
utilizatorii să poată avea posibilitatea de a vedea locaţia curentă a altor utilizatori Google pe
hartă (pe baza unei autorizări din partea acestora). [15]


                                                 15
Proiect de Diplomă
                                                                    Reţea de socializare bazată pe geolocalizare




Latitude are o bază de 9 milioane de utilizatori, dintre care doar aproximativ 3 milioane sunt
activi în reţea. [16]

Deşi Latitude posedă aceeaşi caracteristică de bază pe care o are şi FriLoc, în speţă
posibilitatea de a consulta pe hartă locaţia curentă a utilizatorilor, serviciul are o problemă
legată pe de-o parte de renumele companiei Google, iar pe de altă parte de o realitate
adevărată. Şi anume, Google nu este privită ca o companie orientată pe reţele de socializare.
Astfel că, o pătrime din totalul de utilizatori ai acestui serviciu au zero prieteni! [17]

Spre deosebire de Latitude, FriLoc se vrea a fi o veritabilă reţea de socializare, fapt pentru
care este puternic integrată cu cea mai mare reţea de socializare online: Facebook. De
asemenea, FriLoc prezintă în plus nişte caracteristici cu adevărat utile pentru utilizatori, cum
ar fi Georeminder-ele sau poziţionarea evenimentelor pe hartă.

3.5   SCVNGR
SCVNGR (a se citi scavenger - engleză), este o platformă de jocuri bazată pe geolocalizare
pentru dispozitive mobile. Aplicaţia are atât o componentă destinată companiilor, cât şi o
componentă destinată consumatorilor. Conform unor zvonuri datate din februarie 2011,
această reţea numără aproximativ 1 milion de utilizatori. [18]

Jucătorii sunt încurajaţi să viziteze locuri şi să accepte diferite provocări. Astfel, ei pot câştiga
puncte, sau pot obţine insigne speciale virtuale, precum şi reduceri în viaţa reală la diferiţi
comercianţi.

Similar Foursquare şi Gowalla, această reţea de socializare nu permite consultarea locaţiei
curente a utilizatorilor pe hartă.

3.6   Geomium
Geomium este o reţea de socializare bazată pe geolocalizare, lansată în septembrie 2010 cu
sediul la Londra. Din anumite puncte de vedere, Geomium este aplicaţia care seamănă cel mai
mult cu ceea ce FriLoc se doreşte a fi. Ambele reţele de socializare plasează pe hartă atât
diferite puncte de interes, cât şi evenimente sau prieteni în timp real.

De asemenea, nici FriLoc şi nici Geomium nu au implementat un mecanism de recompensare
a utilizatorului de genul Foursquare Badges sau Gowalla Items - asta deoarece, atât FriLoc,
cât şi Geomium, se doresc a fi aplicaţii cu adevărat folositoare pentru utilizatori. În schimb,
reţeaua permite plasarea pe hartă a diferitelor oferte localizate ale comercianților.

Totuşi există câteva diferenţe notabile care validează lansarea FriLoc într-un viitor apropiat.
În primul rând, trebuie menţionat faptul că Geomium este momentan disponibilă doar pe
telefoanele iPhone. În al doilea rând, FriLoc are un mare avantaj oferit de integrarea puternică


                                                 16
Proiect de Diplomă
                                                                    Reţea de socializare bazată pe geolocalizare




pe care o are cu Facebook-ul. De asemenea, FriLoc prezintă şi câteva caracteristici pe care
Geomium nu le are, printre care putem aminti Gereminder-ele.

În fine, diferenţa esenţială dintre cele două reţele de socializare constă în abordarea cu care
acestea tratează informaţiile cu privire la locaţia curentă a unui utilizator. Reţeaua Geomium a
primit numeroase critici cu privire la faptul că există posibilitatea de a accesa locaţia în timp
real a unor utilizatori cu care nu există nici o legătură anterior formată. Mai trebuie să
precizăm şi faptul că Geomium acoperă momentan doar Londra, pe când FriLoc, datorită
integrării cu Facebook, şi implicit cu Places, va fi disponibilă tuturor utilizatorilor Facebook
la nivel mondial încă din prima zi de la lansare. [19]

3.7   Urbo
Urbo este o aplicaţie de informare bazată pe geolocalizare, românească. Aplicaţia este extrem
de bogată în ceea ce priveşte numărul de locaţii de interes (baza de date are peste 100.000
firme), asta deoarece acest serviciu se vrea a fi un ghid al firmelor pe piaţa românească. Din
păcate însă, aplicaţia se concentrează doar pe 10 oraşe din România.

În cadrul aplicaţiei, un utilizator îşi poate face prieteni şi se poate înregistra (engleză: checkin)
într-o locaţie de interes, similar Foursquare şi Gowalla. Tot la capitolul similarităţi putem
menţiona şi faptul că un utilizator poate câştiga diverse insigne virtuale dacă foloseşte funcţia
de înregistrare în mod frecvent. Ca noutate, putem aminti faptul că aplicaţia permite
calcularea rutei optime între locaţia curentă a utilizatorului şi un punct de interes. [20]

Diferenţele dintre FriLoc şi Urbo sunt majore. În timp ce Urbo este o aplicaţie românească cu
un concept de înregistrare similar Foursquare şi Gowalla, FriLoc se concentrează pe
posibilitatea de a consulta locaţiile prietenilor în timp real. De asemenea, FriLoc, spre
deosebire de Urbo, se vrea a fi o veritabilă reţea de socializare cu multiple caracteristici
precum plasarea pe hartă atât a unor locaţii de interes, cât şi a unor evenimente sau a unor
geoalerte. De asemenea, reţeaua FriLoc este puternic integrată cu Facebook, cea mai mare
reţea de socializare online. [21]




                                                 17
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




4     Descrierea FriLoc
Acest capitol prezintă caracteristicile de bază ale proiectului tratat în această lucrare. FriLoc
este o reţea de socializare bazată pe geolocalizare al cărei scop principal este ca utilizatorii săi
să poată consulta locaţia geografică curentă a prietenilor lor.

În cele ce urmează, vom trata pe rând, fiecare caracteristică în parte.

4.1    Aplicaţia client
În primul rând, pentru a avea acces la toate funcţionalităţile puse la dispoziţie de reţeaua de
socializare FriLoc, utilizatorul are nevoie de un terminal cu platformă Android, cu senzor
GPS încorporat şi acces constant la Internet (preferabil, un pachet de date mobil de la
operatorul local de telefonie mobilă).

Pe acest terminal este necesar să se instaleze aplicaţia client FriLoc pentru a putea utiliza
efectiv funcţionalităţile puse la dispoziţie de această reţea de socializare online. Aplicaţia
client poate fi instalată pe dispozitive ce rulează sistemul Android, versiunile 2.1, 2.2, 2.3 şi
2.4. Coroborat cu ultimul studiu de piaţă, încheiat la data de 1 iunie 2011, cu privire la
distribuţia pe piaţă a diverselor versiuni ale sistemului Android, aplicaţia client FriLoc poate
fi instalată pe aproximativ 95% din totalul dispozitivelor dotate cu sistem Android. [22]

Aplicaţia este livrată sub forma unui singur fişier, un pachet *.apk specific acestei platforme
şi ocupă aproximativ 1 MB. Aplicaţia poate fi instalată doar în memoria telefonului. Deşi în
prezent aplicaţia nu se găseşte pe Android Market [23], acest lucru va fi posibil începând cu
toamna acestui an, când va fi lansată pe piaţă, gratuit.

4.2    Interfaţa de autentificare
La prima lansare a aplicaţiei, utilizatorul este întâmpinat de un ecran în care este prezentată
sigla FriLoc, termeni şi condiţii de utilizare, o căsuţă pe care utilizatorul trebuie să o bifeze
confirmând astfel faptul că a citit şi a luat la cunoştinţă şi că acceptă respectivii termeni, şi un
buton pentru iniţializarea procesului de autentificare.

Iniţial, butonul ce declanşează procesul de autentificare este dezactivat. Acesta devine activ
doar în momentul în care utilizatorul a bifat căsuţa de accept a termenilor. La apăsarea
butonului devenit activ, utilizatorul este rugat să îşi introducă datele de autentificare în reţeaua
Facebook. Deşi voi detalia procesul de autentifice în capitolul următor, menţionez totuşi şi
aici faptul că aplicaţia FriLoc nu stochează parola utilizatorului, în schimb aceasta fiind
verificată în mod direct doar de către platforma Facebook.

Am ales ca autentificarea în reţea să se poată realiza doar cu ajutorul unui cont de Facebook,
pe de-o parte deoarece FriLoc se adresează în primul rând consumatorilor de reţele de


                                                18
Proiect de Diplomă
                                                                      Reţea de socializare bazată pe geolocalizare




socializare online, iar pe de altă parte, s-a dorit încă de la bun început o integrare strânsă cu
reţeaua Facebook.




                                 Figura 3: Ecranul de autentificare


După introducerea datelor de autentificare Facebook, la prima autentificare în reţeaua FriLoc,
utilizatorul este rugat de către platforma Facebook să confirme permisiunile de acces cu
privire la acţiunile pe care FriLoc le poate întreprinde în Facebook în numele utilizatorului.
Vom intra în mai multe detalii cu privire la aceste permisiuni în capitolul următor.

Dacă autentificarea s-a realizat cu succes, utilizatorul va fi redirecționat către ecranul
principal al aplicaţiei, descris în secţiunea următoare.

4.3   Ecranul principal
Ecranul principal este de tip tablou (engleză: dashboard) şi este împărţit de aşa natură încât
utilizatorul să nu trebuiască să se chinuiască să se acomodeze cu interfaţa grafică, sau cu
găsirea vreunei opţiuni ascunse.

În partea de sus avem o bară de acţiuni (engleză: actionbar) prezentă în toate celelalte ecrane
ale aplicaţiei. Bara de acţiuni conţine sigla FriLoc împreuna cu trei iconiţe. În celelalte ecrane,
sigla poate fi acţionată printr-o atingere tactilă, scopul ei fiind de a readuce întotdeauna
utilizatorul înapoi la ecranul principal. Celelalte trei iconiţe sunt iconiţele pentru notificări,
pentru reîmprospătare şi pentru pornirea sau oprirea serviciului. Aceste trei iconiţe pot fi şi ele
la rândul lor acţionate. Iconiţa de reîmprospătare (engleză: refresh) are rolul de a actualiza cu
cele mai noi informaţii ecranul curent. Despre celelalte două iconiţe vom vorbi în secţiunile ce
urmează.

În jumătatea de sus a ecranului principal sunt afişate câteva informaţii cu privire la profilul
utilizatorului curent conectat în reţea. Acestea sunt poza de profil şi numele complet

                                                19
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




(informaţii preluate din Facebook), precum şi locaţia curentă afişată la nivel de oraş şi de
stradă.




                                    Figura 4: Ecranul principal


În jumătatea de jos se găsesc cele şase opţiuni de navigare posibile în continuare:
     Georeminders (română: alerte pe locaţie)
     Venues (română: locaţii de interes)
     Live Feed (română: fluxul ştiri)
     Events (română: evenimente)
     Friends (română: prieteni)
     Map (română: harta)
Le vom trata pe fiecare în parte în secţiunile următoare.

Ultimul element al acestui ecran, prezent de altfel şi în majoritatea celorlalte ecrane ale
interfeței, este titlul ecranului curent şi are atât rol informativ, cât şi rol estetic.

La apăsarea tastei Menu a telefonului, utilizatorului îi sunt prezentate încă trei opţiuni:
    Logout (română: ieşirea din cont)
    About (română: informaţii despre FriLoc)
    Settings (română: setări)

Prin apăsarea opţiunii Logout, utilizatorul este deconectat de la reţea şi, dacă doreşte să se
reconecteze, va fi nevoit să se autentifice din nou prin reintroducerea datelor de conectare
Facebook.

Despre celelalte două opţiuni vom vorbi în secţiunile următoare.


                                                20
Proiect de Diplomă
                                                                           Reţea de socializare bazată pe geolocalizare




4.4   Serviciul din fundal
Tot ce trebuie să facă utilizatorul pentru a îşi face cunoscută locaţia sa geografică curentă, în
timp real către prietenii săi, este să pornească serviciul din fundal. Acest serviciu poate fi
pornit sau oprit prin acţionarea iconiţei sale din bara de acţiuni prezentă în majoritatea
ecranelor aplicaţiei.

Cât timp serviciul rulează şi este activ, iconiţa sa din bara de acţiuni este de culoare albă şi
este prezentă iconiţa FriLoc în bara de status a sistemului. În momentul în care serviciul este
oprit, iconiţa sa devine de culoare roşie, iar iconiţa FriLoc dispare din bara de status a
sistemului.

Detalii despre cum funcţionează efectiv acest serviciu găsim în capitolul dedicat
implementării.




                                Figura 5: Serviciul şi interfaţa grafică


În fine, dacă serviciul este activ, utilizatorul capătă acces foarte facil la interfaţa grafica, dacă
derulează bara de status a sistemului şi acţionează câmpul pe care scrie FriLoc is running.
Această scurtătură va redirecţiona utilizatorul către ecranul ce conţine harta. Mai multe detalii
despre acest ecran, în cele ce urmează.

4.5   Ecranul cu informaţii despre FriLoc
Ecranul cu informaţii despre FriLoc (engleză: about) poate fi activat dacă se alege opţiunea
About din meniul ecranului principal. Acest ecran este compus din trei file:
    About (română: despre)
    Privacy Policy (română: politica de confidenţialitate)
    Terms of Service (română: termeni şi condiţii de utilizare a serviciului)



                                                  21
Proiect de Diplomă
                                                                  Reţea de socializare bazată pe geolocalizare




                          Figura 6: Ecranul cu informaţii despre FriLoc


4.6   Ecranul cu setări
În ecranul cu setări se poate ajunge prin apăsarea opţiunii corespunzătoare din meniul
ecranului principal. Setările din cadrul acestui ecran sunt împărţite în patru categorii, după
cum urmează:
     General Settings (română: setări generale)
     Notifications Alerts (română: )alerte la notificări
     Georeminders Alerts (română: alerte pe locaţii geografice)
     Friends Nearby Alerts (română: alerte la apropierea de prieteni)




                                   Figura 7: Ecranul cu setări




                                               22
Proiect de Diplomă
                                                                        Reţea de socializare bazată pe geolocalizare




În categoria General Settings utilizatorul are posibilitatea de a seta intervalul de timp la care
serviciul, cât timp este activ şi rulează în fundal, îi transmite serverului locaţia curentă a
utilizatorului. De asemenea, tot în cadrul acestei categorii, utilizatorul mai are şi posibilitatea
de a seta dacă serviciul să pornească sau nu odată cu pornirea telefonului, precum şi dacă
serviciul să menţină sa nu activă conexiunea WiFi atunci când telefonul este în modul sleep şi
nu are o conexiune de date activă.

În categoria Notifications Alerts, utilizatorul are posibilitatea de a activa sau dezactiva
propagarea notificărilor generale în bara de status a sistemului Android. Iar în cazul în care
sunt activate, utilizatorul poate configura modul de apariţie al acestora: cu sunet sau fără
sunet, cu vibrație sau fără vibraţie.

Categoriile Georeminders Alerts şi Friends Nearby Alerts au un set analog de setări. Diferenţa
ţine de faptul că Georeminders Alerts tratează alertele generate de Georemindere (română:
alerte pe locaţie geografică), iar Friends Nearby Alerts tratează alertele generate în momentul
în care utilizatorul se află în aceeaşi zonă în care se află şi unul sau mai mulţi prieteni de-ai
săi.

4.7   Ecranul cu notificări
Navigarea în ecranul cu notificări se poate realiza daca se acționează iconiţa corespunzătoare
din ActionBar (română: bara de acţiuni) – această bară regăsindu-se în aproape toate ecranele
aplicaţiei. De asemenea, direct în ecranul de notificări se mai poate ajunge şi dacă utilizatorul
selectează o notificare din bara de status a sistemului Android.

În acest ecran se regăsesc diverse informaţii, sub formă de listă de notificări ce ţin de
utilizatorul curent, precum cererile de prietenie, însemnări ale momentelor în care utilizatorul
s-a aflat în preajma unor prieteni de-ai săi sau în care un Georeminder a intrat în acţiune, etc.




                      Figura 8: Ecranul cu notificări şi ecranul cu fluxul de ştiri


                                                   23
Proiect de Diplomă
                                                                    Reţea de socializare bazată pe geolocalizare




4.8   Ecranul cu fluxul de ştiri
Ecranul Live Feeds (română: flux de ştiri) poate fi accesat doar din ecranul principal şi este
una din cele şase ramuri principale de navigare. Acest ecran este compus dintr-o listă în care
se regăsesc diverse informaţii partajate între utilizator şi prietenii săi.

Un utilizator poate publica un mesaj în acest flux de ştiri, mesajul având astfel ataşată locația
curentă a utilizatorului, iar acest mesaj putând fi urmărit de către toţi prietenii autorului. De
asemenea, în momentul în care un utilizator se înregistrează ca fiind prezent în cadrul unei
locaţii de interes, checkin-ul respectiv este automat publicat şi în cadrul acestui flux de ştiri.
Tot în cadrul acestui flux de ştiri mai pot apărea şi informaţii precum momentul în care un
utilizator se înregistrează ca participant în cadrul unui eveniment (engleză: attending).

4.9   Ecranul de tip hartă
Ecranul Map (română: harta) este a doua ramură din cele şase ramuri principale de navigare
prezente în ecranul principal. O altă modalitate de a consulta foarte uşor acest ecran se poate
realiza prin accesarea notificării permanente din bara de status a sistemului, cu privire la
faptul că serviciul de geolocalizare este activ şi rulează.




                                   Figura 9: Ecranul de tip hartă


În acest ecran, utilizatorul poate consulta locaţia geografică a următoarelor tipuri de elemente:
     Georeminders (română: alerte pe locații geografice)
     Venues (română: locaţii de interes)
     Events (română: evenimente)
     Friends (română: prieteni)

Printr-un click pe un astfel de element, în partea de sus a ecranului apare o bară neagră, cu
numele şi adresa elementului respectiv. De asemenea, pentru a consulta mai uşor elementele


                                                24
Proiect de Diplomă
                                                                     Reţea de socializare bazată pe geolocalizare




prezente pe hartă, se pot folosi cele două săgeţele de navigare din bara informativă, ce au rolul
de a parcurge această listă de elemente.

Pentru a popula harta cu elemente, este necesar ca utilizatorul să acţioneze butonul Load
Items. De asemenea, daca utilizatorul doreşte să consulte doar elemente de un anumit tip,
atunci el poate specifica acest lucru prin apăsarea tastei Menu şi alegerea unui tip de element,
sau All pentru a reveni la afişarea standard a tuturor elementelor pe hartă. De asemenea, tot în
cadrul acestui meniu regăsim şi opţiunea My Location (română: locţia mea), opţiune ce are
rolul de a centra harta pe locaţia curentă a utilizatorului marcată printr-un punct albastru.

În fine, în partea din stânga sus a ecranului se află o busolă, iar în ActionBar (română: bara de
acţiuni) a fost adăugată o iconiţă ce are rolul de a interschimba modul de vizualizare al hărţii
în modul satelit sau modul standard.

4.10 Ecranul cu alerte pe locaţie
Ecranul cu alerte pe locație (engleză: georeminders) este a cea de a treia ramură de navigare
dintre cele şase prezente în ecranul principal. În acest ecran se poate consulta lista de alerte pe
locaţii, ordonate ascendent în funcţie de distanţa dintre ele şi poziţia curentă a utilizatorului.




                               Figura 10: Ecranul cu alerte pe locaţie


În urma unui click pe un Georeminder, ecranul curent se schimbă, utilizatorului fiindu-i
prezentate informaţii respective cu privire la alerta respectivă. În acest ecran detaliat regăsim
următoarele informaţii cu privire la un georeminder:
     titlul alertei respective;
     o scurtă descriere;
     locaţia alertei sub formă de adresă;
     oraşul;


                                                 25
Proiect de Diplomă
                                                                     Reţea de socializare bazată pe geolocalizare




      distanţa până la poziţia geografică a alertei respective;
      locaţia de interes ataşată georeminder-ului curent, în situaţia în care aceasta a fost
       specificată;
      un buton ce deschide ecranul de tip hartă, având în centru georeminder-ul curent;
      un câmp ce poate fi bifat pentru a seta astfel dacă utilizatorul doreşte sau nu să fie
       înştiinţat atunci când se află în zona geografică a alertei curente.

Pentru a crea un nou georeminder, este suficient să se navigheze în ecranul cu lista de alerte
pe locaţii, să se apese tasta Menu a telefonului şi să se selecteze opţiunea Add Georeminder.
Se va deschide astfel un alt ecran, în care utilizatorul va putea să introducă date cu privire la
alerta respectivă.

4.11 Ecranul cu locaţiile de interes
Venues (română: locaţii de interes) este ce-a patra opţiune disponibilă pe ecranul principal al
aplicaţiei FriLoc. Ecranul prezintă cele mai apropiate 20 de locaţii de interes de poziţia
geografică curentă a utilizatorului, ordonate ascendent, în funcţie de distanţa la care se află
acestea.




                              Figura 11: Ecranul cu locaţii de interes


Pentru a consulta detalii cu privire la o locaţie de interes, este suficient să se efectueze un
click în ecranul Venues. În ecranul proaspăt deschis, Venue Details (română: detaliile unei
locaţii de interes), informaţiile ce pot fi prezentate cu privire la o locaţie de interes sunt:
     numele locaţiei curente;
     o scurtă descriere a locației curente;
     strada locaţiei curente;
     distanţa de la poziția geografică actuală a utilizatorului, până la poziţia geografică a
        locaţiei de interes;

                                                26
Proiect de Diplomă
                                                                     Reţea de socializare bazată pe geolocalizare




       numărul total de înregistrări pe care utilizatorii reţelei FriLoc l-au efectuat în acest
        venue de-a lungul timpului, precum şi posibilitatea ca utilizatorul curent să se
        înregistreze ca fiind prezent în locaţia curentă;
       numărul de utilizatori ai reţelei FriLoc prezenţi în locaţia respectivă, în momentul
        consultării acestor informaţii;
       posibilitatea de a consulta şi de a adăuga comentarii locaţiei curente;
       posibilitatea de a acorda un calificativ sub formă de Like (română: îmi place) sau
        Dislike (română: nu îmi place) locaţiei curente;
       un buton ce deschide ecranul de tip hartă, având în centru venue-ul curent;
       posibilitatea de a adăuga un georeminder locaţiei curente.

4.12 Ecranul cu prieteni
Ecranul Friends (română: prieteni) este cea de-a cincea opţiune din cele şase prezente pe
ecranul principal. În acest ecran, utilizatorul are acces la lista cu toţi prietenii cu care acesta s-
a conectat în reţeaua FriLoc. În cadrul acestei liste, prietenii sunt grupaţi în două categorii, în
funcţie de statutul pe care îl au aceştia în momentul vizualizării ecranului: online (română:
conectat) sau offline (română: deconectat). Un utilizator este considerat online dacă s-a
autentificat cu succes în reţea şi dacă are serviciul din fundal activat.




                                    Figura 12: Ecranul cu prieteni


Categoria utilizatorilor online este afişată prima în cadrul acestui ecran, iar în cadrul acestei
categorii, utilizatorii sunt ordonaţi ascendent, în funcţie de distanţa de la poziţia geografică a
utilizatorului la momentul consultării acestui ecran, şi poziţia fiecărui prieten în parte.
Utilizatorii din categoria offline sunt sortaţi alfabetic.




                                                 27
Proiect de Diplomă
                                                                    Reţea de socializare bazată pe geolocalizare




Mai multe detalii despre un prieten pot fi consultate prin efectuarea unei atingeri (engleză: to
tap) a ecranului în dreptul numelui acestuia. Se deschide astfel un nou ecran denumit Friend
Details (română: detaliile unui prieten) în care regăsim informaţii precum:
     numele complet al prietenului respectiv;
     poza de profil a acestuia, descărcată cu ajutorul API-ului Facebook;
     strada pe care se află acesta la momentul consultării acestui ecran;
     oraşul în care se află;
     distanţa geografică dintre utilizator şi prietenul respectiv;
     posibilitatea de a vedea locaţia de interes curentă, dacă prietenul a folosit funcția de
        checkin (română: înregistrare);
     posibilitatea de a deschide ecranul Map având punctul geografic în care se află
        prietenul curent în centrul hărţii.

De notat că informaţiile legate de locaţia geografică a unui prieten sunt disponibile doar dacă
atât utilizatorul curent cât şi prietenul respectiv sunt online în reţeaua FriLoc.

Dacă utilizatorul doreşte să se conecteze în reţeaua FriLoc cu un nou prieten pe care îl are
deja în reţeaua Facebook, atunci tot ce trebuie să facă este să apese tasta Menu a telefonului şi
să aleagă opţiunea Add Friend (română: adaugă prieten). Se va deschide astfel o nouă
fereastră, în care este prezentă o listă cu toţi prietenii pe care îi are acest utilizator în reţeaua
Facebook, dar cu care nu s-a conectat încă în reţeaua FriLoc. Pentru a uşura procesul de
selecţie al unui utilizator, în partea de sus a ecranului este prezent un câmp text, ce are rolul
de a filtra această listă în funcţie de şirul de caractere introdus.

După alegerea unui prieten cu care se doreşte conectarea, utilizatorului îi este prezentată o
fereastră de tip dialog prin care acesta este rugat să confirme acțiunea respectivă şi în care
acesta are posibilitatea de a îi scrie un mesaj destinatarului.

Pentru a şterge un prieten din reţeaua FriLoc este nevoie ca, din lista în care sunt afişaţi toţi
utilizatorii cu care există deja o conexiune creată, să se selecteze un timp mai îndelungat
persoana respectivă şi să se confirmare acţiunea respectivă în fereastra de confirmare de tip
dialog.

4.13 Ecranul cu evenimente
În fine, ultimul ecran despre care vom discuta în acest capitol este cel ce se ocupă cu afişarea
listei de evenimente. Acesta este cea de-a şasea şi totodată ultima opţiune principală
disponibilă în Dashboard (română: ecranul principal).

Elementul principal al acestui ecran îl constituie lista de evenimente ce vor avea loc în viitorul
apropiat, sortate în funcţie de distanţa geografică, raportat la poziţia curentă a utilizatorului.
Pentru a accesa detalii cu privire la un eveniment, este suficient să se atingă ecranul în dreptul



                                                 28
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




unui eveniment şi o nouă fereastră, intitulată Event Details (română: detaliile unui eveniment)
se va deschide.




                                Figura 13: Ecranul cu evenimente


În fereastra Event Details sunt prezente o serie de informaţii despre evenimentul respectiv,
precum:
     titlul evenimentului;
     o scurtă descriere;
     tipul evenimentului (public sau privat);
     gazda evenimentului;
     lista de invitaţi;
     răspunsul utilizatorului către acest eveniment:
            o Attending - dacă va participa la eveniment;
            o Not Attending - dacă nu doreşte să participe;
            o Maybe Attending - dacă utilizatorul nu a luat încă o decizie;
     adresa la care se va desfăşura evenimentul respectiv;
     oraşul în care va avea loc;
     distanţa geografică dintre utilizator şi eveniment;
     locaţia de interes în care va avea loc evenimentul, în cazul în care această informaţie a
        fost specificată;
     posibilitatea de a deschide ecranul Map având punctul geografic în care va avea loc
        evenimentul respectiv marcat şi centrat pe hartă.

De asemenea, utilizatorul are posibilitatea şi de a crea noi evenimente, oferind toate detaliile
necesare şi creând o listă de invitaţi.



                                              29
Proiect de Diplomă
                                                                     Reţea de socializare bazată pe geolocalizare




5     Proiectare şi implementare
În urma prezentării caracteristicilor reţelei FriLoc şi a tuturor funcţionalităţilor aplicaţiei
client, capitolul de faţă propune o continuare firească a celui anterior şi anume prezentarea
generală a arhitecturii platformei precum şi a principalelor caracteristici ale aplicaţiei client
din punct de vedere tehnic.

5.1    Arhitectura platformei
Datorită integrării puternice cu platforma Facebook, arhitectura are un caracter distribuit peste
reţeaua Internet. Din punct de vedere tehnic, pentru ca platforma să funcţioneze
corespunzător, a fost necesar să se conceapă următoarele componente:
     serviciu web (alcătuit din baza de date şi module de comunicaţie);
     interfaţa cu platforma Facebook;
     aplicaţie client pentru platforma Android ce va fi instalată pe terminalele compatibile
       ale utilizatorilor.




                                Figura 14: Diagrama de arhitectură


După cum se poate observa şi din diagrama de arhitectură, FriLoc este o reţea de socializare
online concepută a funcţiona peste reţeaua Internet. Cele trei componente majore, menționate
anterior, rulează pe maşini / dispozitive diferite, însă toate trei pot comunica la un moment dat
între ele. Modul de iniţiere al comunicaţiei dintre componente este:
     aplicaţie client Android –> API-ul platformei Facebook
     aplicaţie client Android –> API-ul serviciului web FriLoc

                                               30
Proiect de Diplomă
                                                                   Reţea de socializare bazată pe geolocalizare




          API-ul serviciului web FriLoc –> API-ul platformei Facebook

În cele ce urmează, vom detalia specificaţiile tehnice ale fiecărei componente în parte.

5.2       Interfaţa cu Platforma Facebook
Aşa cum am descris şi în subcapitolul 2.3.3, reţeaua de socializare online Facebook pune la
dispoziţia dezvoltatorilor un framework pentru a crea aplicaţii care să interacţioneze cu
caracteristicile Facebook de bază. Astfel, Platforma Facebook expune un API bogat, nucleul
platformei fiind reprezentat de un graf social denumit Graph API. Acesta facilitează accesul
la diverse obiecte, (e.g. utilizatori, fotografii, evenimente, pagini), precum şi la legăturile
dintre acestea (e.g. prietenii, like-uri, fotografii marcate).

API-ul Facebook este de tip REST (Representational State Transfer). Pentru a păstra
confidențialitatea informaţiilor, toate cererile către API se realizează peste protocolul HTTPS.
Adresa de bază a grafului social este https://graph.facebook.com. Toate informaţiile venite ca
răspuns în urma unei cereri respectă standardul JSON de reprezentare a datelor, iar toate
şirurile de caractere respectă standardul ISO-8601.

Pentru a avea acces la API-ul Facebook, este nevoie să se creeze o aplicaţie de tipul Facebook
(engleză: Facebook Application). Odată creată aplicaţia Facebook, acesteia i se va atribui un
ID unic şi se va genera un cod secret denumit App Secret. Acest este necesar pentru ca atât
SDK-ul pentru Android cât şi cel pentru PHP să se poată conecta la platformă.

5.2.1 Graph API
Fiecare obiect din cadrul acestui graf social are un ID unic. Proprietăţile unui obiect putând fi
accesate prin efectuarea unei cereri de forma https://graph.facebook.com/ID. Alternativ,
utilizatorii şi paginile speciale pot fi accesate folosindu-se numele unic al obiectului resepctiv,
în loc de ID. Câteva exemple de obiecte:
      obiectul utilizator Bret Taylor: https://graph.facebook.com/btaylor;
      obiectul paginii Coca-Cola: https://graph.facebook.com/cocacola;
      obiectul         evenimentului         Facebook       Developer       Garage         Austin:
        https://graph.facebook.com/251906384206;
      obiectul         fotografiei       de     profil     a     utilizatorului     petrevlad88:
        http://graph.facebook.com/petrevlad88/picture;
      obiectul unu checkin într-o pizzerie: https://graph.facebook.com/414866888308.

Exemplele date mai sus reprezintă informaţii publice, ce pot fi accesate fără a fi nevoie de o
autentificare anterioară în reţea. Majoritatea informaţiilor sunt însă private şi necesită o
autentificare în urma căreia se obţine o cheie de acces (engleză: access token). Mai multe
detalii despre mecanismul de autorizare al platformei, în secţiunea următoare.




                                                31
Proiect de Diplomă
                                                                    Reţea de socializare bazată pe geolocalizare




Pentru a vizualiza conexiunile dintre obiecte, este suficient să se acceseze un URL de forma
https://graph.facebook.com/ID/CONNECTION_TYPE. Câteva exemple de conexiuni
specifice:
     lista         de      prieteni      a       utilizatorului       curent     autentificat:
        https://graph.facebook.com/me/friends?access_token=... ;
     lista de evenimente la care utilizatorul cu ID-ul 1128563559 are acces:
        https://graph.facebook.com/1128563559/events?access_token=... ;
     lista           de        checkins         ale         utilizatorului      petrevlad88:
        https://graph.facebook.com/petrevlad88/checkins?access_token=... .

API-ul Facebook suportă introspecţia obiectelor, ceea ce permite vizualizarea tuturor
conexiunilor pe care un obiect le are. Pentru a folosi această facilitate, este necesar să se
adauge parametrul metadata=1 la URL-ul obiectului respectiv. Astfel, răspunsul cererii va fi
un obiect JSON ce va include o proprietate denumită metadata ce va lista toate conexiunile
suportate de obiectul respectiv.

Spre exemplu, pentru a vizualiza toate conexiunile pe care le are obiectul eveniment
Developer Garage, este suficient să se iniţieze o cerere la URL-ul:
https://graph.facebook.com/331218348435?metadata=1. Rezultatul returnat de API-ul
Facebook va fi:

  {
      "name": "facebook developer garage austin - sxsw edition",
      "metadata": {
        "connections": {
          "feed": "http://graph.facebook.com/331218348435/feed",
          "picture": "https://graph.facebook.com/331218348435/picture",
          "invited": "https://graph.facebook.com/331218348435/invited",
          "attending": "https://graph.facebook.com/331218348435/attending",
          "maybe": "https://graph.facebook.com/331218348435/maybe",
          "noreply": "https://graph.facebook.com/331218348435/noreply",
          "declined": "https://graph.facebook.com/331218348435/declined"
        }
      }
  }
                            Figura 15: Introspecţia obiectelor Facebook

5.2.2 Autentificarea în platforma Facebook
Aşa cum am menţionat anterior, majoritatea obiectelor din API necesită autentificare pentru a
fi accesate. Pentru a fi posibil acest lucru, este necesară o cheie de acces (engleză: access
token) specifică utilizatorului Facebook autentificat. După obţinerea acestei chei, se pot
autoriza        cereri      către        API        printr-un      apel       de       forma:
https://graph.facebook.com/220439?access_token=... .


                                                32
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare

More Related Content

What's hot

Conceptos basicos-de-internet
Conceptos basicos-de-internetConceptos basicos-de-internet
Conceptos basicos-de-internet
Juan Carl
 

What's hot (20)

El uso de las tic en la vida cotidiana.wmv
El uso de las tic en la vida cotidiana.wmvEl uso de las tic en la vida cotidiana.wmv
El uso de las tic en la vida cotidiana.wmv
 
las tic en la vida cotidiana prepa en linea
las tic en la vida cotidiana prepa en linealas tic en la vida cotidiana prepa en linea
las tic en la vida cotidiana prepa en linea
 
Tecnologia De Redes Pan
Tecnologia De Redes PanTecnologia De Redes Pan
Tecnologia De Redes Pan
 
Computer Network
Computer NetworkComputer Network
Computer Network
 
The importance of wi fi
The importance of wi fiThe importance of wi fi
The importance of wi fi
 
Tipos de Tecnologias Wireless
Tipos de Tecnologias WirelessTipos de Tecnologias Wireless
Tipos de Tecnologias Wireless
 
OSI model (Tamil)
OSI model (Tamil)OSI model (Tamil)
OSI model (Tamil)
 
Bluetooth Based Smart Sensor Network By SAIKIRAN PANJALA
Bluetooth Based Smart Sensor Network By SAIKIRAN PANJALABluetooth Based Smart Sensor Network By SAIKIRAN PANJALA
Bluetooth Based Smart Sensor Network By SAIKIRAN PANJALA
 
Diferencias entre las herramientas ofimáticas.
Diferencias entre las herramientas ofimáticas. Diferencias entre las herramientas ofimáticas.
Diferencias entre las herramientas ofimáticas.
 
Bernal morales jorgefelipe_m01s2ai3_pp
Bernal morales jorgefelipe_m01s2ai3_ppBernal morales jorgefelipe_m01s2ai3_pp
Bernal morales jorgefelipe_m01s2ai3_pp
 
Las tic en la sociedad
Las tic en la sociedadLas tic en la sociedad
Las tic en la sociedad
 
Las tic en la sociedad actividad integradora
Las tic en la sociedad actividad integradoraLas tic en la sociedad actividad integradora
Las tic en la sociedad actividad integradora
 
El uso de las tic en la comunidad
El uso de las tic en la comunidadEl uso de las tic en la comunidad
El uso de las tic en la comunidad
 
El uso de las tic en la vida cotidiana FBF
El uso de las tic en la vida cotidiana FBFEl uso de las tic en la vida cotidiana FBF
El uso de las tic en la vida cotidiana FBF
 
Computer Networks .ppt
Computer Networks .pptComputer Networks .ppt
Computer Networks .ppt
 
Networking
NetworkingNetworking
Networking
 
Dsl
DslDsl
Dsl
 
Wifi and its importance
Wifi and its importanceWifi and its importance
Wifi and its importance
 
Las tic en la sociedad
Las tic en la sociedadLas tic en la sociedad
Las tic en la sociedad
 
Conceptos basicos-de-internet
Conceptos basicos-de-internetConceptos basicos-de-internet
Conceptos basicos-de-internet
 

Viewers also liked

Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizareDiploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Vlad Petre
 
Aplicare Filtre pe Imagini
Aplicare Filtre pe ImaginiAplicare Filtre pe Imagini
Aplicare Filtre pe Imagini
Vlad Petre
 
Ziqi yangedp279unit4.1lessonplan
Ziqi yangedp279unit4.1lessonplanZiqi yangedp279unit4.1lessonplan
Ziqi yangedp279unit4.1lessonplan
ivy0112
 
גכדג
גכדגגכדג
גכדג
Y15B
 

Viewers also liked (13)

SSD pe intelesul tuturor!
SSD pe intelesul tuturor!SSD pe intelesul tuturor!
SSD pe intelesul tuturor!
 
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizareDiploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
 
[Curs Android] C08 - Intents & Broadcast Receivers (IPW 2011)
[Curs Android] C08 - Intents & Broadcast Receivers (IPW 2011)[Curs Android] C08 - Intents & Broadcast Receivers (IPW 2011)
[Curs Android] C08 - Intents & Broadcast Receivers (IPW 2011)
 
Aplicare Filtre pe Imagini
Aplicare Filtre pe ImaginiAplicare Filtre pe Imagini
Aplicare Filtre pe Imagini
 
[Curs Android] C06 - DDMS & LogCat (IPW 2011)
[Curs Android] C06 - DDMS & LogCat (IPW 2011)[Curs Android] C06 - DDMS & LogCat (IPW 2011)
[Curs Android] C06 - DDMS & LogCat (IPW 2011)
 
Ziqi yangedp279unit4.1lessonplan
Ziqi yangedp279unit4.1lessonplanZiqi yangedp279unit4.1lessonplan
Ziqi yangedp279unit4.1lessonplan
 
Nvidia Tegra
Nvidia TegraNvidia Tegra
Nvidia Tegra
 
גכדג
גכדגגכדג
גכדג
 
Brain Tumor Awareness Month
Brain Tumor Awareness MonthBrain Tumor Awareness Month
Brain Tumor Awareness Month
 
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIAOptimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
 
[Curs Android] C01 - Introducere (IPW 2011)
[Curs Android] C01 - Introducere (IPW 2011)[Curs Android] C01 - Introducere (IPW 2011)
[Curs Android] C01 - Introducere (IPW 2011)
 
The 3-D Secure Protocol
The 3-D Secure ProtocolThe 3-D Secure Protocol
The 3-D Secure Protocol
 
Disertatie retelele sociale, un nou canal de marketing pentru comertul online
Disertatie   retelele sociale, un nou canal de marketing pentru comertul onlineDisertatie   retelele sociale, un nou canal de marketing pentru comertul online
Disertatie retelele sociale, un nou canal de marketing pentru comertul online
 

Similar to Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare

Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Ecaterina Moraru (Valica)
 
Documentatie
DocumentatieDocumentatie
Documentatie
crytek111
 
Manual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-redManual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-red
Quickmobile
 
Manual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-redManual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-red
Quickmobile
 
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blueManual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Quickmobile
 
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blueManual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
8qisfgvs
 
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blueManual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Quickmobile
 
Suport de curs instruire utilizatori IMI PQ ianuarie 2013
Suport de curs instruire utilizatori IMI PQ ianuarie 2013Suport de curs instruire utilizatori IMI PQ ianuarie 2013
Suport de curs instruire utilizatori IMI PQ ianuarie 2013
IMI PQ NET Romania
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
ionut_ignatescu
 
Cicerone laurentiu popa teza doctorat
Cicerone laurentiu popa  teza doctoratCicerone laurentiu popa  teza doctorat
Cicerone laurentiu popa teza doctorat
adinachirila
 
Manual instructiuni-sony-ericsson-x8-black-e15i
Manual instructiuni-sony-ericsson-x8-black-e15iManual instructiuni-sony-ericsson-x8-black-e15i
Manual instructiuni-sony-ericsson-x8-black-e15i
Quickmobile
 
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Ecaterina Moraru (Valica)
 

Similar to Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare (20)

Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
 
Documentatie
DocumentatieDocumentatie
Documentatie
 
Manual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-redManual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-red
 
Manual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-redManual instructiuni-sony-ericsson-mt15i-neo-red
Manual instructiuni-sony-ericsson-mt15i-neo-red
 
Lucrare de licenta - Relaţii publice online automobile dacia sa
Lucrare de licenta  - Relaţii publice online automobile dacia saLucrare de licenta  - Relaţii publice online automobile dacia sa
Lucrare de licenta - Relaţii publice online automobile dacia sa
 
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blueManual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
 
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blueManual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
 
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blueManual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
Manual instructiuni-sony-ericsson-xperia-arc-lt15i-blue
 
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebTendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
 
Programare RSS Atom şi Podcast - cuprins şi introducere
Programare RSS Atom şi Podcast - cuprins şi introducereProgramare RSS Atom şi Podcast - cuprins şi introducere
Programare RSS Atom şi Podcast - cuprins şi introducere
 
Suport de curs instruire utilizatori IMI PQ ianuarie 2013
Suport de curs instruire utilizatori IMI PQ ianuarie 2013Suport de curs instruire utilizatori IMI PQ ianuarie 2013
Suport de curs instruire utilizatori IMI PQ ianuarie 2013
 
Limajul c
Limajul cLimajul c
Limajul c
 
Balica_Teza_E01.10
Balica_Teza_E01.10Balica_Teza_E01.10
Balica_Teza_E01.10
 
curs-ubuntu
curs-ubuntucurs-ubuntu
curs-ubuntu
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
 
Folosirea internetului de catre copii
Folosirea internetului de catre copiiFolosirea internetului de catre copii
Folosirea internetului de catre copii
 
Cicerone laurentiu popa teza doctorat
Cicerone laurentiu popa  teza doctoratCicerone laurentiu popa  teza doctorat
Cicerone laurentiu popa teza doctorat
 
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
 
Manual instructiuni-sony-ericsson-x8-black-e15i
Manual instructiuni-sony-ericsson-x8-black-e15iManual instructiuni-sony-ericsson-x8-black-e15i
Manual instructiuni-sony-ericsson-x8-black-e15i
 
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
 

More from Vlad Petre

Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.
Vlad Petre
 
Eneco: Energy Economy
Eneco: Energy EconomyEneco: Energy Economy
Eneco: Energy Economy
Vlad Petre
 
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLKickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Vlad Petre
 
[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific Paper[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific Paper
Vlad Petre
 
Critica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive ComputingCritica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive Computing
Vlad Petre
 
Critica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor VingeCritica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor Vinge
Vlad Petre
 
Voicenger - Software Architecture Document
Voicenger - Software Architecture DocumentVoicenger - Software Architecture Document
Voicenger - Software Architecture Document
Vlad Petre
 
Voicenger - Software Design Document
Voicenger - Software Design DocumentVoicenger - Software Design Document
Voicenger - Software Design Document
Vlad Petre
 
Voicenger - System Requirements Specification
Voicenger - System Requirements SpecificationVoicenger - System Requirements Specification
Voicenger - System Requirements Specification
Vlad Petre
 

More from Vlad Petre (19)

Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.
 
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
 
[Curs Android] C09 - Stocarea Datelor (IPW 2011)
[Curs Android] C09 - Stocarea Datelor (IPW 2011)[Curs Android] C09 - Stocarea Datelor (IPW 2011)
[Curs Android] C09 - Stocarea Datelor (IPW 2011)
 
[Curs Android] C07 - Liste (IPW 2011)
[Curs Android] C07 - Liste (IPW 2011)[Curs Android] C07 - Liste (IPW 2011)
[Curs Android] C07 - Liste (IPW 2011)
 
[Curs Android] C05 - Emulator (IPW 2011)
[Curs Android] C05 - Emulator (IPW 2011)[Curs Android] C05 - Emulator (IPW 2011)
[Curs Android] C05 - Emulator (IPW 2011)
 
[Curs Android] C04 - User Interface (IPW 2011)
[Curs Android] C04 - User Interface (IPW 2011)[Curs Android] C04 - User Interface (IPW 2011)
[Curs Android] C04 - User Interface (IPW 2011)
 
[Curs Android] C02 - Aplicatii (IPW 2011)
[Curs Android] C02 - Aplicatii (IPW 2011)[Curs Android] C02 - Aplicatii (IPW 2011)
[Curs Android] C02 - Aplicatii (IPW 2011)
 
Eneco: Energy Economy
Eneco: Energy EconomyEneco: Energy Economy
Eneco: Energy Economy
 
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLKickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
 
[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific Paper[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific Paper
 
Critica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive ComputingCritica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive Computing
 
Critica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor VingeCritica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor Vinge
 
Voicenger - Software Architecture Document
Voicenger - Software Architecture DocumentVoicenger - Software Architecture Document
Voicenger - Software Architecture Document
 
Voicenger - Software Design Document
Voicenger - Software Design DocumentVoicenger - Software Design Document
Voicenger - Software Design Document
 
Voicenger - System Requirements Specification
Voicenger - System Requirements SpecificationVoicenger - System Requirements Specification
Voicenger - System Requirements Specification
 
SIM Project: Optimizing a Benchmarking Tool
SIM Project: Optimizing a Benchmarking ToolSIM Project: Optimizing a Benchmarking Tool
SIM Project: Optimizing a Benchmarking Tool
 
The Bluetooth Protocol
The Bluetooth ProtocolThe Bluetooth Protocol
The Bluetooth Protocol
 
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
 
[IPW]FriLoc - Your Friends Locations
[IPW]FriLoc - Your Friends Locations[IPW]FriLoc - Your Friends Locations
[IPW]FriLoc - Your Friends Locations
 

Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare

  • 1. Universitatea „Politehnica” din Bucureşti Facultatea de Automatică şi Calculatoare, Catedra de Calculatoare PROIECT DE DIPLOMĂ Reţea de socializare bazată pe geolocalizare Absolvent: Vlad-Ştefan Petre vlad@vladpetre.com Coordonatori Ştiinţifici: Prof. Dr. Ing. Nicolae Ţăpuş As. Drd. Ing. Alexandru Olteanu nicolae.tapus@cs.pub.ro alexandru.olteanu@cti.pub.ro Bucureşti, România Iulie 2011
  • 2. Abstract Telefoanele mobile au apărut din nevoia oamenilor de a fi mereu în contact unii cu alţii. Pe măsură ce capabilităţile acestor dispozitive au evoluat, oamenii au început să folosească tot mai mult, prin intermediul aplicaţiilor, servicii de socializare online precum Facebook™ sau Twitter™ pentru a comunica. Lucrarea de faţă îşi propune să prezinte o evoluţie firească a acestui tip de servicii: o reţea de socializare bazată pe geolocalizare în timp real adresată în primul rând celor ce doresc să fie în contact permanent cu cei apropiaţi, denumită în continuare FriLoc.
  • 3. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Cuprinsul lucrării 1 Introducere ..........................................................................................................1 1.1 Problema abordată .......................................................................................................... 2 1.2 Scopul proiectului .......................................................................................................... 2 1.3 Conţinutul lucrării .......................................................................................................... 3 2 Noţiuni preliminare .............................................................................................4 2.1 Platforma Android .......................................................................................................... 4 2.1.1 Scurt istoric .......................................................................................................... 4 2.1.2 Ce este Android? .................................................................................................. 4 2.1.3 Arhitectura platformei Android ............................................................................ 5 2.2 Aplicaţiile Android ......................................................................................................... 7 2.2.1 Componentele unei aplicaţii ................................................................................. 8 2.2.1.1 Activităţile..................................................................................................... 9 2.2.1.2 Serviciile ....................................................................................................... 9 2.2.1.3 Furnizorii de conținut .................................................................................... 9 2.2.1.4 Receptorii de difuzare ................................................................................... 9 2.3 Reţeaua Facebook ........................................................................................................ 10 2.3.1 Scurt istoric ........................................................................................................ 10 2.3.2 Ce este Facebook? .............................................................................................. 11 2.3.2.1 Chat ............................................................................................................. 11 2.3.2.2 Credite ......................................................................................................... 11 2.3.2.3 Oferte .......................................................................................................... 11 2.3.2.4 Mesaje şi căsuţa poştală .............................................................................. 11 2.3.2.5 Reţele şi grupurile de prieteni ..................................................................... 12 2.3.2.6 Peretele ........................................................................................................ 12 2.3.2.7 Fluxul de ştiri .............................................................................................. 12 2.3.2.8 Notificări ..................................................................................................... 12 2.3.2.9 Evenimente ................................................................................................. 12 2.3.2.10 Locuri .......................................................................................................... 12 2.3.3 Platforma Facebook ............................................................................................ 13 3 Analiza principalelor soluţii similare existente .............................................. 14 3.1 Facebook Places ........................................................................................................... 14 3.2 Foursquare .................................................................................................................... 14 3.3 Gowalla ........................................................................................................................ 15 3.4 Google Latitude ............................................................................................................ 15 3.5 SCVNGR ...................................................................................................................... 16 3.6 Geomium ...................................................................................................................... 16 3.7 Urbo .............................................................................................................................. 17 4 Descrierea FriLoc ............................................................................................. 18 4.1 Aplicaţia client ............................................................................................................. 18 4.2 Interfaţa de autentificare ............................................................................................... 18 4.3 Ecranul principal .......................................................................................................... 19 4.4 Serviciul din fundal ...................................................................................................... 21 ii
  • 4. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 4.5 Ecranul cu informaţii despre FriLoc ............................................................................ 21 4.6 Ecranul cu setări ........................................................................................................... 22 4.7 Ecranul cu notificări ..................................................................................................... 23 4.8 Ecranul cu fluxul de ştiri .............................................................................................. 24 4.9 Ecranul de tip hartă ...................................................................................................... 24 4.10 Ecranul cu alerte pe locaţie .......................................................................................... 25 4.11 Ecranul cu locaţiile de interes ...................................................................................... 26 4.12 Ecranul cu prieteni ....................................................................................................... 27 4.13 Ecranul cu evenimente ................................................................................................. 28 5 Proiectare şi implementare .............................................................................. 30 5.1 Arhitectura platformei .................................................................................................. 30 5.2 Interfaţa cu Platforma Facebook .................................................................................. 31 5.2.1 Graph API .......................................................................................................... 31 5.2.2 Autentificarea în platforma Facebook ................................................................ 32 5.2.3 Exemple de cereri către API-ul Facebook .......................................................... 33 5.2.4 Utilizatori de test ................................................................................................ 34 5.3 Serviciul web ................................................................................................................ 35 5.4 Aplicaţia client ............................................................................................................. 36 6 Testare şi evaluare ........................................................................................... 38 7 Concluzii şi posibilităţi de extindere............................................................... 40 9 Bibliografie ........................................................................................................ 41 iii
  • 5. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Listă de figuri Figura 1: Ce este Android. ......................................................................................................... 5 Figura 2: Arhitectura platformei Android. ................................................................................. 5 Figura 3: Ecranul de autentificare ............................................................................................ 19 Figura 4: Ecranul principal ....................................................................................................... 20 Figura 5: Serviciul şi interfaţa grafică ...................................................................................... 21 Figura 6: Ecranul cu informaţii despre FriLoc ......................................................................... 22 Figura 7: Ecranul cu setări ....................................................................................................... 22 Figura 8: Ecranul cu notificări şi ecranul cu fluxul de ştiri ...................................................... 23 Figura 9: Ecranul de tip hartă ................................................................................................... 24 Figura 10: Ecranul cu alerte pe locaţie ..................................................................................... 25 Figura 11: Ecranul cu locaţii de interes .................................................................................... 26 Figura 12: Ecranul cu prieteni .................................................................................................. 27 Figura 13: Ecranul cu evenimente ............................................................................................ 29 Figura 14: Diagrama de arhitectură .......................................................................................... 30 Figura 15: Introspecţia obiectelor Facebook ............................................................................ 32 Figura 16: Permisiuni de acces în platforma Facebook ........................................................... 33 Figura 17: Publicarea unui mesaj pe pagina de profil a unui utilizator Facebook ................... 34 Figura 18: Iniţierea unei cereri de creare a unui cont de test Facebook ................................... 34 Figura 19: Exemplu de răspuns în urma creării unui cont de test Facebook............................ 35 Figura 20: Activarea modulului RewriteEngine în Apache ..................................................... 35 Figura 21: Permisiuni necesare aplicaţiei Android .................................................................. 37 Figura 22: Perspectiva DDMS din mediul de dezvoltare Eclipse ............................................ 38 Figura 23: Instrumente de testare disponibile în Android ........................................................ 39 Figura 24: Sigla FriLoc ............................................................................................................ 40 iv
  • 6. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Notaţii şi abrevieri FriLoc Numele proiectului propus în lucrarea de faţă. GPS Global Positioning System Sistem de Poziționare Globală Este un sistem global de navigație prin satelit și unde radio. POI Point of Interest Punct de Interes Este un punct specific unei locaţii geografice pe care cineva îl poate găsi ca fiind util sau interesant. Georeminder Alertă specifică unei anumite locaţii geografice. Este utilă în momentul în care utilizatorul doreşte să i se reamintească anumite informaţii specifice zonei în care se află. API Application Programming Interface Este vorba despre interfața dintre programe externe și un sistem sau o platformă, care stabilește în amănunt modul în care programele externe pot accesa (apela) serviciile sistemului sau a platformei respective. Startup Startup este termenul prin care sunt definite companiile aflate în primii doi ani de la înfiinţare. REST Representational State Transfer Transfer Reprezentat prin Stări HTTPS Hypertext Transfer Protocol Secure Reprezintă protocolul HTTP încapsulat într-un flux SSL/TLS cu scopul de a se oferi o identificare criptată şi sigură la un server. SSL Secure Sockets Layer TLS Transport Layer Security SSL/TLS sunt protocoale criptografice ce permit comunicaţii sigure pe Internet. URL Uniform Resource Locator Adresă uniformă pentru localizarea resurselor. JSON JavaScript Object Notation Este un format text de reprezentare și interschimb de date între aplicații informatice, inteligibil pentru oameni, utilizat pentru reprezentarea obiectelor și a altor structuri de date,folosit în special pentru a transmite date prin rețea. v
  • 7. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 1 Introducere În ultimii ani, Internetul a cunoscut o creştere exponenţială la o scară globală. Acest fapt a condus omenirea către o nouă eră, o eră a informaţiei, transformând astfel societatea umană într-o societate informaţională. Odată cu această evoluţie, reţeaua World Wide Web a cunoscut şi ea o transformare firească, o trecere de la Web 1.0 (Web-ul bazat pe hyperlink- uri) la Web 2.0 (Web-ul social). Aplicaţiile şi site-urile Web 2.0 au devenit adevărate platforme de colaborare, bazate pe comunităţi, unde utilizatorii nu mai sunt doar simpli consumatori de conţinut, ci au devenit chiar producători de conţinut. De asemenea, Web-ul 2.0 a dus la apariţia unor noi platforme specifice de comunicare între oameni, platforme care se adresează în mod special relaţiilor interumane personale (prieteniilor). Astfel au apărut reţelele de socializare online - instrumente cu ajutorul cărora oamenii, deşi aflaţi la distanţe geografice considerabile, pot să continue să comunice facil cu apropiaţii lor, pot să facă schimb de impresii, sau să se menţină la curent cu ultimele noutăţi de acasă. Globalizarea ne forţează să fim mai rapizi, să căpătăm mobilitate şi să călătorim mai mult. Acest lucru a condus către o dezvoltare tehnologică accelerată a dispozitivelor mobile (laptop- uri, tablete, telefoane mobile inteligente), de care am ajuns să fim tot mai dependenţi în viaţa de zi cu zi, atât pe plan profesional, cât şi pe plan personal. Odată cu expansiunea Internetului, cu dezvoltarea tehnologică a dispozitivelor mobile şi a reţelelor operatorilor de telefonie mobilă, precum şi cu creşterea tot mai mare a numărului de utilizatori ai reţelelor de socializare online [1], acestea din urmă au început să fie tot mai des accesate de pe telefoane mobile inteligente conectate la Internet [2]. Însă, tot acest melanj de tehnologie, socializare, Internet şi mobilitate a condus către apariţia unei noi forme de reţea de socializare. Este vorba de reţelele de socializare online, bazate pe geolocaţia utilizatorilor, dedicate spre a fi accesate prin intermediul terminalelor mobile inteligente, dotate cu senzori de localizare globala (GPS - Global Positioning System) şi acces la Internet. Conform unui raport publicat de ComScore pe data de 12 mai 2011, aproximativ unul din cinci utilizatori de telefoane inteligente (engleză: smartphones) folosesc servicii bazate pe geolocalizare de tipul checkin, în genul Foursquare sau Gowalla. Tot conform acestui raport, aproximativ 16.7 milioane de utilizatori de telefonie mobilă au folosit acest tip de servicii în martie 2011. [3] 1
  • 8. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 1.1 Problema abordată Majoritatea reţelelor de socializare online (inclusiv cele bazate pe geolocaţia utilizatorilor) din ziua de astăzi sunt orientate pe amiciţiile dintre utilizatori, pe atingerea unui număr cât mai mare de legături superficiale între utilizatori, şi nu pe cultivarea legăturile strânse dintre aceştia (cum sunt prieteniile adevărate). De asemenea, principalele reţele de socializare actuale încurajează utilizatorul să partajeze cât mai multe informaţii cu cât mai mulţi utilizatori (de multe ori, fiind vorba de prieteni pe care utilizatorul nici măcar nu îi cunoaşte personal). De asemenea, majoritatea reţelelor de socializare online bazate pe geolocaţia utilizatorilor îi încurajează pe aceştia să îşi facă publică prezenţa într-un anumit punct de interes (muzeu, cafenea, etc.) la un anumit moment de timp (checkin). Problema apare în momentul în care informaţia respectivă devine expirată. Spre exemplu, după o oră de stat într-o cafenea, deşi utilizatorul părăseşte locaţia respectivă, informaţia despre prezenţa sa în acel punct de interes rămâne înscrisă, deşi nu (mai) interesează pe nimeni. 1.2 Scopul proiectului Prin lucrarea de faţă, doresc să abordez problema diferit. Astfel, lucrarea propune dezvoltarea unei reţele de socializare online bazată pe geolocalizare în timp real şi dedicată accesării de pe un dispozitiv mobil dotat cu sistem de operare Android: FriLoc. Soluţia este puternic orientată pe prieteniile strâns legate şi apropiate dintre utilizatori, acest lucru însemnând că locaţia în timp real a utilizatorului va fi disponibilă doar pentru câţiva cei mai buni prieteni ai acestuia. De asemenea, soluţia mai propune ca utilizatorii înscrişi în această reţea să aibă posibilitatea de a interacţiona cu prietenii lor prin mesaje, de a consulta locaţia curentă a acestora pe hartă, de a crea evenimente destinate grupului respectiv de prieteni, de a consulta punctele de interes din zona în care se află aceştia la momentul respectiv, precum şi de a plasa georeminder-e pe hartă. În fine, soluţia de faţă mai propune şi integrarea cu cea mai mare reţea de socializare online la ora actuală: Facebook [1]. Scopul este ca un nou utilizator să nu fie nevoit să îşi creeze un cont în această nouă reţea, ci să se folosească de unul actual, deja populat cu informaţii precum nume sau adresă de e-mail, pe baza căruia să se facă autentificarea. De asemenea, integrarea cu Facebook implică şi alte avantaje, cum ar fi: posibilitatea de a selecta prietenii cei mai apropiaţi cu care utilizatorul va interacţiona în reţeaua FriLoc din lista de prieteni pe care acesta îi are în reţeaua Facebook, promovarea unui eveniment creat în reţeaua FriLoc pe reţeaua Facebook, şi nu în ultimul rând, popularea bazei de date cu locaţii de interes FriLoc pe baza informaţiilor culese din reţeaua Facebook. 2
  • 9. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 1.3 Conţinutul lucrării Lucrarea de faţă este împărţită în 7 părţi, după cum urmează: Capitolul 1: Introducere Capitolul 1 oferă o prezentarea generală a proiectului, a problemei abordate precum şi a scopului acestuia. Capitolul 2: Noţiuni preliminare Capitolul 2 prezintă informaţii generale şi noţiuni teoretice cu privire la dezvoltarea aplicaţiilor pe platforma Android, precum şi a API-ului reţelei Facebook. De asemenea, capitolul mai prezintă şi o scurtă istorie a celor două. Capitolul 3: Analiza soluţiilor existente Capitolul 3 propune un studiu detaliat cu privire la principalele soluţii similare existente pe piaţă la ora actuală. O evaluare a acestor soluţii similare existente scoate în evidenţă aspecte ce pot fi îmbunătăţite, motivând astfel prezenta lucrare. Capitolul 4: Descrierea reţelei FriLoc Capitolul 4 oferă o scurtă introducere şi o descriere a reţelei de socializare online FriLoc. De asemenea, acest capitol oferă şi o descriere a aplicaţiei Android din punctul de vedere al utilizatorului, bazată pe scenarii de utilizare. Capitolul 5: Proiectare şi implementare Capitolul 5 prezintă detalii cu privire la arhitectura reţelei şi implementarea clientului de Android, precum şi a serviciului web. Capitolul 6: Testare şi evaluare Capitolul 6 oferă câteva aprecieri legate de performanţă. Capitolul 7: Concluzii şi posibilităţi de extindere Capitolul 7 încheie această lucrare, prezentând un scurt rezumat însoţit de concluzii şi câteva posibilităţi de extindere. 3
  • 10. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 2 Noţiuni preliminare În acest capitol doresc să introduc câteva aspecte generale cu privire la platforma Android şi să detaliez sumar procesul de scriere de aplicaţii pentru această platformă. De asemenea, tot în acest capitol doresc să prezint şi câteva concepte generale legate de accesarea API-ului reţelei Facebook. 2.1 Platforma Android În acest subcapitol doresc să ofer câteva informaţii de bază legate de platforma Android, informaţii menite pe de-o parte să familiarizeze cititorul cu această platformă, iar pe de altă parte să scoată în evidenţă avantajele platformei datorate în mare parte flexibilităţii pe care o oferă, motivând astfel alegerea făcută. 2.1.1 Scurt istoric În anul 2003, Andy Rubin, Rich Miner, Nick Sears şi Chris White pun bazele unui startup, denumit Android, Inc. Cei 3 îşi propuseseră să dezvolte software pentru dispozitive mobile inteligente, care să ţină cont atât de preferinţele utilizatorului cât şi de locaţia acestuia. În anul 2005, gigantul Google cumpără această mică companie, reuşind să îi convingă pe fondatori să rămână sa lucreze în continuare la proiect. Echipa reuşeşte astfel să dezvolte o platformă destinată dispozitivelor mobile, bazată pe kernel-ul Linux. Între timp, încep să apară speculaţii cu privire la o posibilă intrare a gigantului Google pe piaţa dispozitivelor mobile. Pe data de 5 noiembrie 2007, este înfiinţat Open Handset Alliance, un consorţiu ce include mai multe companii precum Broadcom Corporation, Google, HTC, Intel, LG, Marvell, Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T- Mobile şi Texas Instruments. Scopul acestui consorţiu era să dezvolte standarde deschise pentru dispozitive mobile. Începând cu data de 21 octombrie 2008, Android este licenţiat ca software cu sursă deschisă. Astfel, majoritatea componentelor sistemului se află sub licenţă Apache, doar câteva aflându- se sub licenţă GPL [4]. 2.1.2 Ce este Android? Android este o stivă software, o platformă pentru dispozitive mobile care include un sistem de operare, middleware-ul şi aplicaţii cheie [5]. Printre trăsăturile de bază ale platformei putem aminti:  arhitectură modulară pentru aplicaţii proiectată special pentru a permite reutilizarea de componente;  maşină virtuală Dalvik optimizată pentru dispozitive mobile; 4
  • 11. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare  bază de date SQLite pentru a permite stocarea structurată de date;  grafică optimizată atât 2D cât şi 3D, bazată pe OpenGL ES 1.0;  browser integrat pentru navigarea pe site-uri web bazat pe motorul cu sursă deschisă WebKit;  suport pentru diferite formate media audio şi video cum ar fi MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF;  suport pentru telefonie GSM;  suport pentru Bluetooth, EDGE, 3G şi WiFi;  suport pentru cameră foto, GPS, busolă şi accelerometru;  suport bogat pentru dezvoltarea aplicaţiilor ce include un emulator, instrumente pentru depanare a codului, instrumente pentru analiză de performanţă, precum şi o extensie pentru mediul de dezvoltare cu sursă deschisă Eclipse. Figura 1: Ce este Android. 2.1.3 Arhitectura platformei Android Figura 2: Arhitectura platformei Android. 5
  • 12. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare În cele ce urmează, voi prezenta succint componentele prezentate în figura de mai sus. Orice dispozitiv mobil dotat cu platformă Android va fi livrat împreună cu un set de aplicaţii de bază precum un client de email, un program pentru gestiunea mesajelor scurte de tip SMS, un program de tip calendar, un browser web şi un program pentru gestiunea contactelor. Toate aplicaţiile Android sunt scrise în limbajul Java. Deoarece Android este o platformă deschisă, dezvoltatorii au posibilitatea de a crea aplicaţii bogate în conţinut şi inovative în idei. Astfel, dezvoltatorii pot să capete acces la hardware-ul dispozitivului, la informaţii cu privire la locaţia dispozitivului, la serviciile care rulează în fundal, pot sa adauge notificări în bara de status a sistemului (engleză: Status Bar) şi multe altele. Dezvoltatorii au acces complet la acelaşi API al framework-ului la care au acces şi aplicaţiile de bază ale platformei. Arhitectura platformei a fost gândită de aşa natură încât componentele să poată fi reutilizate, astfel că orice aplicaţie îşi poate face publice capabilităţile şi poate fi accesată de către alte aplicaţii. Acelaşi mecanism permite ca componentele să poată fi înlocuite de utilizator. La baza tuturor aplicaţiilor stă un set întreg de servicii şi sisteme, printre care:  un set bogat şi extensibil de componente grafice de tip View cum ar fi liste, tabele, butoane sau câmpuri de text, cu ajutorul cărora se pot construi interfeţe grafice bogate;  furnizori de conţinut (engleză: Content Providers) ce permit aplicaţiilor să acceseze date ale altor aplicaţii (spre exemplu accesarea listei de contacte din aplicaţia Contacte), precum şi publicarea propriilor date spre a fi accesate de către celelalte aplicaţii;  un manager de resurse (engleză: Resource Manager) ce facilitează accesul la resurse de tip non-cod cum ar fi fişiere ce definesc aspectul interfeţei grafice, sau şiruri de caractere localizate;  un manager de notificări (engleză: Notification Manager) ce permite tuturor aplicaţiilor să afişeze mesaje de atenţionare sau de informare în bara de status (engleză: Status Bar) adresate utilizatorului;  un manager al activităţilor (engleză: Activity Manager) ce gestionează durata de viaţă a aplicaţiilor şi facilitează o stivă de navigare comună. Platforma Android include un set bogat de biblioteci C/C++ folosite de numeroase componente ale sistemului. Accesul către aceste biblioteci pentru dezvoltatori este facilitat de către framework-ul de aplicaţii. Dintre bibliotecile de bază putem aminti:  biblioteca de bistem C – o derivare BSD a bibliotecii standard C (libc), optimizată pentru dispozitivele încorporate bazate pe Linux; 6
  • 13. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare  biblioteci media – bazate pe OpenCORE; aceste biblioteci oferă suport pentru redarea şi înregistrarea a numeroase formate audio şi video, dintre care putem aminti: MPEG4, H.264, MP3, AAC, AMR, JPG şi PNG;  managerul de suprafeţe (engleză: Surface Manager) – gestionează accesul la subansamblele afişajului grafic şi facilitează compunerea imaginilor prin suprapunerea de straturi compozite 2D sau 3D provenite din diferite aplicaţii;  LibWebCore – pune la dispoziţie un motor modern de randare a paginilor web, integrat atât în navigatorul web, cât şi în componenta grafică ce poate fi folosită în cadrul aplicaţiilor pentru a afişa pagini web;  SGL – motorul ce gestionează grafica 2D;  biblioteci 3D – implementate pe baza API-ului OpenGL ES 1.0; aceste biblioteci utilizează fie accelerarea 3D în hardware, acolo unde aceasta este disponibilă, fie accelerarea 3D efectuată în software puternic optimizată.  FreeType – folosită pentru a randa fonturi bazate atât pe grafică vectorială cât şi pe grafică de tip raster;  SQLite – o bază de date flexibilă şi puternic optimizată din punct de vedere al consumului de resurse, disponibilă pentru toate aplicaţiile. De asemenea, platforma Android mai pune la dispoziţie un set de biblioteci de bază ce expun majoritatea funcţionalităţilor prezente în bibliotecile standard Java. Dacă tot am atins acest aspect, este bine de precizat faptul că Android nu este Java! Fiecare aplicaţie Android rulează în propriul său proces şi are propria sa instanţă în cadrul maşinii virtuale Dalvik. Maşina virtuală Dalvik rulează fişiere executabile în format .dex, ce sunt optimizate pentru a folosi cât mai puţin memoria. Maşina virtuală Dalvik se bazează pe nucleul Linux pentru a gestiona firele de execuţie şi pentru a gestiona memoria la nivel hardware. Platforma Android este bazată pe nucleul Linux, versiunea 2.6, pentru accesul la servicii de bază precum securitatea, gestiunea memoriei, gestiunea proceselor, stiva de reţea şi driverele. De asemenea, nucleul acţionează ca un intermediar între hardware şi restul stivei software. 2.2 Aplicaţiile Android Aplicaţiile Android sunt scrise în limbajul de programare orientat obiect Java. Uneltele din cadrul SDK-ului Android sunt cele ce compilează codul Java (împreună cu alte fişiere tip resursă necesare) într-un pachet Android. Prin pachet Android înţelegându-se un fişier comprimat având extensia .apk. Tot ceea ce se află într-un astfel de fişier .apk este considerat ca fiind o aplicaţie Android, iar acest fişier este cel ce este instalat pe dispozitive, pentru ca acestea să poată rula aplicaţia respectivă. Odată instalată pe un terminal mobil, fiecare aplicaţie Android trăieşte în propriul spaţiu de memorie virtualizat – conceptul se numeşte sandboxing: 7
  • 14. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare  sistemul de operare Android este un sistem multi-utilizator bazat pe Linux, în care fiecare aplicaţie este reprezentată de un utilizator unic;  în mod implicit, sistemul alocă fiecărei aplicaţii un identificator de utilizator Linux unic; acest identificator este cunoscut şi utilizat doar de către sistemul de operare, nu şi de către aplicaţie în sine;  fiecare proces are propria sa maşină virtuală, astfel că codul fiecărei aplicaţii este executat în mod izolat faţă de celelalte aplicaţii;  în mod implicit, fiecare aplicaţie rulează în cadrul propriului ei proces Linux. Sistemul de operare porneşte acest proces în momentul în care oricare dintre componentele aplicaţiei trebuie să ruleze. Procesul este oprit în momentul atunci când componenta respectivă îşi termină ciclul de viaţă, sau în momentul în care sistemul rămâne fără memorie RAM. În acest fel, sistemul Android implementează principiul celui mai mic privilegiu. Acest principiu forţează ca fiecare aplicaţie, în mod implicit, să aibă acces doar la componentele necesare funcţionări ei corespunzătoare şi nimic mai mult. Acest mecanism asigură un mediu sigur în care o aplicaţie nu poate accesa părţi ale sistemului pentru care nu a primit permisiuni. Totuşi, pentru a mări gradul de flexibilitate, au fost implementate şi mecanisme prin care o aplicaţie poate partaja date cu alte aplicaţii, precum şi prin care o aplicaţie poate avea acces la serviciile sistemului:  este posibil ca două aplicaţii să poată împarţi acelaşi identificator de utilizator Linux, în acest fel, cele două aplicaţii având posibilitatea de a îşi accesa fişierele una alteia. Pentru a conserva resursele sistemului, aplicaţiile având acelaşi identificator de utilizator pot să ruleze în cadrul aceluiaşi proces Linux şi pot partaja aceeaşi maşină virtuală. În acest caz însă, este necesar ca aplicaţiile să fie semnate cu acelaşi certificat digital;  o aplicaţie poate cere permisiunea de a accesa date stocate în sistem precum contactele utilizatorului, mesajele scurte de tip SMS, cardul de memorie SD, camera foto, interfaţa Bluetooth, precum şi multe altele. Toate cererile de permisiunii ale unei aplicaţii trebuie să fie aprobate de utilizator în momentul în care aceasta este instalată. 2.2.1 Componentele unei aplicaţii Componentele sunt cărămizile unei aplicaţii Android. Fiecare componentă reprezintă o metodă diferită prin care sistemul are acces la o aplicaţie. Însă nu toate componentele unei aplicaţii facilitează accesul utilizatorului. De asemenea, fiecare componentă există ca o entitate separată având un rol bine definit în cadrul întregii aplicaţii. Sunt patru tipuri diferite de componente. Fiecare astfel de tip are un rol specific şi are un ciclu de viaţă specific ce definește modul în care componenta este creată şi distrusă. În continuare vom descrie cele patru componente. 8
  • 15. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 2.2.1.1 Activităţile O activitate reprezintă un singur ecran cu o singură interfață pentru utilizator. Spre exemplu, o aplicație de email poate avea o activitate ce afișează lista de emailuri necitite, o activitate în care se poate compune un nou mesaj email şi încă o activitate în care se pot citi emailuri. Deşi activităţile lucrează una cu cealaltă pentru a crea o experienţă coezivă pentru utilizator, fiecare este totuşi independentă faţă de celelalte. Prin urmare, o altă aplicație poate porni oricare dintre aceste activităţi (evident, acest lucru fiind posibil doar dacă aplicaţia iniţială permite acest lucru). Spre exemplu, aplicaţia specifică camerei foto poate porni o activitate în cadrul aplicaţiei de email pentru a compune un nou mesaj email având ca ataşament fotografia ce tocmai a fost făcută. 2.2.1.2 Serviciile Un serviciu este o componentă ce rulează în fundal şi are rolul de a efectua operaţii de lungă durată sau poate duce la îndeplinire diferite sarcini pentru alte procese. Un serviciu nu poate interacţiona în mod direct cu utilizatorul. Spre exemplu, un serviciu poate să redea muzică în fundal, în timp ce utilizatorul navighează pe internet utilizând o altă aplicaţie. Sau, un serviciu poate să preia date de la un serviciu web fără a bloca interactivitatea utilizatorului cu o activitate. Un serviciu este întotdeauna pornit de către o altă componentă. Spre exemplu, o activitate poate porni un serviciu şi poate interacționa cu acesta. 2.2.1.3 Furnizorii de conținut Un furnizor de conţinut gestionează un set de date partajat între diferite aplicaţii. O aplicaţie poate stoca date în sistemul de fişiere, în baza de date SQLite, pe web, sau în oricare alt spaţiu de stocare persistent la care are acces aplicaţia respectivă. Folosind furnizorii de conţinut, şi alte aplicaţii pot citi sau scrie diferite date, cu condiţia ca acesta să permită acest lucru. Spre exemplu, sistemul Android pune la dispoziţie un furnizor de conţinut ce gestionează contactele utilizatorului. Prin urmare, orice aplicaţie, având permisiunile corespunzătoare aprobate de către utilizator, poate să obţină sau să modifice informaţii despre un anumit contact. Furnizorii de conţinut sunt de asemenea utili pentru scrierea sau citirea datelor private ale aplicaţiei curente. 2.2.1.4 Receptorii de difuzare Un receptor de difuzare este o componentă ce răspunde la anunţurile generale. Majoritatea anunţurilor generale sunt emise de către sistem - spre exemplu, în momentul în care ecranul se stinge, sau nivelul bateriei atinge un prag critic, sau o fotografie a fost făcută, sistemul iniţiază un anunţ general. Aplicaţiile pot şi ele să iniţieze anunţuri generale - spre exemplu, pentru a anunţa celelalte aplicaţii de faptul că anumite date au fost descărcate de pe internet şi sunt acum disponibile spre a fi utilizate. Deşi receptorii de difuzare nu prezintă o interfaţă cu utilizatorul, ei pot să genereze notificări în bara de stare, pentru a alerta utilizatorul atunci când un eveniment de difuzare are loc. În general, un receptor de difuzare este un fel de poartă de acces către alte componente. 9
  • 16. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Spre exemplu, folosind un receptor de difuzare, se poate porni un serviciu care să trateze evenimentul respectiv. Un aspect unic al modului în care a fost gândit sistemul Android este reprezentat de mecanismul unic prin care o aplicaţie poate porni o componentă a altei aplicaţii. Spre exemplu, daca se doreşte ca utilizatorul să facă o fotografie utilizând camera foto, cel mai probabil este o altă aplicaţie care se ocupă de aşa ceva, iar aplicaţia curentă se poate folosi de acest lucru, în loc să se piardă timpul cu dezvoltarea unei activităţi care să se ocupa de acest lucru. Astfel, pentru a prelua o fotografie de la camera foto, este necesar doar ca activitatea din cadrul aplicaţiei camerei foto care are rolul de a fotografia. După ce utilizatorul a terminat de fotografiat, poza respectivă este returnată aplicaţiei iniţiale pentru a fi folosită. Pentru utilizator se creează astfel impresia că cele doua activităţi fac parte din aceeaşi aplicaţie, realitatea fiind evident diferită. În momentul în care sistemul trebuie sa pornească o componentă, el porneşte mai întâi un proces specific acelei aplicaţii (asta dacă nu există un proces specific acelei aplicaţii care rulează deja), iar apoi instanţiază clasele necesare acelei componente. Deoarece sistemul rulează fiecare aplicaţie într-un proces separat, având permisiuni ce restricţionează accesul către alte aplicaţii, o aplicaţie nu poate să activeze o componentă a altei aplicaţii în mod direct. Sistemul însă, poate. Astfel că, pentru a activa o componentă dintr-o altă aplicaţie, aplicaţia iniţială trebuie să înştiinţeze sistemul cu privire la intenţia pe care o are şi anume aceea de a utiliza o componenta particulară. Odată recepţionată intenţia, sistemul poate activa componenta respectivă. 2.3 Reţeaua Facebook În acest subcapitol doresc să prezint structurat informaţii cu privire la reţeaua de socializare Facebook, insistând pe câteva dintre caracteristicile sale de bază, precum şi pe descrierea API- ului pus la dispoziţie dezvoltatorilor de aplicaţii Facebook. 2.3.1 Scurt istoric La începutul anului 2003, Adam D’Angelo pe vremea aceea student la Institutul Tehnologic Caltech din California, a creat o reţea de socializare rudimentară, experimentală, denumită Buddy Zoo, ce a apucat să fie folosită de câteva sute de mii de utilizatori până când D’Angelo s-a hotărât să o închidă. În vara acelui an, Mark Zuckerberg – prieten cu D’Angelo încă din liceu, împreună cu nişte prieteni analizează succesul website-ului Buddy Zoo şi discută despre viitorul reţelelor de socializare de pe Internet. În data de 28 octombrie 2003, Mark Zuckerberg dezvoltă Facemash, un site ce compara seturi de câte două poze şi în care utilizatorii erau rugaţi să o voteze pe cea mai bună [6]. Pe data de 4 februarie 2004, Mark Zuckerberg, student anul 2 la Harvard, lansează Thefacebook. În 24 de ore, pe site s-au înregistrat aproximativ 1300 de utilizatori noi. La doar 10
  • 17. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 6 zile de la lansarea acestui website, Zuckerberg este acuzat de 3 colegi (Cameron Winklevoss, Tyler Winklevoss şi Divya Narendra) cum că le-a furat ideea. Deşi iniţial accesul în website era disponibil doar studenţilor de la Harvard (în prima lună înregistrându-se peste jumătate dintre aceştia), în martie 2004 Facebook a fost deschis şi pentru studenţii de la Universităţile Stanford, Columbia şi Yale. Expansiunea a continuat cu şcolile din zona Boston, iar apoi cu toate universităţile din Statele Unite ale Americii, precum şi Canada. În vara anului 2004, Facebook este înfiinţată ca şi companie, iar antreprenorul Sean Parker devine preşedinte. În iunie 2004, sediul companiei este mutat în Palo Alto, California. În 2005, compania a renunţat la articolul „The” din numele acesteia, achiziţionând domeniul facebook.com. În prezent, Facebook este cea mai mare reţea de socializare online, numărând peste 600 de milioane de utilizatori! [1] 2.3.2 Ce este Facebook? Pentru a înţelege mai bine ce este o reţea de socializare online, am decis ca în continuare să prezint câteva dintre caracteristicile esenţiale ale celei mai mari reţele de socializare online: Facebook. [7] 2.3.2.1 Chat Caracteristică introdusă în aprilie 2008, permite utilizatorilor reţelei să comunice între ei în timp real, de tip mesagerie instant, unu la unu, sau în cadrul unui grup de prieteni. Între timp, clienţii consacraţi de tip mesagerie instant au început să ofere integrare cu Facebook şi implicit suport pentru această caracteristică. Protocolul pe baza căruia a fost dezvoltată această componentă este unul deschis şi se numeşte XMPP (Extensible Messaging and Presence Protocol). 2.3.2.2 Credite Această caracteristică a fost introdusă în iulie 2010 şi reprezintă moneda virtuală din reţea. Utilizatorii pot cumpăra credite folosind bani reali. Ei pot folosi creditele astfel cumpărate pentru a achiziţiona diverse lucruri în jocurile sau aplicaţiile specifice acestei platforme. 2.3.2.3 Oferte În data de 25 aprilie 2011, Facebook a anunţat un program pilot denumit Deals, ce urma să pună la dispoziţie un sistem prin care utilizatorii să poată achiziționa cupoane online cu reduceri la diferiţi comercianţi locali. Această caracteristică se vrea a fi un competitor direct al site-urilor de cumpărături sociale tip Groupon. 2.3.2.4 Mesaje şi căsuţa poştală Încă de la înfiinţarea website-ului, utilizatorii au putut să îşi trimită mesaje electronice – similar serviciului de email. Un utilizator Facebook poate trimite un mesaj către oricâţi 11
  • 18. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare prieteni de-ai săi la un moment dat. Fiecare utilizator are o căsuţă proprie de mesaje - inbox. 2.3.2.5 Reţele şi grupurile de prieteni Facebook permite ca utilizatorii să facă parte din diferite reţele şi grupuri de prieteni. Pe baza grupurilor de prieteni, un utilizator îşi poate particulariza setările ce ţin de intimitatea sa. De asemenea, grupurile sunt utile pentru a discuta şi a organiza evenimente. Un utilizator nu poate face parte din mai mult de 300 de grupuri la un moment dat. 2.3.2.6 Peretele Peretele (engleză: Wall) este un spaţiu aflat pe pagina fiecărui utilizator şi permite ca prietenii acestuia să îi lase un mesaj public. Muţi utilizatori folosesc această caracteristică pentru a lăsa mesaje scurte unui alt utilizator (e.g. un mesaj cu urări în cazul unei aniversări). 2.3.2.7 Fluxul de ştiri Această caracteristică a fost introdusă în septembrie 2006 şi permite utilizatorilor să vadă ultimele noutăţi legate de activitatea prietenilor lor. Printre ştirile ce pot apărea în acest flux se numără: schimbarea informaţiilor de pe profilul personal al unui prieten, evenimente viitoare, zile de naştere, etc. De asemenea, în fluxul de ştiri mai pot apărea şi discuţiile publice, purtate de utilizatori pe perete. Utilizatorii au totuşi posibilitatea de a seta nivelul de informaţii care poate ajunge în acest flux de ştiri. 2.3.2.8 Notificări Notificările sunt un mecanism prin care utilizatorii sunt alertaţi cu privire la evenimente şi acţiuni importante ce au avut loc, cum ar fi: un prieten a comentat la o poză ce aparţine utilizatorului curent, sau cineva a publicat un mesaj pe peretele utilizatorului curent. Conceptul este similar cu cel din Android. 2.3.2.9 Evenimente Evenimentele Facebook reprezintă o metodă prin care utilizatorii îşi pot ţine la curent prietenii cu privire la viitoarele evenimente importante (e.g.: un concert, o reuniune, etc.). Pentru a crea un eveniment, este necesar să se specifice un nume, o gazdă, tipul evenimentului (public sau privat), ora şi data de începere precum şi ora la care evenimentul se încheie, locaţia evenimentului şi o listă de invitaţi. 2.3.2.10 Locuri Locurile (engleză: Places) au fost introduse în august 2010. Este o caracteristică prin care un utilizator se poate înregistra ca fiind prezent într-o anumită locaţie folosind telefonul mobil şi informându-şi astfel prietenii cu privire la prezenţa sa în locaţia respectivă. Pentru ca un utilizator să poată să folosească această caracteristică, este necesar să aibă un telefon cu Android, iOS sau BlackBerry şi să aibă instalată aplicaţia oficială Facebook. Această caracteristică mai poate fi utilizată şi dacă este accesat site- ul mobil Facebook folosind un navigator cu suport pentru HTML5. 12
  • 19. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 2.3.3 Platforma Facebook Platforma Facebook pune la dispoziţie un API bogat şi instrumente diverse ce permit dezvoltatorilor terţi să construiască şi să integreze propriile aplicaţii cu reţeaua de socializare. Platforma a fost lansată în mai 2007 şi a evoluat de la dezvoltare exclusiv pe Facebook.com până la dezvoltare pe dispozitive mobile. [8] Platforma pune la dispoziţie un framework pentru dezvoltatorii de software pentru a crea aplicaţii care să interacţioneze cu caracteristicile Facebook de bază. Graph API este nucleul Platformei Facebook. Este componenta ce permite dezvoltatorilor să scrie şi să citească date din reţea. Aceasta facilitează accesul la obiecte (e.g. utilizatori, fotografii, evenimente, pagini) şi la legăturile dintre ele (prietenii, like-uri, fotografii marcate). [9] Mecanismul de autentificare permite aplicaţiilor scrise de terţi dezvoltatori să interacţioneze cu Graph API în numele utilizatorilor Facebook şi facilitează un mecanism de single-sign-on atât pe web cât şi pe aplicaţiile de tip desktop sau mobile. Facebook Connect este un subset din API ce permite utilizatorilor Facebook să se autentifice pe diferite site-uri sau aplicaţii folosindu-se de identitatea lor de pe Facebook. Odată conectaţi în aceste terţe aplicaţii, utilizatorii au posibilitatea de a interacţiona cu prietenii lor, sau pot să publice informaţii pe propriul perete. Dezvoltatorii pot folosi aceste servicii pentru a îi ajuta pe utilizatori să se conecteze şi să partajeze informaţii cu prietenii lor din Facebook, atât direct în reţea cât şi în afara acesteia, precum şi să crească rata de utilizare a aplicaţiilor lor. Protocolul Open Graph permite dezvoltatorilor să îşi integreze propriile pagini web în graful social. Odată integrate în graful social, aceste pagini capătă funcţionalităţi specifice oricărui obiect din graf, precum o legătură către un profil sau un flux constant de actualizări pentru utilizatorii conectaţi la respectivul obiect. 13
  • 20. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 3 Analiza principalelor soluţii similare existente Capitolul de faţă propune o analiză sumară a soluţiilor similare existente pe piaţă la ora actuală, scoţând în evidenţă dezavantaje sau lipsuri ale acestor soluţii, motivând astfel proiectul prezentat în lucrarea de faţă. Principalele servicii de socializare online existente pe piaţă la ora actuală, dedicate spre a fi accesate de pe dispozitive mobile şi care se bazează pe locaţia utilizatorului sunt: Facebook Places, Foursquare, Gowalla, Google Latitude, SCVNGR, Geomium şi Urbo. 3.1 Facebook Places Places este un serviciu oferit de către cea mai mare reţea de socializare online. A fost lansat în august 2010 şi în prezent are peste 30 de milioane de utilizatori, deşi sunt mult mai puţini cei ce folosesc acest serviciu în mod activ. [10] Places este un serviciu disponibil pentru toţi utilizatorii reţelei Facebook, ce poate fi accesat doar de pe un dispozitiv mobil, fie folosind aplicaţia oficială Facebook pentru Android, iOS sau BlackBerry, fie accesând varianta mobilă a site-ului folosind un navigator cu suport pentru HTML5. Serviciul permite utilizatorilor să se înregistreze (engleză: checkin) într-un punct de interes (engleză: POI – point of interest), informându-şi astfel prietenii cu privire la prezenţa sa în acea locaţie. De asemenea, un utilizator are posibilitatea de a însemna (engleză: to tag) anumiţi prieteni ca fiind şi ei prezenţi de asemenea în respectiva locaţie. [11] O astfel de înregistrare apare pe fluxul de ştiri al prietenilor şi leagă această informaţie de un anumit moment în timp. Spre deosebire de FriLoc, proiectul descris în amănunt în această lucrare, Facebook Places nu este un serviciu în timp real. 3.2 Foursquare În primul rând, Foursquare este un serviciu online de socializare, de tipul checkin, similar Facebook Places, dar care a apărut cu un an înaintea acestuia, mai exact în anul 2009. În iunie 2010, această reţea de socializare a anunţat că a atins pragul psihologic de 10 milioane de utilizatori. [12] Pe lângă posibilitatea de a se înregistra ca fiind prezent într-un punct de interes sau de a consulta cele mai recente înregistrări publicate de prietenii săi, un utilizator mai are posibilitatea şi de a câştiga insigne (engleză: badges) speciale, în funcţie de cât de des utilizează serviciul de înregistrare. De asemenea, un utilizator poate să devină primar (engleză: mayor) al unei locaţii de interes dacă are la activ cele mai multe înregistrări în acea locaţie în ultimele 60 de zile, În plus, 14
  • 21. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare utilizatorul mai are posibilitatea şi de a marca un punct de interes într-o listă de tip To Do , pentru a avea posibilitatea ca ulterior să îşi amintească de acesta. Spre deosebire de FriLoc, nici acest serviciu de socializare nu oferă utilizatorului posibilitatea de a consulta locaţia în timp real a prietenilor săi pe o hartă. De asemenea, FriLoc implementează şi totodată extinde conceptul de listă tip To Do, oferind posibilitatea ca un utilizator să fie automat alertat, dacă se află în zona geografică a punctului de interes. Această caracteristică specifică FriLoc se numeşte Georeminder (română: alertă pe locaţie). 3.3 Gowalla Gowalla este de asemenea un serviciu de socializare bazat pe geolocalizare de tipul checkin, similar Foursquare şi Facebook Places. Reţeaua a luat fiinţă în anul 2007 şi în prezent numără peste 1 milion de utilizatori. [13] Similar Foursquare, serviciul încurajează utilizatorii să se înregistreze în locaţii de interes, recompensându-i pe aceştia cu diferite obiecte virtuale. Spre deosebire de Foursquare, acest serviciu permite utilizatorilor să îşi organizeze călătorii, grupând mai multe locaţii de interes şi creând astfel o rută între acestea. Începând cu luna martie a anului 2011, aplicaţia client de pe Android, ajunsă la versiunea a treia, permite utilizatorilor să îşi publice înregistrarea (engleză: checkin) într-o locaţie şi pe reţelele Foursquare, Facebook Places, Twitter şi Tumblr. De asemenea, noua versiune a aplicaţiei mai permite utilizatorilor şi să consulte înregistrările pe care aceştia le-au efectuat în cadrul celorlalte reţele de socializare bazate pe geolocalizare. Similar Facebook Places şi Foursquare, nici acest serviciu de socializare bazat pe geolocalizare nu este disponibil şi în varianta de timp real – o caracteristică de bază a aplicaţiei FriLoc. In reţeaua FriLoc nu există nici conceptul de primar promovat de reţeaua Foursquare, şi nici conceptul de obiecte virtuale câştigate în urma unui checkin – promovat atât de Foursquare cât şi de Gowalla, deoarece caracteristica de înregistrare nu este una fundamentală în cadrul proiectului de faţă, accentul punându-se pe posibilitatea de consulta locaţiile prietenilor în timp real pe hartă. 3.4 Google Latitude Google Latitude este un serviciu de socializare bazat pe geolocalizare lansat în februarie 2009, de către gigantul Google. Serviciul reprezintă o evoluţie a startup-ului ce oferea un serviciu similar bazat pe geolocalizare, denumit Dodgeball, lansat în 2000 şi achiziţionat de Google în 2005. [14] Serviciul se vrea a fi o reţea de socializare bazată pe geolocalizare prin intermediul căreia utilizatorii să poată avea posibilitatea de a vedea locaţia curentă a altor utilizatori Google pe hartă (pe baza unei autorizări din partea acestora). [15] 15
  • 22. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Latitude are o bază de 9 milioane de utilizatori, dintre care doar aproximativ 3 milioane sunt activi în reţea. [16] Deşi Latitude posedă aceeaşi caracteristică de bază pe care o are şi FriLoc, în speţă posibilitatea de a consulta pe hartă locaţia curentă a utilizatorilor, serviciul are o problemă legată pe de-o parte de renumele companiei Google, iar pe de altă parte de o realitate adevărată. Şi anume, Google nu este privită ca o companie orientată pe reţele de socializare. Astfel că, o pătrime din totalul de utilizatori ai acestui serviciu au zero prieteni! [17] Spre deosebire de Latitude, FriLoc se vrea a fi o veritabilă reţea de socializare, fapt pentru care este puternic integrată cu cea mai mare reţea de socializare online: Facebook. De asemenea, FriLoc prezintă în plus nişte caracteristici cu adevărat utile pentru utilizatori, cum ar fi Georeminder-ele sau poziţionarea evenimentelor pe hartă. 3.5 SCVNGR SCVNGR (a se citi scavenger - engleză), este o platformă de jocuri bazată pe geolocalizare pentru dispozitive mobile. Aplicaţia are atât o componentă destinată companiilor, cât şi o componentă destinată consumatorilor. Conform unor zvonuri datate din februarie 2011, această reţea numără aproximativ 1 milion de utilizatori. [18] Jucătorii sunt încurajaţi să viziteze locuri şi să accepte diferite provocări. Astfel, ei pot câştiga puncte, sau pot obţine insigne speciale virtuale, precum şi reduceri în viaţa reală la diferiţi comercianţi. Similar Foursquare şi Gowalla, această reţea de socializare nu permite consultarea locaţiei curente a utilizatorilor pe hartă. 3.6 Geomium Geomium este o reţea de socializare bazată pe geolocalizare, lansată în septembrie 2010 cu sediul la Londra. Din anumite puncte de vedere, Geomium este aplicaţia care seamănă cel mai mult cu ceea ce FriLoc se doreşte a fi. Ambele reţele de socializare plasează pe hartă atât diferite puncte de interes, cât şi evenimente sau prieteni în timp real. De asemenea, nici FriLoc şi nici Geomium nu au implementat un mecanism de recompensare a utilizatorului de genul Foursquare Badges sau Gowalla Items - asta deoarece, atât FriLoc, cât şi Geomium, se doresc a fi aplicaţii cu adevărat folositoare pentru utilizatori. În schimb, reţeaua permite plasarea pe hartă a diferitelor oferte localizate ale comercianților. Totuşi există câteva diferenţe notabile care validează lansarea FriLoc într-un viitor apropiat. În primul rând, trebuie menţionat faptul că Geomium este momentan disponibilă doar pe telefoanele iPhone. În al doilea rând, FriLoc are un mare avantaj oferit de integrarea puternică 16
  • 23. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare pe care o are cu Facebook-ul. De asemenea, FriLoc prezintă şi câteva caracteristici pe care Geomium nu le are, printre care putem aminti Gereminder-ele. În fine, diferenţa esenţială dintre cele două reţele de socializare constă în abordarea cu care acestea tratează informaţiile cu privire la locaţia curentă a unui utilizator. Reţeaua Geomium a primit numeroase critici cu privire la faptul că există posibilitatea de a accesa locaţia în timp real a unor utilizatori cu care nu există nici o legătură anterior formată. Mai trebuie să precizăm şi faptul că Geomium acoperă momentan doar Londra, pe când FriLoc, datorită integrării cu Facebook, şi implicit cu Places, va fi disponibilă tuturor utilizatorilor Facebook la nivel mondial încă din prima zi de la lansare. [19] 3.7 Urbo Urbo este o aplicaţie de informare bazată pe geolocalizare, românească. Aplicaţia este extrem de bogată în ceea ce priveşte numărul de locaţii de interes (baza de date are peste 100.000 firme), asta deoarece acest serviciu se vrea a fi un ghid al firmelor pe piaţa românească. Din păcate însă, aplicaţia se concentrează doar pe 10 oraşe din România. În cadrul aplicaţiei, un utilizator îşi poate face prieteni şi se poate înregistra (engleză: checkin) într-o locaţie de interes, similar Foursquare şi Gowalla. Tot la capitolul similarităţi putem menţiona şi faptul că un utilizator poate câştiga diverse insigne virtuale dacă foloseşte funcţia de înregistrare în mod frecvent. Ca noutate, putem aminti faptul că aplicaţia permite calcularea rutei optime între locaţia curentă a utilizatorului şi un punct de interes. [20] Diferenţele dintre FriLoc şi Urbo sunt majore. În timp ce Urbo este o aplicaţie românească cu un concept de înregistrare similar Foursquare şi Gowalla, FriLoc se concentrează pe posibilitatea de a consulta locaţiile prietenilor în timp real. De asemenea, FriLoc, spre deosebire de Urbo, se vrea a fi o veritabilă reţea de socializare cu multiple caracteristici precum plasarea pe hartă atât a unor locaţii de interes, cât şi a unor evenimente sau a unor geoalerte. De asemenea, reţeaua FriLoc este puternic integrată cu Facebook, cea mai mare reţea de socializare online. [21] 17
  • 24. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 4 Descrierea FriLoc Acest capitol prezintă caracteristicile de bază ale proiectului tratat în această lucrare. FriLoc este o reţea de socializare bazată pe geolocalizare al cărei scop principal este ca utilizatorii săi să poată consulta locaţia geografică curentă a prietenilor lor. În cele ce urmează, vom trata pe rând, fiecare caracteristică în parte. 4.1 Aplicaţia client În primul rând, pentru a avea acces la toate funcţionalităţile puse la dispoziţie de reţeaua de socializare FriLoc, utilizatorul are nevoie de un terminal cu platformă Android, cu senzor GPS încorporat şi acces constant la Internet (preferabil, un pachet de date mobil de la operatorul local de telefonie mobilă). Pe acest terminal este necesar să se instaleze aplicaţia client FriLoc pentru a putea utiliza efectiv funcţionalităţile puse la dispoziţie de această reţea de socializare online. Aplicaţia client poate fi instalată pe dispozitive ce rulează sistemul Android, versiunile 2.1, 2.2, 2.3 şi 2.4. Coroborat cu ultimul studiu de piaţă, încheiat la data de 1 iunie 2011, cu privire la distribuţia pe piaţă a diverselor versiuni ale sistemului Android, aplicaţia client FriLoc poate fi instalată pe aproximativ 95% din totalul dispozitivelor dotate cu sistem Android. [22] Aplicaţia este livrată sub forma unui singur fişier, un pachet *.apk specific acestei platforme şi ocupă aproximativ 1 MB. Aplicaţia poate fi instalată doar în memoria telefonului. Deşi în prezent aplicaţia nu se găseşte pe Android Market [23], acest lucru va fi posibil începând cu toamna acestui an, când va fi lansată pe piaţă, gratuit. 4.2 Interfaţa de autentificare La prima lansare a aplicaţiei, utilizatorul este întâmpinat de un ecran în care este prezentată sigla FriLoc, termeni şi condiţii de utilizare, o căsuţă pe care utilizatorul trebuie să o bifeze confirmând astfel faptul că a citit şi a luat la cunoştinţă şi că acceptă respectivii termeni, şi un buton pentru iniţializarea procesului de autentificare. Iniţial, butonul ce declanşează procesul de autentificare este dezactivat. Acesta devine activ doar în momentul în care utilizatorul a bifat căsuţa de accept a termenilor. La apăsarea butonului devenit activ, utilizatorul este rugat să îşi introducă datele de autentificare în reţeaua Facebook. Deşi voi detalia procesul de autentifice în capitolul următor, menţionez totuşi şi aici faptul că aplicaţia FriLoc nu stochează parola utilizatorului, în schimb aceasta fiind verificată în mod direct doar de către platforma Facebook. Am ales ca autentificarea în reţea să se poată realiza doar cu ajutorul unui cont de Facebook, pe de-o parte deoarece FriLoc se adresează în primul rând consumatorilor de reţele de 18
  • 25. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare socializare online, iar pe de altă parte, s-a dorit încă de la bun început o integrare strânsă cu reţeaua Facebook. Figura 3: Ecranul de autentificare După introducerea datelor de autentificare Facebook, la prima autentificare în reţeaua FriLoc, utilizatorul este rugat de către platforma Facebook să confirme permisiunile de acces cu privire la acţiunile pe care FriLoc le poate întreprinde în Facebook în numele utilizatorului. Vom intra în mai multe detalii cu privire la aceste permisiuni în capitolul următor. Dacă autentificarea s-a realizat cu succes, utilizatorul va fi redirecționat către ecranul principal al aplicaţiei, descris în secţiunea următoare. 4.3 Ecranul principal Ecranul principal este de tip tablou (engleză: dashboard) şi este împărţit de aşa natură încât utilizatorul să nu trebuiască să se chinuiască să se acomodeze cu interfaţa grafică, sau cu găsirea vreunei opţiuni ascunse. În partea de sus avem o bară de acţiuni (engleză: actionbar) prezentă în toate celelalte ecrane ale aplicaţiei. Bara de acţiuni conţine sigla FriLoc împreuna cu trei iconiţe. În celelalte ecrane, sigla poate fi acţionată printr-o atingere tactilă, scopul ei fiind de a readuce întotdeauna utilizatorul înapoi la ecranul principal. Celelalte trei iconiţe sunt iconiţele pentru notificări, pentru reîmprospătare şi pentru pornirea sau oprirea serviciului. Aceste trei iconiţe pot fi şi ele la rândul lor acţionate. Iconiţa de reîmprospătare (engleză: refresh) are rolul de a actualiza cu cele mai noi informaţii ecranul curent. Despre celelalte două iconiţe vom vorbi în secţiunile ce urmează. În jumătatea de sus a ecranului principal sunt afişate câteva informaţii cu privire la profilul utilizatorului curent conectat în reţea. Acestea sunt poza de profil şi numele complet 19
  • 26. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare (informaţii preluate din Facebook), precum şi locaţia curentă afişată la nivel de oraş şi de stradă. Figura 4: Ecranul principal În jumătatea de jos se găsesc cele şase opţiuni de navigare posibile în continuare:  Georeminders (română: alerte pe locaţie)  Venues (română: locaţii de interes)  Live Feed (română: fluxul ştiri)  Events (română: evenimente)  Friends (română: prieteni)  Map (română: harta) Le vom trata pe fiecare în parte în secţiunile următoare. Ultimul element al acestui ecran, prezent de altfel şi în majoritatea celorlalte ecrane ale interfeței, este titlul ecranului curent şi are atât rol informativ, cât şi rol estetic. La apăsarea tastei Menu a telefonului, utilizatorului îi sunt prezentate încă trei opţiuni:  Logout (română: ieşirea din cont)  About (română: informaţii despre FriLoc)  Settings (română: setări) Prin apăsarea opţiunii Logout, utilizatorul este deconectat de la reţea şi, dacă doreşte să se reconecteze, va fi nevoit să se autentifice din nou prin reintroducerea datelor de conectare Facebook. Despre celelalte două opţiuni vom vorbi în secţiunile următoare. 20
  • 27. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 4.4 Serviciul din fundal Tot ce trebuie să facă utilizatorul pentru a îşi face cunoscută locaţia sa geografică curentă, în timp real către prietenii săi, este să pornească serviciul din fundal. Acest serviciu poate fi pornit sau oprit prin acţionarea iconiţei sale din bara de acţiuni prezentă în majoritatea ecranelor aplicaţiei. Cât timp serviciul rulează şi este activ, iconiţa sa din bara de acţiuni este de culoare albă şi este prezentă iconiţa FriLoc în bara de status a sistemului. În momentul în care serviciul este oprit, iconiţa sa devine de culoare roşie, iar iconiţa FriLoc dispare din bara de status a sistemului. Detalii despre cum funcţionează efectiv acest serviciu găsim în capitolul dedicat implementării. Figura 5: Serviciul şi interfaţa grafică În fine, dacă serviciul este activ, utilizatorul capătă acces foarte facil la interfaţa grafica, dacă derulează bara de status a sistemului şi acţionează câmpul pe care scrie FriLoc is running. Această scurtătură va redirecţiona utilizatorul către ecranul ce conţine harta. Mai multe detalii despre acest ecran, în cele ce urmează. 4.5 Ecranul cu informaţii despre FriLoc Ecranul cu informaţii despre FriLoc (engleză: about) poate fi activat dacă se alege opţiunea About din meniul ecranului principal. Acest ecran este compus din trei file:  About (română: despre)  Privacy Policy (română: politica de confidenţialitate)  Terms of Service (română: termeni şi condiţii de utilizare a serviciului) 21
  • 28. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Figura 6: Ecranul cu informaţii despre FriLoc 4.6 Ecranul cu setări În ecranul cu setări se poate ajunge prin apăsarea opţiunii corespunzătoare din meniul ecranului principal. Setările din cadrul acestui ecran sunt împărţite în patru categorii, după cum urmează:  General Settings (română: setări generale)  Notifications Alerts (română: )alerte la notificări  Georeminders Alerts (română: alerte pe locaţii geografice)  Friends Nearby Alerts (română: alerte la apropierea de prieteni) Figura 7: Ecranul cu setări 22
  • 29. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare În categoria General Settings utilizatorul are posibilitatea de a seta intervalul de timp la care serviciul, cât timp este activ şi rulează în fundal, îi transmite serverului locaţia curentă a utilizatorului. De asemenea, tot în cadrul acestei categorii, utilizatorul mai are şi posibilitatea de a seta dacă serviciul să pornească sau nu odată cu pornirea telefonului, precum şi dacă serviciul să menţină sa nu activă conexiunea WiFi atunci când telefonul este în modul sleep şi nu are o conexiune de date activă. În categoria Notifications Alerts, utilizatorul are posibilitatea de a activa sau dezactiva propagarea notificărilor generale în bara de status a sistemului Android. Iar în cazul în care sunt activate, utilizatorul poate configura modul de apariţie al acestora: cu sunet sau fără sunet, cu vibrație sau fără vibraţie. Categoriile Georeminders Alerts şi Friends Nearby Alerts au un set analog de setări. Diferenţa ţine de faptul că Georeminders Alerts tratează alertele generate de Georemindere (română: alerte pe locaţie geografică), iar Friends Nearby Alerts tratează alertele generate în momentul în care utilizatorul se află în aceeaşi zonă în care se află şi unul sau mai mulţi prieteni de-ai săi. 4.7 Ecranul cu notificări Navigarea în ecranul cu notificări se poate realiza daca se acționează iconiţa corespunzătoare din ActionBar (română: bara de acţiuni) – această bară regăsindu-se în aproape toate ecranele aplicaţiei. De asemenea, direct în ecranul de notificări se mai poate ajunge şi dacă utilizatorul selectează o notificare din bara de status a sistemului Android. În acest ecran se regăsesc diverse informaţii, sub formă de listă de notificări ce ţin de utilizatorul curent, precum cererile de prietenie, însemnări ale momentelor în care utilizatorul s-a aflat în preajma unor prieteni de-ai săi sau în care un Georeminder a intrat în acţiune, etc. Figura 8: Ecranul cu notificări şi ecranul cu fluxul de ştiri 23
  • 30. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 4.8 Ecranul cu fluxul de ştiri Ecranul Live Feeds (română: flux de ştiri) poate fi accesat doar din ecranul principal şi este una din cele şase ramuri principale de navigare. Acest ecran este compus dintr-o listă în care se regăsesc diverse informaţii partajate între utilizator şi prietenii săi. Un utilizator poate publica un mesaj în acest flux de ştiri, mesajul având astfel ataşată locația curentă a utilizatorului, iar acest mesaj putând fi urmărit de către toţi prietenii autorului. De asemenea, în momentul în care un utilizator se înregistrează ca fiind prezent în cadrul unei locaţii de interes, checkin-ul respectiv este automat publicat şi în cadrul acestui flux de ştiri. Tot în cadrul acestui flux de ştiri mai pot apărea şi informaţii precum momentul în care un utilizator se înregistrează ca participant în cadrul unui eveniment (engleză: attending). 4.9 Ecranul de tip hartă Ecranul Map (română: harta) este a doua ramură din cele şase ramuri principale de navigare prezente în ecranul principal. O altă modalitate de a consulta foarte uşor acest ecran se poate realiza prin accesarea notificării permanente din bara de status a sistemului, cu privire la faptul că serviciul de geolocalizare este activ şi rulează. Figura 9: Ecranul de tip hartă În acest ecran, utilizatorul poate consulta locaţia geografică a următoarelor tipuri de elemente:  Georeminders (română: alerte pe locații geografice)  Venues (română: locaţii de interes)  Events (română: evenimente)  Friends (română: prieteni) Printr-un click pe un astfel de element, în partea de sus a ecranului apare o bară neagră, cu numele şi adresa elementului respectiv. De asemenea, pentru a consulta mai uşor elementele 24
  • 31. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare prezente pe hartă, se pot folosi cele două săgeţele de navigare din bara informativă, ce au rolul de a parcurge această listă de elemente. Pentru a popula harta cu elemente, este necesar ca utilizatorul să acţioneze butonul Load Items. De asemenea, daca utilizatorul doreşte să consulte doar elemente de un anumit tip, atunci el poate specifica acest lucru prin apăsarea tastei Menu şi alegerea unui tip de element, sau All pentru a reveni la afişarea standard a tuturor elementelor pe hartă. De asemenea, tot în cadrul acestui meniu regăsim şi opţiunea My Location (română: locţia mea), opţiune ce are rolul de a centra harta pe locaţia curentă a utilizatorului marcată printr-un punct albastru. În fine, în partea din stânga sus a ecranului se află o busolă, iar în ActionBar (română: bara de acţiuni) a fost adăugată o iconiţă ce are rolul de a interschimba modul de vizualizare al hărţii în modul satelit sau modul standard. 4.10 Ecranul cu alerte pe locaţie Ecranul cu alerte pe locație (engleză: georeminders) este a cea de a treia ramură de navigare dintre cele şase prezente în ecranul principal. În acest ecran se poate consulta lista de alerte pe locaţii, ordonate ascendent în funcţie de distanţa dintre ele şi poziţia curentă a utilizatorului. Figura 10: Ecranul cu alerte pe locaţie În urma unui click pe un Georeminder, ecranul curent se schimbă, utilizatorului fiindu-i prezentate informaţii respective cu privire la alerta respectivă. În acest ecran detaliat regăsim următoarele informaţii cu privire la un georeminder:  titlul alertei respective;  o scurtă descriere;  locaţia alertei sub formă de adresă;  oraşul; 25
  • 32. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare  distanţa până la poziţia geografică a alertei respective;  locaţia de interes ataşată georeminder-ului curent, în situaţia în care aceasta a fost specificată;  un buton ce deschide ecranul de tip hartă, având în centru georeminder-ul curent;  un câmp ce poate fi bifat pentru a seta astfel dacă utilizatorul doreşte sau nu să fie înştiinţat atunci când se află în zona geografică a alertei curente. Pentru a crea un nou georeminder, este suficient să se navigheze în ecranul cu lista de alerte pe locaţii, să se apese tasta Menu a telefonului şi să se selecteze opţiunea Add Georeminder. Se va deschide astfel un alt ecran, în care utilizatorul va putea să introducă date cu privire la alerta respectivă. 4.11 Ecranul cu locaţiile de interes Venues (română: locaţii de interes) este ce-a patra opţiune disponibilă pe ecranul principal al aplicaţiei FriLoc. Ecranul prezintă cele mai apropiate 20 de locaţii de interes de poziţia geografică curentă a utilizatorului, ordonate ascendent, în funcţie de distanţa la care se află acestea. Figura 11: Ecranul cu locaţii de interes Pentru a consulta detalii cu privire la o locaţie de interes, este suficient să se efectueze un click în ecranul Venues. În ecranul proaspăt deschis, Venue Details (română: detaliile unei locaţii de interes), informaţiile ce pot fi prezentate cu privire la o locaţie de interes sunt:  numele locaţiei curente;  o scurtă descriere a locației curente;  strada locaţiei curente;  distanţa de la poziția geografică actuală a utilizatorului, până la poziţia geografică a locaţiei de interes; 26
  • 33. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare  numărul total de înregistrări pe care utilizatorii reţelei FriLoc l-au efectuat în acest venue de-a lungul timpului, precum şi posibilitatea ca utilizatorul curent să se înregistreze ca fiind prezent în locaţia curentă;  numărul de utilizatori ai reţelei FriLoc prezenţi în locaţia respectivă, în momentul consultării acestor informaţii;  posibilitatea de a consulta şi de a adăuga comentarii locaţiei curente;  posibilitatea de a acorda un calificativ sub formă de Like (română: îmi place) sau Dislike (română: nu îmi place) locaţiei curente;  un buton ce deschide ecranul de tip hartă, având în centru venue-ul curent;  posibilitatea de a adăuga un georeminder locaţiei curente. 4.12 Ecranul cu prieteni Ecranul Friends (română: prieteni) este cea de-a cincea opţiune din cele şase prezente pe ecranul principal. În acest ecran, utilizatorul are acces la lista cu toţi prietenii cu care acesta s- a conectat în reţeaua FriLoc. În cadrul acestei liste, prietenii sunt grupaţi în două categorii, în funcţie de statutul pe care îl au aceştia în momentul vizualizării ecranului: online (română: conectat) sau offline (română: deconectat). Un utilizator este considerat online dacă s-a autentificat cu succes în reţea şi dacă are serviciul din fundal activat. Figura 12: Ecranul cu prieteni Categoria utilizatorilor online este afişată prima în cadrul acestui ecran, iar în cadrul acestei categorii, utilizatorii sunt ordonaţi ascendent, în funcţie de distanţa de la poziţia geografică a utilizatorului la momentul consultării acestui ecran, şi poziţia fiecărui prieten în parte. Utilizatorii din categoria offline sunt sortaţi alfabetic. 27
  • 34. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Mai multe detalii despre un prieten pot fi consultate prin efectuarea unei atingeri (engleză: to tap) a ecranului în dreptul numelui acestuia. Se deschide astfel un nou ecran denumit Friend Details (română: detaliile unui prieten) în care regăsim informaţii precum:  numele complet al prietenului respectiv;  poza de profil a acestuia, descărcată cu ajutorul API-ului Facebook;  strada pe care se află acesta la momentul consultării acestui ecran;  oraşul în care se află;  distanţa geografică dintre utilizator şi prietenul respectiv;  posibilitatea de a vedea locaţia de interes curentă, dacă prietenul a folosit funcția de checkin (română: înregistrare);  posibilitatea de a deschide ecranul Map având punctul geografic în care se află prietenul curent în centrul hărţii. De notat că informaţiile legate de locaţia geografică a unui prieten sunt disponibile doar dacă atât utilizatorul curent cât şi prietenul respectiv sunt online în reţeaua FriLoc. Dacă utilizatorul doreşte să se conecteze în reţeaua FriLoc cu un nou prieten pe care îl are deja în reţeaua Facebook, atunci tot ce trebuie să facă este să apese tasta Menu a telefonului şi să aleagă opţiunea Add Friend (română: adaugă prieten). Se va deschide astfel o nouă fereastră, în care este prezentă o listă cu toţi prietenii pe care îi are acest utilizator în reţeaua Facebook, dar cu care nu s-a conectat încă în reţeaua FriLoc. Pentru a uşura procesul de selecţie al unui utilizator, în partea de sus a ecranului este prezent un câmp text, ce are rolul de a filtra această listă în funcţie de şirul de caractere introdus. După alegerea unui prieten cu care se doreşte conectarea, utilizatorului îi este prezentată o fereastră de tip dialog prin care acesta este rugat să confirme acțiunea respectivă şi în care acesta are posibilitatea de a îi scrie un mesaj destinatarului. Pentru a şterge un prieten din reţeaua FriLoc este nevoie ca, din lista în care sunt afişaţi toţi utilizatorii cu care există deja o conexiune creată, să se selecteze un timp mai îndelungat persoana respectivă şi să se confirmare acţiunea respectivă în fereastra de confirmare de tip dialog. 4.13 Ecranul cu evenimente În fine, ultimul ecran despre care vom discuta în acest capitol este cel ce se ocupă cu afişarea listei de evenimente. Acesta este cea de-a şasea şi totodată ultima opţiune principală disponibilă în Dashboard (română: ecranul principal). Elementul principal al acestui ecran îl constituie lista de evenimente ce vor avea loc în viitorul apropiat, sortate în funcţie de distanţa geografică, raportat la poziţia curentă a utilizatorului. Pentru a accesa detalii cu privire la un eveniment, este suficient să se atingă ecranul în dreptul 28
  • 35. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare unui eveniment şi o nouă fereastră, intitulată Event Details (română: detaliile unui eveniment) se va deschide. Figura 13: Ecranul cu evenimente În fereastra Event Details sunt prezente o serie de informaţii despre evenimentul respectiv, precum:  titlul evenimentului;  o scurtă descriere;  tipul evenimentului (public sau privat);  gazda evenimentului;  lista de invitaţi;  răspunsul utilizatorului către acest eveniment: o Attending - dacă va participa la eveniment; o Not Attending - dacă nu doreşte să participe; o Maybe Attending - dacă utilizatorul nu a luat încă o decizie;  adresa la care se va desfăşura evenimentul respectiv;  oraşul în care va avea loc;  distanţa geografică dintre utilizator şi eveniment;  locaţia de interes în care va avea loc evenimentul, în cazul în care această informaţie a fost specificată;  posibilitatea de a deschide ecranul Map având punctul geografic în care va avea loc evenimentul respectiv marcat şi centrat pe hartă. De asemenea, utilizatorul are posibilitatea şi de a crea noi evenimente, oferind toate detaliile necesare şi creând o listă de invitaţi. 29
  • 36. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare 5 Proiectare şi implementare În urma prezentării caracteristicilor reţelei FriLoc şi a tuturor funcţionalităţilor aplicaţiei client, capitolul de faţă propune o continuare firească a celui anterior şi anume prezentarea generală a arhitecturii platformei precum şi a principalelor caracteristici ale aplicaţiei client din punct de vedere tehnic. 5.1 Arhitectura platformei Datorită integrării puternice cu platforma Facebook, arhitectura are un caracter distribuit peste reţeaua Internet. Din punct de vedere tehnic, pentru ca platforma să funcţioneze corespunzător, a fost necesar să se conceapă următoarele componente:  serviciu web (alcătuit din baza de date şi module de comunicaţie);  interfaţa cu platforma Facebook;  aplicaţie client pentru platforma Android ce va fi instalată pe terminalele compatibile ale utilizatorilor. Figura 14: Diagrama de arhitectură După cum se poate observa şi din diagrama de arhitectură, FriLoc este o reţea de socializare online concepută a funcţiona peste reţeaua Internet. Cele trei componente majore, menționate anterior, rulează pe maşini / dispozitive diferite, însă toate trei pot comunica la un moment dat între ele. Modul de iniţiere al comunicaţiei dintre componente este:  aplicaţie client Android –> API-ul platformei Facebook  aplicaţie client Android –> API-ul serviciului web FriLoc 30
  • 37. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare  API-ul serviciului web FriLoc –> API-ul platformei Facebook În cele ce urmează, vom detalia specificaţiile tehnice ale fiecărei componente în parte. 5.2 Interfaţa cu Platforma Facebook Aşa cum am descris şi în subcapitolul 2.3.3, reţeaua de socializare online Facebook pune la dispoziţia dezvoltatorilor un framework pentru a crea aplicaţii care să interacţioneze cu caracteristicile Facebook de bază. Astfel, Platforma Facebook expune un API bogat, nucleul platformei fiind reprezentat de un graf social denumit Graph API. Acesta facilitează accesul la diverse obiecte, (e.g. utilizatori, fotografii, evenimente, pagini), precum şi la legăturile dintre acestea (e.g. prietenii, like-uri, fotografii marcate). API-ul Facebook este de tip REST (Representational State Transfer). Pentru a păstra confidențialitatea informaţiilor, toate cererile către API se realizează peste protocolul HTTPS. Adresa de bază a grafului social este https://graph.facebook.com. Toate informaţiile venite ca răspuns în urma unei cereri respectă standardul JSON de reprezentare a datelor, iar toate şirurile de caractere respectă standardul ISO-8601. Pentru a avea acces la API-ul Facebook, este nevoie să se creeze o aplicaţie de tipul Facebook (engleză: Facebook Application). Odată creată aplicaţia Facebook, acesteia i se va atribui un ID unic şi se va genera un cod secret denumit App Secret. Acest este necesar pentru ca atât SDK-ul pentru Android cât şi cel pentru PHP să se poată conecta la platformă. 5.2.1 Graph API Fiecare obiect din cadrul acestui graf social are un ID unic. Proprietăţile unui obiect putând fi accesate prin efectuarea unei cereri de forma https://graph.facebook.com/ID. Alternativ, utilizatorii şi paginile speciale pot fi accesate folosindu-se numele unic al obiectului resepctiv, în loc de ID. Câteva exemple de obiecte:  obiectul utilizator Bret Taylor: https://graph.facebook.com/btaylor;  obiectul paginii Coca-Cola: https://graph.facebook.com/cocacola;  obiectul evenimentului Facebook Developer Garage Austin: https://graph.facebook.com/251906384206;  obiectul fotografiei de profil a utilizatorului petrevlad88: http://graph.facebook.com/petrevlad88/picture;  obiectul unu checkin într-o pizzerie: https://graph.facebook.com/414866888308. Exemplele date mai sus reprezintă informaţii publice, ce pot fi accesate fără a fi nevoie de o autentificare anterioară în reţea. Majoritatea informaţiilor sunt însă private şi necesită o autentificare în urma căreia se obţine o cheie de acces (engleză: access token). Mai multe detalii despre mecanismul de autorizare al platformei, în secţiunea următoare. 31
  • 38. Proiect de Diplomă Reţea de socializare bazată pe geolocalizare Pentru a vizualiza conexiunile dintre obiecte, este suficient să se acceseze un URL de forma https://graph.facebook.com/ID/CONNECTION_TYPE. Câteva exemple de conexiuni specifice:  lista de prieteni a utilizatorului curent autentificat: https://graph.facebook.com/me/friends?access_token=... ;  lista de evenimente la care utilizatorul cu ID-ul 1128563559 are acces: https://graph.facebook.com/1128563559/events?access_token=... ;  lista de checkins ale utilizatorului petrevlad88: https://graph.facebook.com/petrevlad88/checkins?access_token=... . API-ul Facebook suportă introspecţia obiectelor, ceea ce permite vizualizarea tuturor conexiunilor pe care un obiect le are. Pentru a folosi această facilitate, este necesar să se adauge parametrul metadata=1 la URL-ul obiectului respectiv. Astfel, răspunsul cererii va fi un obiect JSON ce va include o proprietate denumită metadata ce va lista toate conexiunile suportate de obiectul respectiv. Spre exemplu, pentru a vizualiza toate conexiunile pe care le are obiectul eveniment Developer Garage, este suficient să se iniţieze o cerere la URL-ul: https://graph.facebook.com/331218348435?metadata=1. Rezultatul returnat de API-ul Facebook va fi: { "name": "facebook developer garage austin - sxsw edition", "metadata": { "connections": { "feed": "http://graph.facebook.com/331218348435/feed", "picture": "https://graph.facebook.com/331218348435/picture", "invited": "https://graph.facebook.com/331218348435/invited", "attending": "https://graph.facebook.com/331218348435/attending", "maybe": "https://graph.facebook.com/331218348435/maybe", "noreply": "https://graph.facebook.com/331218348435/noreply", "declined": "https://graph.facebook.com/331218348435/declined" } } } Figura 15: Introspecţia obiectelor Facebook 5.2.2 Autentificarea în platforma Facebook Aşa cum am menţionat anterior, majoritatea obiectelor din API necesită autentificare pentru a fi accesate. Pentru a fi posibil acest lucru, este necesară o cheie de acces (engleză: access token) specifică utilizatorului Facebook autentificat. După obţinerea acestei chei, se pot autoriza cereri către API printr-un apel de forma: https://graph.facebook.com/220439?access_token=... . 32