Aplicatie Android Pentru Gestiunea Localurilor

Cuprins

1.Introducere ………………………………………………………………………………………………………4

1.1 Obiectivele lucrării de licență………………………………………………………………………….4

1.2 Prezentarea capitolelor……………………………………………………………………………………4

2.Stabilirea funcționalităților aplicației…………………………………………………………………6

2.1 Studiu asupra realizărilor similare din domeniu…………………………………………………6

2.2 Stabilirea funcționalităților aplicației raportat

la funcționalitățile aplicațiilor similare…………………………………………………………..6

2.3 Stabilirea și descrierea instrumentelor utilizate………………………………………………….7

2.3.1 Descrierea tehnologiilor folosite……………………………………………………………7

2.3.1.1 Platforma software ANDROID………………………………………………..8

2.3.1.2 Limbajul de programare JAVA……………………………………………….8

2.3.1.3 Extensible Markup Language (XML)……………………………………….9

2.3.1.4 MySQL………………………………………………………………………………10

2.3.1.5 Limbajul de programare PHP………………………………………………..10

2.3.2 Descrierea mediilor de dezvoltare………………………………………………………..11

2.3.2.1 Android Studio……………………………………………………………………11

2.3.2.2 Editorul Sublime Text …………………………………………………………12

2.3.2.3 WampServer…………….. …………….. …………….. ………………………12

2.3.3 Mașina virtuală Genymotion…………………………………………………..12

3.Considerente legate de dezvoltarea aplicației………………………………………………………..13

3.1 Motivația soluției alese…………………………………………………………………………………13

3.2 Specificarea listei de cerinte si listei de specificatii…………………………………………..14

3.2.1 Lista de cerințe………………………………………………………………………………….14

3.2.2 Lista de functionalitati……………………………………………………………………….15

3.3 Arhitectura aplicatiei…………………………………………………………………………………….15

3.3.1 Structura unei aplicații Android…………………………………………………………..16

3.3.2 Ciclul de viata al unei activitati…………………………………………………………..17

3.3.3 Resursele unei aplicatii Android………………………………………………………….18

3.4 Prezentarea funcționalităților și a elementelor de cod asociate…………………………..19

3.4.1 Funcționalități asociate platformei Android………………………………………….19

3.4.1.1 Interfață grafică cu utlizatorul………………………………………………..19

3.4.1.2 Prezentarea funcționalităților la nivel de cod……………………………21

3.4.2 Conexiunea Android – Baza de date…………………………………………………….25

3.4.3 Prezentarea bazei de date……………………………………………………………………26

4.Studiu de caz…………………………………………………………………………………………………….29

4.1 Demonstrarea modului de funcționare a aplicației……………………………………………29

4.2 Testarea functionalitatii aplicatiei…………………………………………………………………..31

5. Concluzii si contributii personale…………………………………………………………………….32

5.1 Contribuții personale…………………………………………………………………………………….32

5.1.1 Integrarea unor servicii în aplicație………………………………………………………32

5.2 Concluzii…………………………………………………………………………………………………….33

5.3 Demersuri viitoare……………………………………………………………………………………….33

Anexe…………………………………………………………………………………………………………………34

Bibliografie………………………………………………………………………………………………………..38

1.Introducere

Android este printre cele mai populare sisteme de operare ce oferă suport pentru numeroase aplicații ale majorității telefoanelor mobile. Aceste aplicații au rolul de a oferi un mod de relaxare, de distracție dar uneori și ajutor legat de diferite probleme ale utilizatorului.

Pentru a dezvolta o aplicație Android este necesară o bună cunoaștere a funcționalității platformei de dezvoltare, cunoștințe bune ale limbajului de programare Java, limbajului de marcare XML, și,dacă este nevoie, multe alte tehnologii ce ajută la îmbunătățirea funcționalităților aplicației.

1.1 Obiectivele lucrării de licență

Tema proiectului de licență consta în dezvoltarea unei aplicații de gestiune a localurilor, pornind de la alte concepte față de cele cu care s-au dezvoltat puținele aplicații similare existente pe piață.

Prin urmare, obiectivul lucrării de licență consta în dezvoltarea unei aplicații pentru telefonul mobil de tipul smartphone cu sistem de operare Android ce are ca scop oferirea de informații precise utilizatorului, informații legate de diferite localuri unde își poate petrece timpul alături de prietenii lui.

1.2 Prezentarea capitolelor

În capitolele ce urmează vor fi prezentați pașii ce au fost urmați pentru dezvoltarea aplicației.

În capitolul 2 sunt prezentate studiile asupra aplicațiilor similare în domeniu, funcționalitățile existente, cele îmbunătățite dar și cele noi implementate. Se face o prezentare a tehnologiilor și instrumentelor utilizate.

În capitolul 3 se prezintă motivația soluției alese,lista de cerințe/funcționalități modul de dezvoltare a aplicației, arhitectură și funcționalitățile acesteia.

În capitolul 4 se prezintă modul de utilizare a aplicației și modul în care aceasta a fost testată.

2.Stabilirea funcționalităților aplicației

2.1 Studiu asupra realizărilor similare din domeniu

Platforma Google Play ce oferă aplicații posesorilor de smartphone cu sistem de operare Android pune la dispoziție utilizatorilor câteva aplicații cu diferite funcționalități despre anumite localuri ce sunt căutate. Aceste aplicații, în principal, oferă informații cum ar fi adresă, număr de telefon și program.

Funcționalitatea principală, în jurul acesteia dezvoltându-se aplicațiile, ar fi localizarea acestor locații pe harta orașului pentru a oferi utilizatorului o perspectivă mai bună asupra adresei acesteia. Alte funcționalități ar fi: posibilitatea unui utilizator de a-și exprima opinia legată de un local prin opțiunea “Like”(Îmi place) sau prin oferirea unei note. Aceste funcționalități nu sunt foarte relevante pentru cineva ce dorește să își faca o părere despre un local deoarece nu sunt contorizate sau salvate pentru a nu oferi posibilitatea unui utilizator să iși exprime opinia o singura dată, ci poate să o facă de mai multe ori la o anumita perioadă de timp.

2.2 Stabilirea funcționalităților aplicației raportat la funcționalitățile aplicațiilor similare

Spre deosebire de aplicațiile deja existente, aplicația pe care eu am dezvoltat-o pune accent pe informațiile oferite utilizatorului despre localurile pe care acesta le caută, informații care îi va oferi o părere despre locația în care dorește să își petreacă timpul alături de prieteni și să nu regrete apoi decizia luată.

Funcționalitățile asemănatoare cu aplicații similare sunt:

Afișarea unei liste cu localuri( pub-uri, cafenele, restaurante si cluburi grupate dupa aceste categorii);

Oferirea de informații despre un local căutat cum ar fi: adresă, număr de telefon și program de lucru;

Localizare pe harta orașului a locației respective;

Funcționalitățile noi dezvoltate sunt:

Posibilitatea de creeare de cont pe baza unor informații cerute cum ar fi: username, parolă și adresă de e-mail.

La fiecare creeare de cont, utilizatorul va primi prin mail o confirmare.

Lista cu localuri poate fi vizualizată fără a fi autentificat dar pentru a continua si vizualiza detalii despre localuri, e necesară obligatoriu autentificarea.

Un sistem de rating prin care utilizatorul poate da o notă unui local sub forma unui număr de stele, număr cuprins între valorile 1 și 10. Acest sistem calculează media notelor oferite de către utilizator pentru afișarea rating-ului localului dar afișează și nota oferită pentru fiecare local în parte.

Opțiune de notificare în care utilizatorul poate salva denumirea unui local în cazul în care în viitorul apropiat sau îndepartat nu mai ține minte dacă a vizitat localul respectiv sau nu.

Visited List – opțiune prin care utilizatorul poate vedea toate locațiile pe care le-a bifat anterior cu notele date.

Pentru fiecare locație se afișează: rating, câți utilizatori au votat, câți utilizatori au bifat localul ca fiind vizitat.

2.3 Stabilirea și descrierea instrumentelor utilizate

2.3.1 Descrierea tehnologiilor folosite

În dezvoltarea aplicației s-au folosit o serie de tehnologii moderne aflate în plină dezvoltare, tehnologii folosite și de mari firme naționale si internaționale cum ar fi:

Platforma software ANDROID

JAVA

XML

MySQL

PHP

Ca medii de dezvoltare s-au folosit urmatoarele:

Android Studio

Sublime Text 3

WAMP

Pentru testarea aplicației s-au folosit urmatoarele:

Mașina virtuală Genymotion

Emulator încorporat în Android Studio

2.3.1.1 Platforma software ANDROID

Sistemul de operare ANDROID este un sistem de operare ce ruleaza pe anumite dispozitive( smartphone, tablete, ceasuri inteligente, etc) dezvoltat inițial de compania Google ce are la baza nucleu de Linux. Se află în continuă dezvoltare si oferă o variatate largă de funcționalități astfel încat nu mai este necesar folosirea laptopurilor. Există mai multe versiuni de Android ultima abia apărută pe piața fiind versiunea 5, fiecare versiune având un nume de cod.

Figura 2.1: Evoluția versiunilor Android  []

Platforma software ANDROID ofera posibilitatea utilizatorilor sa dezvolte aplicații în limbajul de programare JAVA iar pentru interfața grafica cu utilizatorul se folosește Extensible Markup Language (XML) ce utilizeaza un set de reguli, asemănător cu tehnologia HTML, pentru a gestiona elementele grafice.

Interfața implicită cu utlizatorul a Android-ului se bazează pe manipulare directă, datele de intrare introducându-se prin atingere, eveniment ce corespunde cu acțiuni din lumea reală cum ar fi atingere,ciupire, ștergere cu degetele; și o tastatură virtuală. Aplicațiile,care extind funcționalitatea dispozitivelor, sunt scrise folosind Andoid sofware development kit (SDK) și de limbajul de programare JAVA care are acces complet la API-urile Android.

2.3.1.2 Limbajul de programare JAVA

Java este o tehnologie inovatoare care s-a remarcat prin impactul avut asupra celor care dezvoltă aplicații software,caracteristicile prin care s-a impus fiind robustețe,simplitate, complet orientat obiect,securitate bună, portabilitate,compilat și interpretat,fiind studiat în majoritatea facultăților românești și străine. Programele ce sunt scrise pentru platformă Java trebuie să ruleze similar pe orice combinații de dispozitive hardware și pe orice sistem de operare, operațiune posibilă datorită faptului că aceasta compilare a codului Java se face printr-o reprezentare intermediară numită Java bytecode și nu direct cu arhitectură specifică codului mașina. Această tehnologie este limbajul de programare de bază folosit pentru dezvoltarea aplicațiilor Android.

2.3.1.3 Extensible Markup Language (XML)

XML este un limbaj de marcare care definește un set de reguli pentru documentele de codare într-un format foarte ușor accesibil utilizatorului uman. Ca și Java, XML este folosit de către tehnologia Android pentru gestiunea elementelor grafice și gruparea lor. Principalele caracteristici sunt:

este foarte mult folosit ca un format pentru stocarea documentelor și prelucrare atât online cât și offline sub formă de tag-uri.

Pe baza marcării conținutului se sporește posibilitatea de căutare ceea ce face posibilă clasificarea datelor.

Nu permite adăugarea de referințe către date externe, nume de persoane, declarări de comentarii fără conținut.

Este extensibil specificând numai regulile structurale ale tag-urilor și deloc specificațiile privind etichetele lor în sine.

2.3.1.4 MySQL

MySQL este un sistem relațional open-source de management al bazelor da date. Este printre cele mai populare tehnologii alese utilizată în dezvoltarea aplicațiilor web. Proiectele open-source care necesită sistem de gestiune al bazelor de date folosesc MySQL pentru seria largă de caracteristici și funcționalități care le pune la dispoziție dezvoltatorului. Este folosit deasemenea și de către site-urile companiilor internaționale cum ar fi:Google,Youtube, Twitter, etc. Printre caracteristicile principale amintim:

Este dezvoltat în C și C++.

A fost testat pe o gamă largă de compilatoare diferite.

Funcționează pe mai multe tipuri de sisteme de operare.

Pentru partea de server folosește un design diversificat cu module independente.

A fost proiectat pentru a fi multi-threaded utilizând cu ușurință mai multe procesoare doar dacă acestea sunt disponibile.

Implementarea funcțiilor se face utilizând o clasă de librarii foarte optimizata neexistând alocare de memorie după executarea query-ilor.

Oferă spre utilizare un server că program separat utilizat într-o aplicație client-server.

2.3.1.5 Limbajul de programare PHP

PHP este tehnologia care folosește anumite script-uri pentru proiectarea și dezvoltarea aplicațiilor web dar poate fi folosit și că limbaj de programare de uz general. Codul PHP poate fi combinat cu ușurința cu codul HTML sau cu diverse framework-uri. Caracteristicile cele mai importante sunt:

Scalabilitate

Flexibilitate cu orice tip de aplicație

Open-source

Viteză mare la compilare cu toate că folosește multe resurse

Foarte ușor de folosit fiind asemănător cu limbajul C după cum se observă și în Fig 2.3.1

Stabil: când se găsesc erori sau bug-uri, acestea sunt foarte ușor de rezolvat

Gamă largă de librarii puse la dispoziție utilizatorului.

Fig 2.3.1: Exemplu cod php

2.3.2 Descrierea mediilor de dezvoltare

2.3.2.1 Android Studio

Android Studio este un mediu de dezvoltare integrat (IDE) pentru a aplicațiile pe platforma Android. Este bazat pe software-ul IDEA JetBrains IntelliJ, posibilitate de descărcare pe sistemele de operare Windows, MAC OS și Linux și a înlocuit instrumentul de dezvoltare Eclipse Android Development Tools (ADT) care era principalul IDE de dezvoltare pentru această tehnologie,fiind o lovitură dată companiei Google. Folosește pentru programare un set de rutine,protocoale și instrumente numit API. Prin API înțelegem acea componentă software ce gestionează operațiunile, datele de intrare și de ieșire și tipurile de bază. Definește funcționalități ce sunt diferite de implementările lor prin care se permite adăugarea de definiții și implementări fără a compromite interfață grafică.Un API oferă posibilitatea de a împărți codul în blocuri ce vor fi dezvoltate separat, apoi urmând ca programatorul să unească aceste blocuri pentru o funcționalitate completă. Principalele caracteristici ale mediului de dezvoltare Android Studio sunt:

Sistem flexibil bazat pe Grindle build

Generează multiple variante de fișiere apk

Pune la dispoziție template-uri pentru a ajuta utilizatorul să cunoască toate caracteristicile

Editor performant cu suport de drag and drop pentru editarea interfeței grafice cu utilizatorul

Instrumente specifice pentru a crește performanță,utilizabilitatea, compatibilitatea,etc

2.3.2.2 Editorul Sublime Text

Sublime Text este un editor de text cu o interfață de programare a aplicațiilor realizată cu ajutorul limbajului de programare Python. Oferă posibilitatea de dezvoltare a aplicațiilor cu diferite limbaje de programare sau limbaje iar funcționalitatea acestuia se poate extinde către utilizatori cu plugin-uri, aceste lucruri depinzând de licențiere. Principalele caracteristici sunt:

Completare automată a codului ce face că scrierea codului să fie mai rapidă

Ușurință de înserarea a textului

Plasarea cursorului oriunde programatorul dorește

Selectarea multiplă de linii,cuvinte și coloane.

2.3.2.3 WampServer

WampServer este un software dezvoltat special pentru sistemul de operare Windows și pune la dispoziție programatorilor o serie de tehnologii cum ar fi:Apache web server, OpenSSL pentru suport SSL, baze de date MySQL și limbajul de programare PHP.

2.3.3 Mașina virtuală Genymotion

Genymotion este emulator Android, printre cele mai rapide, care vine cu configurări prestabilite pentru testarea aplicațiilor și folosește accelerare hardware OpenGL. Proiectul a evoluat de la vechiul proiect BuildDroid, apoi Android, și vine cu un design nou jucător, instalare și mai mult. Principalele caracteristici sunt:

Este ușor de descărcat și pune la dispoziție mașini virtuale gata configurate și acoperă o gamă largă de versiuni începând cu Android 2.x

Simulează conexiunea WiFi.

Simulează bateria unui telefon și GPS-ul.

Suport ADB.

Conține plugin-uri de Eclipse și Android Studio.

Poate rula pe sistemele de operare Windows, Linux și Mac.

Afișaj: accelerator hardware OpenGL, mai multe ecrane.

Suport pentru update-uri și patch-uri.

Fig 2.3.3: Emulator pentru Google Nexus 4

3.Considerente legate de dezvoltarea aplicației

3.1 Motivația soluției alese

Ideea de a dezvolta aceasta aplicație de gestiune a localurilor mi-a venit du pa multe ieșiri cu prietenii în oraș și după ce ne întâlneam, mereu apăreau aceleași întrebări: unde mergem?, haideți să mergem acolo dar unde e?, dacă mergem acolo oare o fi frumos?, dar oare mai e deschis la ora asta?,etc. Înainte de a lua decizia am cerut sfatul prietenilor și din relatările lor, o astfel de aplicație ar fi foarte folositoare.

Pentru dezvoltarea acestei aplicații de gestiune a localurilor am ales tehnologii performante, tehnologii care le folosesc majoritatea companiilor și cel mai important, aplicația să fie obligatoriu pentru telefonul mobil. Platforma software aleasa a fost Android deoarece este cea mai populara printre telefoanele mobile de pe piata,documentatia este mai libera de licente, mai detaliata si programarea se realizeaza in limbajele JAVA si XML.

De ce aplicație pentru telefonul mobil și nu direct o aplicație web ce poate fi accesată direct din browser? Ei bine, o aplicație pe mobil are implementări specifice sistemului de operare al telefonului și astfel beneficiază de puterea de procesare a telefonului; și un utilizator,statistic vorbind,prefera o aplicație pe mobil deoarece oferă o experiență personalizată și uneori nu necesită conectivitate la internet. Pe lângă aceste motive legate de performanță și cerințele utilizatorului, un alt motiv ar fi unul personal, planul fiind să lucrez pe o tehnologie nestudiata până acum.

3.2 Specificarea listei de cerinte si listei de specificatii

3.2.1 Lista de cerințe

În dezvoltarea aplicației s-au urmărit anumite cerințe pentru a satisface nevoile eventualilor utilizatori precum:

Nume: Aplicație de gestionare a localurilor.

Scop: Formarea unei păreri pentru utilizator pentru a lua mai ușor o decizie în ceea ce privește localul în care dorește să meargă.

Performante: Afișarea informațiilor dorite cât mai detaliat posibil.

Costuri: 0.

3.2.2 Lista de functionalitati

Sistemul de operare necesar este cel mai utilizat de către deținătorii de telefon mobil

Funcționalitate complexă dar nu foarte performanță,astfel aplicația funcționează pe versiuni de Android începând cu versiunea 4.4.

Interfață grafică cu utilizatorul simplista dar în același timp nu oferă nici un dubiu legat de funcționalitățile oferite de aplicație.

Informațiile primite să fie la obiect.

3.3 Arhitectura aplicatiei

Arhitectura unei aplicații reprezintă structura acesteia, structură care este împărțită în mai multe module în care se pun în evidență principalele funcționalități și legăturile dintre acestea.

“În proiectarea unei arhitecturi software divizarea aplicației în componente interconectate, module, obiecte sau orice alte unități de partiționare software, reprezintă o sarcină care ocupă o bună parte din timpul unui arhitect software. Împărțirea unei aplicații în componente trebuie realizată în funcție de cerințele și constrângerile pe care aplicația finală trebuie să le îndeplinească.”

Pentru a înțelege arhitectura unei aplicații Android, trebuie stăpânite foarte bine anumite concepte legate de funcționarea aplicației ce va permite programatorului să implementeze funcționalitățile dorite și să controleze și exploateze la maxim componentele aplicației, ciclul de viață al acesteia și gestionarea resurselor.

Principalele lucruri ce trebuiesc menționate legate de arhitectură unei aplicație Android sunt:

Codul aplicației este compilat de mașină virtuală Dalvik, transformând fișierele .java în fișiere .dex.

Conține un fișier .apk ce conține toate bibliotecile și clasele necesare dezvoltării unei aplicații.

Aplicația este executată de către sistemul de operare Android ce are la baza Linux, fiecărei aplicații atribuindu-se un id utilizator unic iar resursele alocate sunt accesibile doar pentru acel utilizator.

Informații ce țin de securitatea aplicației( monitorizare SMS, acces la internet, acces la modulele de navigare prin GPS, date de contact) se gestionează doar cu acordul utilizatorului, acestea fiind configurate cu ajutorul fișierului Manifest.xml.

Printr-o aplicație Android înțelegem una sau mai multe activități care se referă la ecranul telefonului și precesele coordonate de sistemul de operare Linux. Durata de viață a unei activități nu depinde de durată de viață a procesului care rulează, o activitate poate rămâne afișată chiar dacă procesul s-a terminat.

Spre deosebire de celelalte limbaje de programare, aplicațiile Android nu au un punct din care începe execuția, acel “main()” prezent la programele C,C++,Java,etc.

3.3.1 Structura unei aplicații Android este alcătuită din următoarele componente principale:

Activitățile

Reprezintă interfață cu utilizatorul.

Au ciclu de viață separat față de ciclul de viață al procesului asociat.

Pot fi accesate de aplicații diferite.

Pot compune o aplicație dar doar una va fi principală.

Sunt gestionate de managerul de activități cu ajutorul unei stive în care o activitate poate avea una din stările următoare: pornită, în execuție, întreruptă, oprită, distrusă.

Sunt implementate cu ajutorul unei subclase a clasei Activity.

Intențiile

Sunt o componentă ce se folosesc la descrierea unei acțiuni viitoare, cel mai des fiind întâlnite la trecerea de la o activitate la alta.

Activează noi activități sau servicii printr-un mesaj asincron.

Sunt o instanțiere a clasei Intent.

Service

Funcționalitate ce se execută în spatele interfeței, nefiind vizibile utilizatorului.

Este o instanțiere a clasei Service.

Manager de conținut

Constituie un API ce se ocupă de datele private.

Oferă o alternativă de stocare a informațiilor, în felul acesta nu mai e nevoie de sistem de fișiere, baze de date sau alte moduri.

Controlează transferul de date între aplicații.

Este o instanțiere a clasei ContentProvider.

Broadcast receiver

Componenta responsabilă cu anunțurile propagate la nivelul sistemului.

Instanțiere a clasei BroadcastReceiver.

3.3.2 Ciclul de viata al unei activitati

Activitatea este printre cele mai importante componente ale unei aplicații Android cu care se realizează interfață grafică cu utilizatorul. Este echivalentul unei ferestre desktop al unui calculator sau laptop. Prin ciclul de viață al unei activități înțelegem stările în care aceasta se afla la un moment dat în timpul execuției. Aceste stări pot fi: running, paused, stopped, destroyed,etc.

Fig 3.3.2 Starile prin care poate trece o aplicatie

3.3.3 Resursele unei aplicatii Android

Toate aplicatiile dezvoltate in orice limbaj folosesc resurse de genul: texte, fisiere video, audio, etc, toate acestea facand mai placuta utilizarea aplicatiei de catre utilizator. Cu toate ca aceste resurse sunt gestionate de codul aplicatiei, este recomandat ca acestea sa fie stocata in afara aplicatiei. Deobicei sunt stocate intr-un director numit “res” si se specifica in codul aplicatiei calea catre acest director.

Pentru accesul si controlul acestor resurse, compilatorul android genereaza o clasa “R” caruia i se asociaza identificatorii setati. Pentru a gestiona cat mai corect si usor resursele, acestea pot fi salvate in interiorul unor fisiere. Exemplu: resursele de tip string se pot salva in interiorul fisierului res/values/strings.xml.

Fig 3.3.3 Exemplu de fisier unde sunt salvate resurse ce tin de codul culorilor

3.4 Prezentarea funcționalităților și a elementelor de cod asociate

3.4.1 Funcționalități asociate platformei Android

3.4.1.1 Interfață grafică cu utlizatorul

Un utilizator al unei aplicații trebuie să găsească foarte ușor și foarte rapid ceea ce caută. Interfața aplicației dezvoltate conține pe primul ecran( ecran ce va fi numit în continuare „activitate” în conformitate cu Android) o bară de activități și informații situată în partea de sus. Aceasta bară conține denumirea aplicației și anume Find & Enjoy, un buton de logare în contul creat anterior sau ce va fi creat, iar după ce acest buton va fi apăsat, el va dispărea, alte două elemente fiind afișate în locul acestuia: username-ul utilizatorului autentificat și un buton de accesare a opțiunii „Visited List”, opțiune ce va fi detaliată în secțiunile următoare. Aceasta bară de activități va fi afișată pe orice activitate accesată ulterior, mai puțin activitățile de autentificare și de creare cont.

Pe această primă activitate mai sunt afișate patru butoane ce oferă accesul la cele patru categorii de localuri( pub-uri, cafenele, restaurante și cluburi) fiecare buton fiind ilustrat cu câte o poză sugestivă pentru categoria respectivă.

Fig 3.4.1.1 Prima activitate

Activitățile afișate după apăsarea butoanelor de pe prima activitate sunt: activitatea în care utilizatorul introduce username-ul și parola și buton de autentificare iar în cazul în care nu are cont, poate accesa activitatea de creare cont de pe butonul cu același nume unde introduce aceleași date menționate anterior dar în plus și adresa de e-mail. Celelalte activități rezultate sunt cele în care se afișează o listă de localuri pentru fiecare categorie, fiecare local putând fi accesat.

Cea mai importantă activitate este cea afișată în urma alegerii unui local. Se folosesc elemente de tip TextView pentru afișarea informațiilor de tipul: denumirea localului, adresa, telefon, program de lucru dar și alte informații legate de alte elemente.

Tot în această activitate se ilustrează rating-ul localului respectiv. Pentru aceasta s-a folosit o poză sugestivă(o stea galbenă) asupra căreia se afișează această notă. Pentru a nota localul respectiv, s-a introdus un element de tip „ratingBar” oferind posibilitatea utilizatorului să noteze alegând un număr de stele cuprins între 1 și 10. În momentul în care notarea s-a făcut, unele elemente își schimbă proprietățile astfel încât utilizatorul să nu mai poată nota din nou.

O altă funcționalitate ilustrată este opțiunea de bifare a localului prin care utilizatorul își poate nota orice local care l-a vizitat. Această opțiune are rolul de a ține o evidentă pentru fiecare utilizator despre localurile vizitate pentru vizualizări ulterioare. Ultimul element ilustrat pe aceasta activitate este un buton ce ofera acces la activitatea de localizare pe harta a localului.

Fig 3.4.1.2 Activitate detalii local

Activitatea ce ilustrează locația pe hartă a unui local este diferită de celelalte. Dacă până acum activitățile erau de tipul “blank activity”, această activitate este de tipul “map activity”. Diferit este faptul că folosește ca fundal, o zonă din harta unui oraș, zona dată de coordonatele specificate. Această hartă poate fi de tipul: normală, panoramică de la nivelul străzii, vedere din satelit, dar și altele depinzând de cât de mult suporta telefonul mobil pe care rulează aplicația.

Pentru indicarea exactă a adresei dată de coordonate, este afișat un obiect de tip “marker”, asemănător cu o săgețica cu vârful în jos, căruia i se poate atașa un text, deobicei acesta fiind numele locației căutate.

Fig 3.4.1.3 Localizare pe harta orasului

3.4.1.2 Prezentarea funcționalităților la nivel de cod

Interfața grafică cu utilizatorul este partea frumoasă frumoasă a aplicației, partea de care utilizatorul se bucura, dar în spatele tuturor funcționalităților stau sute de linii de cod la care doar dezvoltatorul aplicației are acces, linii de cod ce vor fi explicate în următoarea parte. Trebuie menționat faptul că pentru funcționalitățile implementate s-au folosit librarii Java și Android ce simplifica modul de lucru cu anumite obiecte. Aceste librarii sunt încărcate dinamic și pot fi apelate oricând în momentul rulării programului. Fiind independentă de sistemul de operare, platforma Java nu se poate baza pe toate librăriile puse la dispoziție, însă oferă oferă un set de funcții comune pentru toate sistemele de operare moderne.

Mai întâi de toate, trebuie menționat ca pentru crearea unei activități în Android, este necesar să se creeze două tipuri de fișiere: un fișier Java în care se vor implementa funcționalitățile elementelor de pe o activitate și un fișier XML asociat în care se vor implementa elemente legate de design și așezare pe ecran.

Orice obiect afișat pe activitatea aplicației este creat în fișierele Java corespunzătoare activității în care este afișat dar elementele de design sunt adăugate în fișierul XML. Aici se pot modifica orice element cum ar fi: mărime, culoare,distanța față de margini,etc. Legătura între fișierul Java și XML se face prin atribuirea unui “id” fiecărui obiect.

Prima funcționalitate ce va fi prezentată este bară de activități situată în partea de sus a activității. Acest element a fost creat cu ajutorul obiectelor de tip “Fragment”. Aceste obiecte sunt independente de activități dar pot funcționa împreună. Un obiect de tip fragment se poate afișa pe orice activitate având aceeași funcționalitate sau afișare a elementelor oriunde acesta va fi introdus. Se pot crea oricâte obiecte de acest tip și se pot introduce pe orice activitate de câte ori se dorește.

Butonul de logare este afișat pe acea bară de activități și oferă posibilitatea dar în același timp și obligația utilizatorului de a se autentifica sau crea cont pentru accesul la anumite funcționalități ale aplicației. Acest sistem de logare a fost conceput în felul următor: pentru autentificare, sunt necesare introducerea a doua informații( username și parola), acestea fiind căutate în baza de date și se afișează mesaj corespunzător reușirii sau eșuării autentificării. Pentru afișarea mesajelor s-a folosit obiect de tip “Toast”, obiect ce afișează mesajul sub forma unei căsuțe ce apare pe ecran și dispare apoi după o perioadă de timp setată de dezvoltatorul aplicației. În căzut reușirii autentificării, butonul de logare va dispărea,în locul lui fiind afișat numele utilizatorului logat.

Fig 3.4.1.2.1 Crearea unui obiect in fisierul XML

Pentru opțiunea de creare cont, utilizatorului i se cere să introducă trei informații (username, parola și adresa de e-mail),acestea fiind introduse în baza de date. Trebuie menționat faptul că aceste date cerute de aplicație se preiau cu ajutorul obiectelor de tip “EditText”.

Activitățile corespunzătoare fiecărei categorii de localuri sunt afișate în urma alegerii făcute de utilizatori. Pe fiecare activitate va fi afișată o listă cu un anumit număr de localuri pe care utilizatorul le poate accesa doar dacă acesta s-a autentificat,în caz contrar se va afișa un mesaj ce i se cere să se autentifice. Această listă a fost implementată sub forma unei înșiruiri de butoane, câte unul pentru fiecare local, apăsarea oricărui buton conducând la afișarea aceleași activități unde vor fi adăugate informații specifice localului care a fost accesat. În urma apăsării unui buton, localului respectiv i se va asocia un id care va fi folosit în funcționalitățile următoare.

Activitatea ce afișează informațiile despre un local accesat este cea mai importantă activitate și cuprinde numeroase funcționalități și elemente afișate ce având ca scop formarea unei păreri pentru utilizator în legătură cu localul accesat de acesta.

Afișarea denumirii localului se realizează prin intermediul unui obiect de tip TextView căruia i se setează textul cu denumirea localului. Această denumire este preluată din baza de date cu ajutorul acelui id stabilit la accesarea localului.

La afișarea acestei activități, elementul care atrage atenția utilizatorului este acela unde se afișează nota localului. Acesta s-a realizat prin adăugarea unei imagini ce ilustrează o stea galbenă, element caracteristic și folosit cu regularitate pentru a afișa o notă sau un rating. În centru acestei imagini este afișată nota propriu-zisă a localului, preluată din baza de date,afișare realizată cu ajutorul unui obiect tot de tip TextView ce este suprapus peste imagine.

Sistemul de notare este alcătuit din trei elemente: două obiecte de tip TextView și un element de tip RatingBar. Acest ultim element constă în afișarea unui anumit număr de stele stabilit de către programator, în cazul acestei aplicații, numărul lor fiind zece. Inițial, dacă utilizatorul nu a notat localul respectiv, culoarea stelelor este gri. Efectuând notarea și alegând un număr de stele, acest număr va căpăta culoarea albastră. În urma notarii, asupra aplicației și a bazei de date se produc o serie schimbări. În momentul în care utilizatorul a notat, se face o reîncărcare a activității prin care se blochează obiectul de tip RatingBar afișând nota aleasa anterior; se recalculează nota localului respectiv și se va afișa nouă nota. Se produc schimbări și la nivelul celor două obiecte de tip TextView amintite anterior. Primul element afișa mesajul “Notează:” iar în urma notarii, mesajul afișat este “Ai notat”. Al doilea element afișează numărul de utilizatori care au notat localul respectiv până în acel moment, în urma notarii, valoare incrementându-se cu unu.

În cazul în care un utilizator accesează un local în care el deja notase, elementele vor fi afișate conținând nota acordată anterior și neavând posibilitatea de a vota din nou acel local.

Sistemul de bifare că “vizitat” a localului cuprinde două elemente: un obiect de tip Buton și un element de tip TextView. Acest sistem are rolul de a oferi utilizatorului o părere despre numărul de oameni care trece pragul localului respectiv. Butonul are afișat textul “Vizitează” iar în urma apăsării lui, se realizează o înregistrare în baza de date pentru că la accesări viitoare, utilizatorul să nu mai poate beneficia de această funcționalitate, și se mai produce o schimbare a celui de-al doilea element care afișa numărul de utilizatori care au vizitat localul respectiv.

Un alt element afișat pe această activitate este cel în care se afișează informații despre local: adresa, număr de telefon și program; aceasta realizându-se tot cu un element de tip TextView, setându-i-se textul cu cele trei informații preluate din baza de date.

Ultimul element afișat pe această activitate este un buton ce afișează pe harta orașului locația respectivă. Pe baza coordonatelor preluate din baza de date se deschide o activitate de tip “MapActivity” și cu ajutorul unui obiect de tip “Marker” se va indica exact poziția localului pe hartă. Pentru aceasta funcționalitate, a trebuit efectuate o serie de proceduri.

În primul rând, s-a folosit o activitate diferită față de cele anterioare ce afișează ca fundal harta setată. Au fost necesare integrarea serviciilor de Google Maps și Google Play, aceasta realizându-se prin adăugarea librăriilor specifice și adăugarea de plugin-uri emulatorului folosit.

Google Maps este un serviciu dezvoltat, evident, de compania Google ce consta într-un sistem de cartografiere web. Acest serviciu oferă imagini din satelit, vederi panoramice la nivelul străzii, condiții de trafic în timp real,etc. Pentru a putea fi integrat în aplicații, Google oferă un API ce permite că hărțile să fie incluse în aplicații. Acest serviciu este îmbunătățit constant și orice imagine vizualizată nu are vechime mai mare de trei ani.

Google Play, până nu de foarte mult timp cunoscut sub denumirea de Android Market, este o platformă de distribuție a serviciilor Google pentru dispozitivele ce utilizează sistemul de operare Android. Le este pus la dispoziție utilizatorilor, în varianta gratuită sau contra-cost, aplicații, jocuri, muzică, cărți, filme, programe de televiziune și multe altele.

În al doilea rând, pentru afișarea pe hartă a adresei unui local, a fost necesară integrarea în aplicație unui cod numit “Api Key”. Acest cod este oferit gratuit de către Google cu condiția de a avea un cont înregistrat la ei și introducerea unui link generat automat de către aplicație.

Exemplu Api Key: AIza**Dg8i1**LTm**XpT05Y**3lVqyR00**SWA (unele caractere au fost mascate deoarece acest cod este confidențial și poate duce la consecințe grave în urma folosirii acestuia de mai multe ori).

Fig 3.4.1.2.2: Integrarea serviciilor Google Maps

3.4.2 Conexiunea Android – Baza de date

Conexiunea intre platforma Android si baza de date si transferul de informatii de la una la alta se realizeaza cu ajutorul protoclului de comunicatii HTTP. Acest protocol are la baza ideea de a folosi o singura conexiune TCP pentru a trimite si primi cereri sau raspunsuri si nu cate o conexiune separat pentru fiecare. Exista avantaje si dezavantaje in folosirea acestui protocol.

Avantaje:

Folosește puține resurse .

Utilizează tehnologie pipeline.

Reduce aglomerarea rețelei.

Erorile apărute se pot raporta fără a închide conexiunea.

Dezavantaje: Dacă după primirea tuturor informațiilor de către ambele părți, clientul nu a închis conexiunea, aceasta nu poate fi restabilită de către alt client. Gravitatea acestei probleme depinde de arhitectură și configurarea serverului.

În aplicația noastră, conexiunea se realizează mai întâi prin crearea unu client care trimite cereri către server. Aceste cereri se realizează prin metoda HTTP POST, metodă care este implementată să furnizeze cereri către serverul web care acceptă informațiile primite și le stochează sub anumite forme, în cazul aplicației curente, în baza de date.

Legătura cu baza de date care se afla stocată local,se realizează cu ajutorul tehnologiei PHP. Folosindu-se funcția prestabilită mysqli_connect, având ca parametri IP-ul, numele și parola serverului și numele bazei de date. Odată ce conexiunea a fost stabilită, clientul va furniza cereri către server, cereri ce constă în anumite informații din baza de date.

Informațiile cerute sau ce se doresc introduse de aplicație în baza de date sunt obținute pe baza unor interogări(query). Dacă se dorește introducerea de date în baza de date, dacă procedura s-a finalizat cu succes, pur și simplu se vă trimită ca răspuns un simplu mesaj. Dacă cererea cuprinde furnizarea de informații, acestea sunt trimise înapoi către client sub formă de obiecte de tip JSon. Aceste obiecte reprezintă un format de date care poate cuprinde valori de orice fel:int double, float, string, etc. Odată ce aceste obiecte au fost primite de către client, acestea trec prin anumite proceduri de conversie pentru a fi folosite în continuare.

3.4.3 Prezentarea bazei de date.

Baza de date unde se stochează toate informațiile necesare aplicației, a fost dezvoltată utilizând platforma WampServer ce pune la dispoziție utilizatorului o gamă variată de servicii.

Conectarea între baza de date și aplicația Android se face cu ajutorul protocolului Http și e necesar Ip-ul calculatorului de pe care se face compilarea aplicației și cererile către server.

Baza de date este formata din sapte tabele: cafenea, club, pubs, restaurante, memorie,useri si vizita; tabele structurate in asa fel incat sa se obtina informatiile dorite fara a efectua interogari foarte complexe.

Fig 3.4.2 Exemplu de tabel

Pentru gestionarea tabelelor bazelor de date se folosesc interogări. Acestea sunt de mai multe feluri:

DDL ( Data Definition Language ): create, alter, drop, etc.

DML ( Data Manipulation Language): select, insert, update, delete,etc.

DCL ( Data Control Language ): grant,revoke.

TCL ( Tranzaction Control Language ): commit, savepoint, rollback, etc.

Tabelul “ușeri” conține patru coloane: ID, Username,Parola și E-mail. ID-ul este generat automat începând de la valoarea 1 și incrementandu-se cu o unitate la fiecare adăugare de date.

Celelalte coloane sunt populate cu informațiile primite de la aplicații, informații care utilizatorul le introduce pentru a-și crea un cont. Informațiile se introduc în tabel cu ajutorul comenzii insert.

Pentru a cere anumite informații din baza de date, se folosește comanda select.

Exemple: INSERT INTO `useri` (`Username`, `E-mail`, `Parola`) VALUES ('Prisacara', '[anonimizat]', 'p****a')";

SELECT Username FROM `useri` where ID =3;

Tabelele cafenea, club, pubs, restaurante au aceeași structură ce conține coloanele denumire, adresa, telefon, rating, nrUtilizatori, Id. Coloana ID are același comportament menționat mai devreme. Coloanele denumire, adresa, telefon sunt populate la crearea tabelului. Orice adăugare ulterioară se va face doar de dezvoltatorul aplicației, aceasta funcționalitate nedepinzând în nici un fel de utilizator. Coloanele rating și nrUtilizatori sunt setate implicit cu valoarea zero. Acestea se modifică în urma acțiunilor utilizatorului cu ajutorul comenzii update.

În funcție de nota introdusă de utilizator, valoarea coloanei de rating se recalculează și se va introduce noua valoare.

Tabelul “memorie” contine trei coloane: ID_user, denumire si rating. Acest tabel are rolul de a stoca informatii legate de notarea fiecarui local de catre fiecare utilizator. Acest tabel se populeaza in momentul in care un utilizator a notat. Se introduc Id-ul utilizatorului, denumirea localului si nota pe care acesta a dat-o. In acelasi timp se mai foloseste in momentul in care utilizatorul, notand anterior un local, il acceseaza din nou in aplicatie si va fi afisata valoarea data anterior preluata din baza de date.

Tabelul “vizita” are acelasi rol ca si tabelul “memorie”, numai ca se foloseste pentru functionalitatea de bifare ca vizitat a localului.

4.Studiu de caz

4.1 Demonstrarea modului de funcționare a aplicației

Aplicația dezvoltată a fost concepută în așa fel încât orice utilizator, chiar la prima sa utilizare, să nu aibă nici o neclaritate sau dubiu legat de funcționalitățile de care se poate bucura.

Cel mai potrivit mod prin care se poate ilustra modul de funcționare este folosind diagramele UML.

Unified Modeling Language (UML) este un limbaj de modelare aparținând domeniului ingineriei software ce are ca scop oferirea unei modalități de vizualizare a proiectării sau folosirii unui sistem sau a unei aplicații.

Diagramele UML sunt o reprezentare grafică a modelului unei aplicații și pe baza lor se pot realiza funcționalitățile ilustrate sau demonstra modul de funcționare. Există mai multe tipuri de diagrame dar principalele folosite sunt:

Diagrama de clase.

Diagrama de activități.

Diagrama cazurilor de utilizare.

Diagrama de secvențe.

Diagrama de stări.

Pentru a ilustra modul de funcționare a aplicației vom folosi două dintre aceste diagrame și anume diagrama de activități și cea a cazurilor de utilizare. În realizarea diagramelor s-a folosit instrumentul Astah ce pune la dispoziția utilizatorului o interfață cu toate elementele necesare unei diagrame, modul de lucru bazându-se pe drag&drop a elementelor și completarea cu textul dorit.

Diagrame de activități sunt reprezentări grafice ale fluxurilor de lucru de activități și acțiuni, cu suport pentru alegerea, repetare și concurență în trepte. În Unified Modeling Language, diagrame de activitate sunt destinate pentru a modela ambele procese, de calcul și de organizare. Diagrama de activitate arată un flux a controlului în ansamblul lui.

Fig 4.1 Diagrama de activități pentru demonstrarea modului de funcționare a aplicației

În Fig 4.1 elementele folosite au anumite semnificații:

Dreptunghiurile rotunjite reprezintă acțiunile.

Romburile reprezintă luarea unei decizii.

Bară înnegrită reprezintă sfârșitul mai multor acțiuni.

Cercul negru reprezintă starea inițială.

Cercul negru încercuit reprezintă starea finală.

Conform Fig 4.1 se poate vizualiza modul de funcționare al aplicației al aplicației. Starea inițială corespunde cu prima activitate afișată la deschiderea aplicației. În acest moment, utilizatorul are două opțiuni la dispoziție: să se autentifice sau să aleagă o categorie de localuri.

Prin alegerea opțiunii de autentificare, utilizatorul va fi redirecționat pe o altă activitate unde, după ce a introdus datele, se poate autentifica. În cazul în care nu are cont creat, poate alege opțiunea de creare cont prin care va putea să își introducă datele cerute și să își creeze contul.

Alegând una din categoriile de localuri afișate, utilizatorul va fi redirecționat pe o activitate în care se va afișa o listă de localuri specifice categoriei. Accesând una din opțiuni, o nouă activitate va fi deschisă, doar dacă a fost făcută autentificarea. Dacă nu, un mesaj se va afișa prin care se va cere acest lucru, în același timp continuarea nefiind posibilă.

Accesând una din opțiunile afișate și autentificat fiind, se va afișa o activitate în care vor fi ilustrate informații și caracteristici ale localului cum ar fi: rating, număr de vizitatori, notă pe care a dat-o utilizatorul anterior (dacă a făcut acest lucru) și numărul de persoane care a notat acest local.

În acest moment, utilizatorul are la dispoziție trei opțiuni: poate să noteze localul doar dacă nu a mai făcut-o anterior, poate bifa localul că vizitat și poate vizualiza pe harta orașului prin GPS locația exactă a localului respectiv.

O opțiune valabilă în orice moment al navigării prin aplicație, doar după autentificare, este vizualizarea tuturor locațiilor care au fost bifate că vizitat. Se va afișa o listă cu denumirea tuturor localurilor. Similară este și opțiunea log ouț prin care se va ieși din contul respectiv.

4.2 Testarea functionalitatii aplicatiei.

Aplicatia a fost testata, pe tot parcursul dezvoltarii, pe un emulator ce simuleaza toate functionalitatile telefonului mobil Google Nexus 4 cu sistem de operare Android 4.4. O testare finala a fost facuta tot pe acest emulator, dar si pe un telefon mobil Sony Xperia Z1 ce are sistem de operare Android 5.

Toate functionalitatile implementate ruleaza conform planului stabilit pe emulator, in schimb pe telefon, componentele ce tin de preluare si adaugare de informatii din/in baza de date nu functioneaza, serverul fiind unul local.

5. Concluzii si contributii personale

5.1 Contribuții personale

Un studiu realizat asupra puținelor aplicații independente de gestiune a localurilor existente a dezvăluit faptul că majoritatea se bazează pe localizarea unei locații și mai puțin pe oferirea de informații utile legate de ea.

Prin aplicații independente se face referire la aplicațiile care nu sunt integrate în alte aplicații cum ar fi Facebook, Twitter și să beneficieze de unele funcționalități ale acestora. Prin independență se înțelege faptul că aplicația rulează indiferent de celelalte aplicații, având fiecare funcționalitate implementată și concepută strict pentru aplicația în sine.

O altă caracteristică negativă este denumirea aplicației care nu este foarte sugestivă pentru rolul care o are și astfel unii utilizatori nu sunt atrași să o utilizeze.

În aplicația Find&Enjoy s-a urmărit oferirea de informații despre un local anume pentru că utilizatorul să își formeze o părere despre locația în care urmează să își petreacă timpul dar implementându-se și servicii de localizare pe hartă.

Funcționalitatea globală nou dezvoltată a aplicației este posibilitatea de a oferi și primi informații despre un local pe baza unui cont independent de alte aplicații, iar apoi acestea fiind centralizate și afișate în așa fel încât să ofere utilizatorului posibilitatea de a-și forma o părere.

5.1.1 Integrarea unor servicii în aplicație

Pentru o bună funcționare și o exploatare la maxim a unor elemente au fost necesare integrarea unor servicii, unele fiind integrate mai ușor decât altele.

Serviciile puse la dispoziție de compania Google pentru aplicațiile Android și folosite în aplicația prezentată sunt Google Play și Google Map. Pentru integrarea lor a fost nevoie de urmat o serie de proceduri și configurări ale compilatorului Android Studio, a fost necesar primirea acordului din partea companiei. Acest lucru s-a realizat prin crearea unui cont de Google și trimiterea către companie a unui link generat de aplicația în curs de dezvoltare, pe baza acestor informații, primind acordul sub forma unui cod numit Api Key.

5.2 Concluzii

Cu trecerea anilor, tehnologiile prezente încep să se dezvolte din ce în ce mai repede, în același timp , noi tehnologii fiind lansate ce fac concurenta celor mai vechi, odată cu acestea și aplicații ce pot ușura modul de viață al oamenilor.

Prin aplicația dezvoltată s-a urmărit îndeplinirea cerințelor utilizatorilor și anume ușurință de a lua o decizie în ceea ce privește alegerea unui local unde acesta dorește să își petreacă un moment din zi alături de prieteni sau familie.

Aplicația, fiind dezvoltată pe sistemul de operare Android care este cel mai popular printre majoritatea telefoanelor ce sunt pe piață, poate fi utilizată de persoane de orice vârstă.

Dezvoltarea aplicației a respectat obiectivele și cerințele stabilite, prin testare verificându-se fiecare funcționalitate. Aplicația finală funcționează la parametri normali iar performanțele acesteia oferă șansa unui mare grup de utilizatori să se bucure de funcționalitățile ei.

5.3 Demersuri viitoare

Pentru viitor, se urmareste adaugarea de noi functionalitati, imbunatatirea celor existente si utilizarea unor instrumente mai performante.

Noi functionalitati ce se doresc implementate sunt:

Adaugarea unui forum unde utilizatorii isi pot exprima opinia legata de localurile respective.

Posibilitatea de a vedea pe harta orasului cele mai apropiate localuri in functie de pozitia utilizatorului.

Imbunatatirea functionalitatilor existente:

Extinderea optiunilor de categorii, adaugand locatii de relaxare sau pentru plimbare cum ar fi parcuri,gradini zoologice, botanice, muzee si altele.

Imbunatatiri legate de instrumentele folosite la dezvoltare:

Baza de date sa fie stocata intr-un mediu online si nu doar local.

Anexe

Codul pentru o clasa nou implementata ce adauga functionalitati butoanelor din lista de localuri si atribuirea de id-uri ce sunt folosite pentru cautare in baza de date.

Metoda implementata pentru a modifica rating-ul in baza de date in functie de nota data de un utilizator.

Cod asociat modalitatii de notare in ambele cazuri: daca utilizatorul noteaza acum sau deja notase anterior.

Bibliografie

Neil Smyth, “Android Studio Development Essentials”

http://ocw.cs.pub.ro/courses/pdsd/laboratoare/laborator01

https://developers.google.com/maps/documentation/android-api/

https://developers.google.com/maps/documentation/android-api/start

https://developers.google.com/maps/documentation/android-api/start

James Sherar, “Make Your Own Android App”

http://developer.android.com/guide/components/fragments.html

http://developer.android.com/reference/java/net/HttpURLConnection.html

http://www.w3schools.com/php/

http://www.w3schools.com/sql/

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

Duane A. Bailey, “Java Structures: Data Structures in Java for the Principled Programmer”

Similar Posts