easytravel - alexandru ioan cuza universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt...
TRANSCRIPT
1
UNIVERSITATEA „ALEXANDRU IOAN CUZA” IAŞI
FACULTATEA DE INFORMATICĂ
LUCRARE DE LICENŢĂ
EasyTravel
Sistem integrat de asistență și prevenție
pe durata unei călătorii
Propusă de
Lucia Georgiana Coca
Sesiunea: februarie, 2017
Coordonator știinţific
Asistent. Dr. Vasile Alaiba
2
UNIVERSITATEA „ALEXANDRU IOAN CUZA” DIN IAȘI
FACULTATEA DE INFORMATICĂ
LUCRARE DE LICENȚĂ
EasyTravel
Sistem integrat de asistență și prevenție
pe durata unei călătorii
Coca Lucia Georgiana
Sesiunea Februarie 2017
Coordonator știinţific
Coordonator științific: Vasile Alaiba
3
DECLARAŢIE PRIVIND ORIGINALITATEA ŞI RESPECTAREA
DREPTURILOR DE AUTOR
Prin prezenta declar că Lucrarea de licenţă cu titlul ‘’EasyTravel” este scrisă de mine şi nu
a mai fost prezentată niciodată la o altă facultate sau instituţie de învăţământ superior din ţară sau
străinătate.
De asemenea, declar că toate sursele utilizate, inclusiv cele preluate de pe Internet, sunt
indicate în lucrare, cu respectarea regulilor de evitare a plagiatului:
− toate fragmentele de text reproduse exact, chiar şi în traducere proprie din altă limbă,
sunt scrise între ghilimele şi deţin referinţa precisă a sursei;
− reformularea în cuvinte proprii a textelor scrise de către alţi autori deţine referinţa
precisă;
− codul sursă, imaginile etc. preluate din proiecte opensource sau alte surse sunt utilizate
cu respectarea drepturilor de autor şi deţin referinţe precise;
− rezumarea ideilor altor autori precizează referinţa precisă la textul original.
Iaşi, Absolvent __________________
4
DECLARAŢIE DE CONSIMŢĂMÂNT
Prin prezenta declar că sunt de acord ca Lucrarea de licență cu titlul “EasyTravel”, codul
sursă al programelor şi celelalte conţinuturi (grafice, multimedia, date de test etc.) care însoţesc
această lucrare să fie utilizate în cadrul Facultăţii de Informatică.
De asemenea, sunt de acord ca Facultatea de Informatică de la Universitatea „Alexandru
Ioan Cuza” Iași să utilizeze, modifice, reproducă şi să distribuie în scopuri necomerciale
programelecalculator, format executabil şi sursă, realizate de mine în cadrul prezentei lucrări de
licenţă.
Iasi, Coca Lucia Georgiana
____________________
5
Cuprins
1. Introducere ...........................................................................................................................6
1.1 Începuturi ......................................................................................................................6
1.2 Ce înseamnă EasyTravel ...............................................................................................8
1.3 Motivaţie ........................................................................................................................9
1.4 Cerinţe funcţionale .......................................................................................................10
2. Contribuții ...........................................................................................................................11
3. Tehnologii folosite ..............................................................................................................12
3.1 Dezvoltarea aplicaţiei la nivel de server .....................................................................12
3.2 Instrumente pentru realizarea aplicaţiei Android ........................................................17
4. Arhitectura aplicaţiei ...........................................................................................................20
4.1 Serverul Web PHP ......................................................................................................20
4.2 Baze de date MySQL ..................................................................................................24
4.3 Clientul Android .........................................................................................................26
5. Manual de utilzare .............................................................................................................32
6. Integrarea serviciului Google Maps şi GPS .......................................................................38
7. Concluzii ............................................................................................................................44
8. Direcţii de dezvoltare .........................................................................................................45
9. Referințe .............................................................................................................................46
6
1. Introducere
Începuturi
De-a lungul istoriei sale, turismul a prezentat mai multe forme. Funcția globală a turismului
a fost plasată în cadrul socio-economic, pe fundalul istoric al diferitelor perioade traversate de
umanitate.
Evoluția, atat a turismului, cât și a turismului internațional se caracterizează, la nivel
mondial, printr-o tendință de creștere datorită influenței factorilor sociali, economici, politici și
demografici.
În tabelul 1 se poate observa o creşterea susţinută în perioda 2010-2020.
Previziunea sosirilor de turişti internaţionali pe regiuni
7
(a) Intraregional include sosirile din ţări de origine nespecificate.
(b) Long-Haul este definit ca restul, mai puţin turismul intraregional.
Repartizarea sosirilor internaţionale pe regiuni geografice confirmă poziţia de lider a
Europei (717 milioane), urmată de Asia de Est şi Pacific (397 milioane) şi de continentul american
(282 milioane).1 Urmează Africa, Orientul Apropiat şi sudul Asiei.
În ultimii ani industria din domeniul informatic oferă tot mai multe servicii care facilitează
traiul de viaţă a cetăţenilor pentru sistemul medical, de învăţământ, cultural, educaţional şi nu în
ultimul rând turistic.
În domeniul turistic cel mai mare reprezentat este TripAdvisor care oferă informaţii de la
milioane de oameni, din întreaga lume despre locaţii, restaurante, hoteluri şi optiuni de a-ţi petrece
cat mai frumos concediul.
Un alt reprezentat de seama, înfiinţat în 1996 este compania Booking, leader mondial
al rezervărilor hoteliere online. Zilnic, peste 1.200.000 de nopţi la hoteluri sunt rezervate pe
Booking.com, fiind destinat sectorului turistic şi de afaceri din întreaga lume.
Cu toate acestea evenimentele nefericite din ultimul timp care s-au intamplat peste tot
in lume, ridica un semnal de ingrijorare asupra potenţialilor cumpărători de produse de voiaj.
Astfel orientarea către nevoile și siguranța cumpăratorile de servicii de turism cunoaște o creștere
considerabilă.
1 http://biblioteca.regielive.ro/proiecte/economie/internationalizarea-turismului-235325.html
8
Ce înseamnă EasyTravel
Fig. 1 Sigla aplicației
Denumirea EasyTravel provine prin alăturarea a două cuvinte cu impact social și anume
travel ( tradus în limba română – voiaj ) care aduce în prim-plan ideea de vacanță, deplasare în
interes de serviciu și alte variații pe acest subiect, iar prin adjectivul easy ( având semificația în
limba română - ușor ) se face referire la ușurința prin care se pot cumpăra și primi serviciile oferite
de către acest operator.
Conceptul EasyTravel sugerează prin denumirea sa posibilitatea de a te deplasa ușor și în
siguranță. Încă din titlu, prin traducerea sa în limba română - Călătorie Ușoară, se remarcă
probabilitatea achiziționării unor servicii care să asigure o călătorie plăcută. De asemenea acest
nume sugestiv care a fost ales, inspiră potențialilor cumpărători ideea de fiabilitate.
Pe de altă parte această terminologie a fost aleasă deoarece la nivel mondial noțiunea
simplă travel este bine cunoscută chiar și de cei care nu sunt vorbitori de limbă engleză.
Acest serviciu integrat de asistență și prevenție pe durata unei călătorii oferă utilizatorilor
un mecanism de adresare direct către personalul autorizat în vederea semnalării unei probleme
apărute.
9
Motivație
În urma unei cercetări amănunțite, nevoia de a achiziționa servicii pentru călătorii are o
creștere seminificativă. La momentul actual, pe piață există diferite aplicații care deservesc aceste
necesități în mod diferit, dar nu și una care să reunească servicii de călătorie și asistență turistică
la distanță.
Prin conceptul de asistență turistică la distanță se va crea posibilitatea clientului de a
semnala prin intermediul aplicației mobile orice eveniment nefavorabil, precum probleme de
sănătate, accident, dezastre naturale cât și recomandări turistice. De asemenea va putea împărtăși
imagini din zona în care se află cu scop comercial.
Din experienţa proprie, pot spune, găsirea unei destinaţii de vacanţă poate fi anevoiasă şi
consumatoare de timp, prin căutarea şi compararea cu mai multe aplicaţii ce iţi pot oferi informaţii
cu privire la cazare, obiective turistice, transport. Deseori mi s-a întamplat, să găsesc cu greu,
informaţii cu privire la transportul intern al unui oraș, de asemenea să fiu sigură de valabilitatea
unor indicaţii postate pe un site de socializare.
Lucrarea de față are ca scop dezvoltarea unui sistem sigur și eficient pentru a călători,
motiv pentru care utilizatorii vor fi de tip client, administrator și angajați din cadrul serviciilor de
stat, precum Poliție, Salvamont care vor oferi servicii de ajutor în funcţie de problema semnalată.
Un alt motiv care stă la baza realizării acestei aplicații este nevoia de a reuni serviciile de
transport și cazare, inclusiv transportul intern din orașe pentru o mai bună desfășurare a destinației
alese.
De multe ori, pe durata unei călătorii, ne-am confruntat cu probleme de găsire a unui
mijloc de transport. Astfel aplicația iți oferă sugestii de mijloace de transport pentru orașul în care
te afli și detalii cu privire la achiziționarea unui bilet.
10
Cerințe funcționale
Soluţia funcţională EasyTravel oferă o interfaţă intuitivă permiţând oricărui potenţial turist
să aibe acces la serviciile oferite. Aceasta se împarte în două module principale care comunică.
Pentru dispozitivul mobil, utilizarea aplicaţiei este permisă în urma înregistrării şi
autentificării. La prima utilizare va fi necesară crearea unui cont de înregistrare pentru a putea avea
acces la utilizarea aplicaţiei. Dacă deja contul este creat se va trece direct la optiunea de logare.
Meniul oferă mai multe funcţionalităţă precum posibilitatea de realizare a unei fotografii
cu scop publicitar sau pentru a semnala o problemă. Utilizatorul are opţiunea de a trimite
fotografiile pentru a i se oferi asistenţă turistică sau cu scopul împărtăşirii impresilor din vacanţă
pe siteul oficial EasyTravel. O data ce alege aceasta opţiune, serviciul GPS va fi activ și va trimite
locaţia din care se află specificându-se latidunea, longitudinea, adresa, ţara, codul poștal şi oraşul.
Totodată, utilizatorul poate consulta serviciul ce oferă locația prin intermediul sistemului de hărți,
precum și direcția de orientare.
O dată ce a fost activat un cont de înregistrare acesta va fi putea fi folosit atât pentru mobil,
cât şi pentru siteul web.
Aplicaţia web oferă control pentru administrator în gestionarea cererilor primite de la
utilizatori şi oferirea de produse turistice. Această aplicaţie permite turiştilor să ofere informaţii
din experienţa lor de vacanţă. Fotografiile ce sunt trimise prin intermediul aplicaţiei mobile și sunt
afişate pe o hartă personalizată. Fiecărei fotografii îi va corespunde câte un marcator construit cu
locaţia oferită prin GPS.
Administratorii aplicaţiei web vor răspunde la cererile venite din partea turiştilor, vor
gestiona serviciile oferite pe site și vor valida materialele trimise de utilizator prin intermediul
aplicației mobile. Dacă informațiile trimise de utilizator nu corespund standardului acestea pot fi
șterse. De asemenea clientul se poate interesa de achiziţionarea unui produs de călătorie.
Personalul din cadrul asistenței turistice va primi informațiile din partea turistului în format
text, video sau fotografie.
11
Contribuții
După o cercetare mai elaborată cu privire la serviciile oferite pe piață în domeniul
turismului, și mai ales în Romania, am adus un plus de noutate prin funcționalitățile create în cadrul
aplicației EasyTravel.
Un prim aport adus acestei aplicații se remarcă prin integrarea sistemului de semnalare a
unei probleme apărute în timpul unei călătorii. Utilizatorul are permisiunea de a se adresa
personalului din cadrul poliției sau salvamontului, prin trimiterea de mesaj text, fotografie sau
conținut video. Astfel, personalul din cadrul unităților abilitate recepționează problema în timp
real și poate primi detalii prin intermediul imaginilor.
O altă contribuție semnificativă este adusă prin modalitatea de împărtășire a fotografiilor
din vacanță și validarea acestora. Integrarea acestui serviciu oferă o viziune clară asupra
destinațiilor de vacanță și reduce timpul de căutare pe mai multe surse. Turistul poate alege să
trimită fotografii din vacanță prin intermediul aplicației mobile, ce vor fi încărcate pe o hartă
stilizată. Totodată administratorul are dreptul de verificare a conținutului și de ștergere dacă
fotografiile nu sunt conforme cu standardul.
Integrarea serviciilor de transport și cazare la nivel mondial, și mai ales a transportului
intern a unui oraș, în cadrul aceleași aplicații aduce un element de actualitate. În acest context,
aplicația poate fi accesibilă oricărui tip de turist.
În vederea realizării acestui proiect, am dezvoltat o aplicație client – server care realizează
cereri în mod asincron. Pentru a putea oferi funcționalitățile indicate în paragrafele de mai sus, am
creat o aplicaţie mobilă ce comunică cu serverul web prin intermediul serviciilor de tip REST care
transmit și primesc mesaje în format JSON. Aplicaţia web reunește o serie de biblioteci și
frameworkuri ce construiesc funcționalitățile amintite anterior. Pentru eficientizarea timpului de
răspuns la nivel de bază de date s-au folosit indecși pe câmpurile frecvent accesate.
12
2. Tehnologii folosite
Dezvoltarea aplicaţiei la nivel de server
Hypertext Processor este un limbaj de scripting dezvoltat în anul 1996. O data cu versiunea
5 a trecut la paradigma orientare pe obiecte. Funcționează pe partea de server şi este utilizat în
crearea de site-uri dinamice. De asemnea extensia JSON este integrată şi compilată începând cu
PHP 5.2.0 în mod implicit.2
PHP este folosit de siteuri importante precum WordPress, Facebook sau Yahoo.
Această lucrare se bazează în principal, pe serverul acestei aplicații care este dezvoltat în
limbajul de scripting PHP, cu cod-sursa deschis, oferind o flexibilitate ridicată. Acesta trimite
interogări către baza de date MySQL şi furnizează în browser informaţiile necesare, într-un format
stilizat.
În vederea rulării de scripturi PHP este nevoie de instalarea aplicaţiei XAMPP ce
integrează server-ul Apache, necesar în rularea paginilor web, respectiv server-ul pentru baze de
date MySQL care va stoca informaţiile aferente aplicaţiilor dezvoltate.
Pentru cosmetizarea scripturilor este utilizat framwevork-ul dezvoltat iniţial de Twitter, și
anume Bootstrap, care permite realizarea de site-uri web responsive, ce se adaptează la orice
rezoluţie de dispozitiv: desktop, tablete şi telefoane mobile. Acesta este un instrument utilizat
pentru a gestiona cât mai bine faza iniaţială a unui proiect. Integrează cu usurinţă HTML/CSS şi
JavaScript prin încapsularea unor funcţionalităţi din jQuery.3
2 http://www.link-academy.com/blog/top-6-cele-mai-populare-limbaje-de-programare 3 http://dana-damoc.eu/blog/category/responsive-web-design/
13
Conceptul de Responsive Design se bazeaza pe griduri fluide – permit elementelor unei
pagini web să se redimensioneze, imagini flexibile – acestea işi modifică dimensiunea în funcţie
de grid, Media Queries – procedee prin care se pot incarca stiluri CSS.
Acest ansamblu de tehnologii este detaliat mai jos în vederea familizării cu principiile
aduse de acestea. Astfel, acronimul CSS cunoscut în denumirea completă precum Cascading Style
Sheets este un limbaj de stilizare a elementelor HTML în dezvoltarea aplicațiilor web. Permite
separarea conținutului (X)HTML de stilul de afișare în pagină, totodată poate fi aplicat oricărui
document XML.
Unul din primele elemente fundamentale ale WWW ( World Wide Web ) este HTML (
Hypertext Markup Language ), care descrie formatul primar în care documentele sunt distribuite
și văzute pe Web. Acesta prezintă structura semantică a unei pagini web, la care pot fi adăugate
stilizări ulterioare, prin utilizarea de CSS. De asemenea, HTML poate încorpora scripturi scrise în
limbaje de programare, precum PHP care afectează comportamentul paginilor web.4
JavaScript este un limbaj de scriptare multi-platformă, orientat pe obiecte. A fost proiectat
pentru a oferi interactivitate paginilor HTML. În interiorul unui mediu gazdă (de exemplu, un
browser web). Acesta poate fi conectat la obiectele mediului pentru a oferi control programatic
asupra acestora. Limbaj de programare este de tip interpretat ce permite scriptului să fie executat
direct fără compilare prealabilă. De asemenea poate fi folosit fără licenţă.
JavaScript conține o colecție standard de obiecte, precum și un set nucleu de elemente de
limbaj cum sunt operatorii, structuri de control și declarații. Nucleul JavaScript poate fi extins
pentru o varietate de scopuri prin suplimentarea lui prin adăugarea de obiecte, cum ar fi de
exemplu:
Clientul JavaScript extinde limbajul de bază prin adăugarea de obiecte
pentru a controla Document Object Model (DOM).
Extensiile client permit unei aplicații să-și plaseze elemente într-un
formular HTML și care să răspundă la evenimente precum clickuri de
mouse, formulare de intrare și navigarea paginilor.
4 http://www.math.ubbcluj.ro/~tgrosan/EdFiz6.pdf
14
jQuery a fost lansat in 2006 de catre John Resig. O platformă dezvoltată de JavaScript
concepută pentru a ușura și îmbunătăți procesele de traversare a arboreului DOM, precum și
manipularea conținutului HTML, animații. Cereri de tip AJAX. Accesul la elementele de pe pagină
este foarte simplu deoarece se folosește aceeași nomenclatură ca în CCS.
Nevoia de utilizare a hărților a crescut vertiginos în ultimii ani, motiv pentru care
producătorii de astfel de instrumente sunt într-o competiție ridicată. În vederea creării sistemului
de vizualizare a locațiilor și fotografiilor de tip hartă, am comparat trei categorii pentru realizarea
acestui model. Subiecții sunt Google, OpenLayers și Leaflet.
Conform unui studiu din 2014 acestea sunt principalele unelte pe parte de client care
contribuie la dezvoltarea hărților.
Google Maps versiunea întâi a fost apărută în anul 2005. Această opțiune
de la Google este cea mai veche şi ușoară metodă de utilizare dintre cele
trei. După setarea codului unic de identificare (API key) iți permite
flexibilitatea lucrului cu hărţi.
Alt avantaje sunt evidențiate prin încărcarea rapidă, integrarea cu Google
Earth, o gamă largă de vizualizări statice și dinamice, permite vizualizarea
străzilor.
OpenLayers reprezintă o librărie JavaScript ce oferă suport deschis pe
partea de client web, un instrument de cartografie pe internet. Poate fi
folosită pentru aplicații de uz general, oferă o gamă foarte largă de funcții.
Cu toate acestea nu este ideală pentru dezvoltarea de aplicații mobile.
Leaflet este o mica librărie JavaScript lansată în 2009. Acesta este un
instrument bazat pe scripturi, la modă în acest moment, ce oferă
flexibilitate cu funționalități intuitive. Datorită acestor specificații Leaflet
permite încărcarea rapidă pe un dispozitiv mobil a hărților.
15
Cele trei metode obișnuite de a construi hărți în pagini HTML oferă oportunități uimitoare
pentru afișarea datelor geografice în noi moduri.
Cu toate acestea, în cazul în care scopul este de a obține hărți rapid, Google Maps este o
opțiune bună și foarte bine documentată, atât pentru dispozitivul mobil, cât și pentru aplicații web.
Prescurtarea de la acronimul Asynchrous JavaScript and XML, este o tehnică de
programare pentru crearea de aplicații web interactive. Nucleul său îl reprezintă obiectul
XMLHttpRequest care este folosit pentru a schimba date asincron cu serverul web. Această tehnică
reușește eliminarea reîncarcarcarii întregii pagini web de fiecare dată când utilizatorul solicită o
cerere către server.
XML este un standard universal de structurare pentru documentele în format electronic.
XML este extensibil în sensul că, spre deosebire de HTML, tag-urile sunt nelimitate şi definite de
către utilizator.
Fig.2 Reprezentarea în format XML a conținutului de pe hartă
Document Object Model (DOM) se deosebeşte de SAX prin faptul că DOM converteşte
documentul XML într-o colecţie de obiecte în cadrul programului. Acest model de obiecte poate
fi manipulat în multiple forme, fiecare cu semnificaţie specifică. Acest mecanism este denumit
16
‘’random access protocol” pentru că se poate accesa orice parte din date în oricare moment. Datele
se pot modifica, șterge sau pot fi înserate date noi.5
MySQL este un SGBD relațional. Alegerea bazei de date MySQL are ca argumente
rapiditate pentru majoritatea aplicaţiilor, fiabilitatea asigurând o proiecție a datelor prin mecanisme
specifice, securitate ridicată, utilizează parole criptate, scalabilitate bună suportă baze de date de
dimensiuni mari. De asemenea serverul de baze de date MySQL suportă o paleta largă de programe
client, scrise în diverse limbaje de programare precum PHP și Android.6
Rolul unui SGBD este de a furniza suport pentru dezvoltarea aplicaţiilor informatice cu
baze de date. Asigură minimizarea costului de prelucrare a datelor, reducerea timpului de raspuns,
flexibilitatea aplicaţiilor şi proiecţia datelor.
5 http://software.ucv.ro/~cstoica/MPV/VPE_Lab4.pdf 6 http://staff.cs.upt.ro/~dan/curs/abd/doc/BDPescaru.pdf
17
Intrumente pentru realizarea aplicaţiei Android
Aplicația mobilă este dezvoltată în Android Studio și oferă acces la baza de date MySQL,
folosind ca limbaj de programare JAVA.
Construit în jurul unui nucleu Linux, întocmai precum Chrome OS sau Mac OS X, Android
a fost inițial efortul unei companii omonime – Android Inc., achiziționată de Google în 2005. Nu
a durat mult și în 2007, sub atenta supraveghere a celor de la Google, s-a înființat Open Handset
Alliance, un concern creat pentru a stimula evoluția tehnologică în domeniul dispozitivelor
portabile și, odată cu ea, a sistemului de operare care va rula pe noile dispozitive aparținând acestei
clase de produse. Tot în 2007 a fost anunțat sistemul de operare Android într-o formă nu foarte
apropiată de cea pe care o cunoaștem astăzi.7
Există numeroase servicii web care işi expun funcţionalitatea prin intermediul unor
documente JSON precum Google, Yahoo, Flickr.
În principiu, informațiile reprezentate în format JSON au structura unei colecții de perechi
de tip (cheie, valoare), fiecare dintre acestea fiind grupate într-o listă de obiecte ordonate.
JSON API este un instrument ce oferă informații clientului despre formatul în care să
trimită cereri şi maniera de răspuns a serverului.
JavaScript Object Notation ( abreviat JSON ) permite interschimbarea de date la nivel de
client – server. Atfel că, json_encode — întoarce o reprezentare JSON pentru valoarea dată.
Întoarce un șir reprezentat JSON în caz de succes, sau false în cazul eșecului.
Json_decode — Convertește într-o variabilă un șir reprezentat JSON. Întoarce valoarea codificată
în JSON cu tipul PHP corespunzător.
În sistemul Android ferestrele se numesc activități. Din punct de vedere al programării,
acestea sunt clase care extind clasa Activity. Spre deosebire de alte sisteme în care un program
conține mai multe ferestre afișate simultan, în Android, ecranul este mereu ocupat de o singură
fereastră. Pentru a crea o activitate, este necesară crearea unei clase ce extinde Activity. La pornire,
7 https://playtech.ro/2012/istoria-android-de-la-1-0-la-4-0-in-cativa-pasi-simpli-partea-i/
18
programul o va genera, ceea ce va permite interacționarea prin evenimente precum onCreate și
onPause.
onCreate - evenimentul este apelat în momentul în care se crează o activitate.
În acest cadru se initializă compentele ferestrei. Pentru vizibilitatea
elementelor de pe fereastră, este necesară apelarea funcției setContentView.
onPause - la apelarea acestui eveniment, fereastra se pregatește pentru oprire.
În acest moment se vor opri procesele care nu mai sunt necesare când aplicația
nu rulează, cum ar fi elementele video sauu audio.
Fragmentele au fost introduse în Android începând cu nivelul de API 11 (Honeycomb),
odată cu apariția tabletelor dotate cu un astfel de sistem de operare. Ulterior, au fost incluse și în
bibliotecile de suport, astfel încât această funcționalitate să fie disponibilă pentru toate
dispozitivele mobile echipate cu un sistem de operare având minim versiunea 1.6.
Un fragment este o componentă Android atomică, încapsulând o interfață grafică ce poate
fi reutilizată, definind un ciclu de viață propriu. O activitate poate fi formată din unul sau mai
multe fragmente, în funcție de cerințele aplicației la un moment dat de timp.8
Fragmentele utilizate pentru a gestiona în mod eficient suprafața de afișare și pentru a se
evita dezvoltarea mai multor interfețe grafice pentru diferite tipuri de rezoluții. Se permite
dezvoltarea unor interfețe grafice, flexibile în mod dynamic, asigurându-se adaptibilitatea la
suprafețe de afișare diverse ( ceasuri, tablete).
Retrofit reprezintă un tip de client REST dezvoltat pentru Android. Faciliteză trimiterea şi
primirea informaţiilor prin intermediul formatului JSON şi a serviciului REST. Retrofit utilizează
librăria OkHttp pentru cereri de tip HTTP.
Această bibliotecă facilitează descărcarea de date JSON sau XML dintr-un API web. Odată
ce datele sunt descărcate, acesta este analizat într-un obiect Plain Old Java (POJO), care trebuie să
fie definit pentru fiecare "resursă", în răspuns.
8 http://ocw.cs.pub.ro/courses/eim/laboratoare/laborator04
19
Conceptul de REST a fost introdus pentru prima dată în 2000, de Roy Fielding. Stil
architectural simplu, bazat pe standarde Web și HTTP. Oferă o arhitectură client -server bazată pe
folosirea resurselor.9 Exemplu de resurse: fotografie, produs, oraş, etc.
Comparativ cu SOAP, REST nu este foarte strict cu tipurile de date, este mai ușor de citit
folosind substantive și verbe. Tratarea erorilor se face conform tratării erorilor în protocolului
HTTP.
Acesta este o arhitectură scalabilă datorită separării de responsabilități între client și server.
De exemplu, responsabilitatea unui client este să mențină starea unui utilizator, în timp ce serverul
nu menține nici o stare, dar este resposabil de managementul datelor. De asemenea
între cereri serverul nu trebuie să mențină starea clientului.
Resursele pot avea diferite reprezentări (JSON, XML), folosirea lor determinându-se
conform protocolului HTTP.
9 https://www.todaysoftmag.ro/article/81/restful-web-services-folosind-jersey
20
3. Arhitectura aplicaţiei
Serverul web PHP
Hypertext Transfer Protocol este un protocol de comunicație responsabil cu transferul de
hipertext (text structurat ce conține legături) dintre un client (de regulă, un navigator) și un server
web, interacțiunea dintre acestea (prin intermediul unei conexiuni TCP persistente pe portul 80)
fiind reglementată de RFC 2616.10
HTTP este un protocol fără stare, pentru persistența informațiilor între accesări fiind
necesar să se utilizeze soluții adiacente (cookie, sesiuni, rescrierea URL-urilor, câmpuri ascunse).
Principalele concepte cu care lucrează acest protocol sunt cererea și răspunsul:
cererea – în acest caz aplicaţia mobilă sau clientul web - este transmisă de client către
serverul web și reprezintă o solicitare pentru obținerea unor resurse (identificate printr-un URL);
aceasta conține denumirea metodei care va fi utilizată pentru transferul de informații, locația de
unde se găsește resursa respectivă și versiunea de protocol.
răspunsul este transmis de serverul web către client, ca rezultat al solicitării primite,
incluzând și o linie de stare (ce conține un cod care indică dacă starea comenzii) precum și alte
informații suplimentare.11
10 android.rosedu.org/2015/laborator-06-comunicatia-prin-retea 11 http://ocw.cs.pub.ro/courses/eim/laboratoare/laborator07
21
Serverul – serviciul PHP - se va conecta la baza de date MySQL, prin intermediul căruia va
rula interogarea SQL care va depinde de valorile POST sau GET şi va returna un format JSON
către client.
Funcționaliatatea de autentificare de la nivel de server web este reprezentată în principal de
fișierul indexLogin.php. Acesta este un formular care verifică tipul de utilizator și îl redirectează
în funție de specificul său. În vederea separării câmpului vizual dintre clienţi şi administratori s-
au utilizat sesiunile.
Fig. 3 Redirectarea în funcție de tipul de utilizator
Un utilizator poate fi administrator, client obișnuit sau o persoană din echipa de asistență
turistică care poate fi din cadrul poliției și salvamont, pentru exemplul oferit.
În PHP o sesiune reprezintă perioada de timp în care mai multe scripturi, accesate la
momente diferite de timp, pot stoca și folosi informații comune. O sesiune incepe atunci cand un
script apelează funcția session_start, așa cum se poate observa în figura trei și se termină atunci
când utilizatorul închide browserul.
22
Funcția doLogin verifică datele de intrare accesate de utilizator în formular cu câmpurile
aferente bazei de date și îi atriubuie o sesiune în funcție de id.
În momentul accesării opțiunii de ieșire din aplicație se va închide sesiunea și vei fi
redirectat către pagina de autentificare.
Folderul destinat administratorului poartă denumirea de admin. Pentru un administrator
obișnuit principalul său fișier de administrare a informațiilor este reprezentat de indexAdmin.php.
Această secțiune afișează toate câmpurile necesare în vederea operațiilor de afișare, ștergere sau
actualizare a informațiilor de pe site. Operatorul va avea acces atât la elemente de gestiune a
produselor, cât și la referințele cu privire la utilizatorii acestei aplicații. Pentru asistența turistică
paginile indexPolice și indexAdmin oferă meniu utilizatorilor pentru gestionarea mesajelor primite
de la turiști în vederea semnalării unei probleme. Aceste mesaje pot fi de tip text, fotografie sau
video.
Directorul client este reprezentativ pentru secțiunea din meniu destinată turiștilor. În
momentul autentificării fiecare client va avea o pagină personală în care își poate actualiza datele
personale sau vizualiza produsele dorite, având legătură directă la site.
23
Baza de date MySQL
Arhitectura bazei de date este formată dintr-o serie de tabele ce reprezintă modalitatea prin
care este gestionată aplicația.
Fig.4 Reprezentarea relațiilor dintre tabele
Tabela hotel reține hotelurile disponibile.
Tabela avion stochează zborurile dispnibile.
Tabela autobuz stochează informațiilor privitoare la mijlocul de transport
intern a unui oraș.
Tabela poliție gestionează mesajele primite de la utilizator.
Tabela salvamont postează mesajele primite de la utilizator.
24
Tabela comentarii stochează informațiile scrise de către utilizator precum și
datele acestuia.
Tabela utilizator reține informațiile despre clienți și administratori.
Tabela markersinsert păstrează datele legate de fotografiile trimise prin
intermediul aplicației mobile.
Fig.5 Procesul de autentificare
Conform definiției un index este o structură de căutare rapidă care poate fi folosită de
sistem pentru creşterea vitezei de evaluare a cererilor prin faptul că parcurgerea tabelelor nu se
mai face secvenţial, ci sunt accesate direct liniile necesare cererii respective.
Deoarece procesul de autentificare conține un număr foarte mare de utilizatori folosirea
indecșilor oferă un timp de răspuns mai bun. Cele mai utilizate câmpuri în acest sens sunt pentru
nume sau email.
La nivel de aplicație pentru această secțiune s-au folosit doi indecși reprezentativi pentru
coloanele nume și email.
25
ALTER TABLE `utilizator`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `nume` (`nume`),
ADD UNIQUE KEY `email` (`email`);
Indecșii oferă o metodă de access directă către înregistrările care se doresc extrase. Scopul
lor este de a diminua operațiile de intrare/ieșire către disc. Prin această modalitate se oferă
optimizare la nivel de interogare a bazei de date și răspuns rapid către utilizator.
26
Clientul Android
Pentru a realiza conexiunea la serverul PHP se foloseşte protocolul HTTP prin intermediul
sistemului Android. Acest server este un intermediar între baza de date MySQL şi dispozitivul
Android.
De multe ori, funcționalitatea pe care o pune la dispoziție aplicația Android este preluată
din alte surse, datorită limitărilor impuse de capacitatea de procesare și memorie disponibilă ale
unui dispozitiv mobil. O strategie posibilă în acest sens este utilizarea HTTP, pentru interogarea
unor servicii web, al căror rezultat este de cele mai multe ori oferit în format JSON sau XML.
Aplicaţia Android va apela scriptul PHP care va efectua operaţii de tip CRUD (acronim ce
reprezintă verbe definitorii din limbajul de specialitate a bazei de date Create, Read, Update,
Delete).
Fig.6 Comunicarea dintre baza de date și aplicația mobilă
Fișierului Manifest trebuie să i se specifice toate componentele aplicației, și de asemenea,
să declare toate cerințele aplicației, cum ar fi versiunea de Android minim necesară și orice alte
configurații hardware, cât și permisiuni.
Nucleul este reprezentat de AndroidManifest.xml deoarece aici se specifică permisiunile
utilizatorului, așa cum se observă în figura următoare și se declară componentele aplicației.
27
Fig.7 Permisiunile specificate în AndroidManifest.xml
android.permission.INTERNET: controlează drepturile de acces referitoare la comunicația
prin rețea, chiar și în situația în care aceasta se realizează local sau pentru utilizarea unor servicii
de rețea;
android.permission.ACCESS_NETWORK_STATE: furnizează informații cu privire la
conectivitatea dispozitivului mobil.
android.permission.READ_EXTERNAL_STORAGE alături de
android.permission.WRITE_EXTERNAL_STORAGE sunt mecanisme de stocare şi regăsire a
datelor.
android.permission.ACCESS_WIFI_STATE permite accesul la serviciile wifi din zona în
care te afli.
android.permission.RECORD_AUDIO redă conţinutul audio şi video după ce s-a
finalizat capturarea de imagine.
La baza dezvoltării aplicației mobile stau o serie de servicii web ce au fost create, activități
și fragmente care integrază toate componentele sale.
În vederea utilizării aplicației mobile trebuie efectuat cu succes pasul de autentificare. La
nivel de implementare activitatea MainActivityLogin apelează funcția initFragment care verifică
dacă utilizatorul este logat sau nu. În cazul în care autentificarea nu a fost efectuată, se apelează
fragmentul LoginFragment care declansează operația amintită anterior.
28
Fig.8 Raspunsul primit de la serviciul web
Funcția creată în PHP va verifica valorile de intare și va transmite prin intermediul unui
format JSON rezultatul obținut. Pentru succes se va semnala success iar pentru eșuarea operațiunii
de autentificare se va trimite mesajul failure.
29
Fig.9 Serviciul care apelează baza de date pentru verificări
Acest mesaj va fi reprezentativ pentru constantele definite în clasa Constants, și anume
SUCCESS și IS_LOGGED_IN. În figura de mai sus se observă verificarea apelului pentru succes
și iterația care simbolizează efectuarea corectă a serviciului de autentificare, care se încheie cu o
redirectare către pagina de profil.
La apăsarea opțiunii de înregistrare, se apelează la nivel de Android funcția goToRegister.
Comportomentul serviciului de înregistrare este similar cu cel de autentificare ce a fost descris
anterior. Similar, cazului precedent, se va apela serviciul corespunzător de înregistretare care va
returna un mesaj în format JSON.
public function registerUser($name, $email, $password)
Antentul serviciului de înregistrare
30
În vederea încărcării pe server a fotografiei trimise de către turist se apelează serviciul
fileUpload.php care deserveşte în acest sens. Folosirea instrucţiunii alternative if, în exemplul
prezentat, verifică dacă este primit un fișier valid. Se construiesc calea ce conține locația pe server,
urmat de numele fotografiei și într-o altă variabilă se va asocia denumirea imaginei.
Fig.10 Încărcarea fotografiei sau a unui video pe server
Încărcarea efectivă pe server este efectuată de metoda move_uploaded_file() care va trece
printr-o serie de condiții de verificare și în final va returna un mesaj în format JSON.
Fig.11 Formatul JSON returnat de serviciul web
31
Unul dintre cele mai importante elemente ale unei aplicații îl reprezintă interfața grafică.
Pentru a putea diferenția interfața grafică de scrierea codului aplicației, cele două se află în fișiere
diferite.
O altă componentă definitorie sunt resursele. În pachetul drawable sunt reținute fișiere
bitmap (.png, .jpg) ce reprezintă imaginile aferente pictogramelor și celor de fundal. Utilizarea
iconițelor sporește gradul de familizare cu aplicația. Astfel orice tip de utilizator poate deduce unde
se găsesc funcționalitățile oferite.
Principalul layout al acestei aplicații mobile este reprezentat de activity_main.xml. Acesta
reunește toate componentele ce definesc meniul și este direct conectat la clasa MainActivity.
32
5.Manual de utilizare
Aplicația EasyTravel oferă utilizatorilor un meniu intuitiv printr-un design atractiv. Pentru
fiecare secțiune din meniu a fost aleasă câte o pictogramă reprezentativă prin care să se anticipeze
cu ușurintă ce servicii pot fi accesate sau cum pot fi completate anumite câmpuri.
În momentul accesării aplicației, utilizatorul va fi nevoit, pentru a putea folosi platforma,
să se logheze. În cazul în care, acesta nu deține un cont valid, atunci va trebui să aleagă opțiunea
de înregistrare. În partea inferioară există butonul „Not Registered? Register Now!” care îl va duce
pe utilizator la fereastra de înregistrare. Interfața inițiala de login poate fi observată în figura de
mai jos.
Fig. 12 Procesul de autentificare pe aplicația mobilă și web
În vederea utilizării aplicației atât pe mobil, cât și pe web este necesar la prima accesare a
acesteia să te înregistrezi, prin completarea celor trei câmpuri care reprezintă numele, adresa de
email și parola, așa cum se observă în figura treisprezece.
33
Fig. 13 Procesul de înregistrare pe aplicația mobilă și web
Atât formularul de autentificare cât și cel de înregistrare pe platformă conțin funcționalități
de validare a datelor furnizate de către utilizator. Astfel, se verifică dacă utilizatorul a introdus într-
adevăr o adresă de mail sau o parolă. În cazul în care utilizatorul introduce totuși date eronate, un
mesaj de informare va fi afișat, astfel încât să poată să-și corecteze datele incorecte.
Odată ce procesul de autentificare este efectuat cu succes, utilizatorul va fi întâmpinat cu
pagina principală a platformei, printr-un mesaj sugestiv, care te determină să te gândești care va fi
următorul tău voiaj.
Meniul aplicației web întâmpină utilizatorul cu o serie de servicii așa cum se poate observa
în figura 14.
Fig. 14 Prima secțiune din meniu
34
PhotoSharing oferă utilizatorului posibilitatea de a vizualiza experiența de vacanță a
celorlalți turiști. Numele ales sugerează chiar funcționalitatea pe care o oferă, prin partajare de
fotografii. Astfel dacă utilizatorul nu știe ce pachet de vacanță sau destinație să aleagă, poate
consulta acest serviciu. Prin alegerea continentului și mai apoi a țării, acesta are posibilitatea de
vizualizare a fotografiilor din acea zonă. Accesarea unor pictograme reprezentate prin litere
semnifică inițiala tipului de locație restaurant - R, muzeu - M, bar - B și stradă – S.
Fig. 15 Reprezentarea tipului de locație pe hartă
După alegerea marcatorului se va deschide o fereastră ce prezintă informații succinte
despre locația respectivă, adresa, numele și oferă opțiunea de a vizualiza galeria foto.
Fig. 16 Vizualizarea tipului de locație dorit
35
După selectarea opțiunii More Pictures From This Place utilizatorul poate vizualiza toate
fotografiile încărcate de către turiștii care au fost în acea zonă.
Fig. 17 Galeria de imagine specifică zonei alese
Alegerea din meniu a opțiunii Hotel este reprezentată de o serie de opțiuni de cazare.
Această funcționalitate permite căutarea unei locații în funcție de perioadă, oraș și țară.
Fig. 18 Redarea serviciilor hoteliere
36
În vederea împărtășirii impresiilor și experiențelor din călătorie, secțiunea Forum oferă
posibilitatea de informare și de a lua parte la discuțiile ce sunt active pe acest grup.
Tourist Assitance este o opțiune vizualizată doar de personalul calificat în asigurarea
asistenței turistice.
MyPage reprezintă pagina clientului în care acesta își poate gestiona datele personale și de
asemenea, cumpăraturile facute.
ShoppingCart oferă acces rapid la lista de cumpărături, astfel încât să faciliteze
achiziționarea produselor de către client.
Fig. 19 A doua secțiune de meniu
Administratorul aplicației are drept de vizualizare asupra tuturor secțiunilor din site, pentru
a putea gestiona cu ușurință problemele ce pot apărea.
Cel mai important serviciu oferit de aplicația mobilă este asistența turistică. Astfel pe
perioada unei deplasări, cu atât mai mult în străinătate, unde zona nu îți este familiară, în cazul
unui incident poti alege cui să i te adresezi.
Un exemplu dat ar fi te afli într-o zonă montană și te-ai rătăcit. Ai posibilitatea să te adresezi
salvamontului trimițând un mesaj care poate să includă o fotografie sau un video, un text, iar la
apăsarea opțiunii expediere se va trimite și locația în care te afli. Pe parcursul acestui proces
imaginile sunt redate. Similar se procedează în cazul în care dorești să te adresezi personalului
autorizat din cadrul poliției.
37
Fig. 20 Meniul aplicației mobile
Trimiterea folotografiilor este realizată prin intermediul opțiunilor Photos și PhotoSharing.
Cea dintâi permite încărcarea de fotografii din galeria personală a telefonului, iar cea de-a doua
opțiune înregistrează videouri și fotografii în timp real. În timpul trimiterii conținutului
PhotoSharing redă imaginile capturate. Cele două variante sunt utilizate pentru împărtășirea
imaginilor din vacanță pe siteul oficial.
Pentru aplicația mobilă opțiunea About Us oferă toate detaliile necesare în vederea
utilizării acesteia. Utilizatorul va lua la cunoștiință pe parcursul folosirii aplicației necesitatea
conexiunii la internet, iar în cazul trimiterii unor informații serviciul GPS trebuie activat. De
asemenea fiecare opțiune a meniului va fi descrisă pentru o mai bună familiarizare cu conceptele
acestei aplicații. Privacy Policy permite modificarea parolei de cont.
Meniul oferă și posibilitatea de a căuta un mijloc de transport de tip autobuz. Prin înserarea
numărului de autobuz și a orașului se afișează detalii despre opțiunea aleasă. Mai exact, traseul
autobuzului ales și costul unui bilet.
Opţiunea din meniu Map indică locaţia în care te afli prin intermediul unui marcator.
Totodată permite vizualizarea adresei, împrejurimilor prin intermediul satelitului şi căutarea rutei
dintre două puncte.
38
6.Integrarea serviciului
Google Maps şi GPS
Google Maps API oferă posibilitatea de creare a unor hărţi stilizate, prin înserarea de
marcatoare, personalizarea propriei hărti şi localizare.
Sistemul de poziționare globală (engleză, Global Positioning System; prescurtat GPS) este
un sistem global de navigație prin satelit și unde radio. Sistemul GPS este o rețea
de sateliți care orbitează în jurul Pământului în puncte fixe deasupra planetei, transmițând semnale
tuturor receptorilor aflați la sol. 12
Aceste semnale conțin un cod de timp și un punct de date geografice care permit
utilizatorului să primească poziția exactă în care se află, viteza și ora din orice regiune de pe
planetă. GPS funcționează în orice condiții meteorologice, oriunde în lume, 24 ore pe zi.
În prezent, sistemul GPS este utilizat în numeroase domenii, aviație și marină,
găsirea rutelor pentru șoferi, crearea hărților, Obiectul poate fi și o persoană, care poate astfel să
se orienteze pe pământ, pe apă, în aer sau și în spațiu (în apropierea Pământului).
În cadrul aplicaţiei funcţionalitatea GPS redă coordonatele exacte din locul în care se află
utilizatorul. Pentru integrararea acestui serviciu AndroidManifest.xml specifică următoarele
permisiuni de acces:
android.permission.ACCES_COARSE_LOCATION - obține locația
utilizatorului folosind informațiile preluate prin rețele fără fir şi datele
corespunzătoare celulei în care se găsește dispozitivul mobil;
android.permission.ACCES_FINE_LOCATION- procură locația utilizatorului
prin intermediul coordonatelor obținute de la sistemul de poziționare;13
12 https://ro.wikipedia.org/wiki/Sistem_de_pozi%C8%9Bionare_global%C4%83 13 http://ocw.cs.pub.ro/courses/eim/laboratoare/laborator10
39
De asemenea în secțiunea <application> … </application> se indică cheia publică utilizată
pentru accesarea funcționalității legată de serviciile de localizare şi versiunea folosită pentru
biblioteca Google Play Services.
În mediul integrat de dezvoltare Android Studio, în fişierul build.gradle, se specifică dependinţa
către librăria Google Play Services (com.google.android.gms:play-services), în secţiunea
dependencies.
dependencies
compile 'com.google.android.gms:play-services-appindexing:9.6.1'
compile 'com.google.android.gms:play-services:9.6.1'
compile 'com.google.maps.android:android-maps-utils:0.4+'
Adăugarea librăriei Google Play Services și Android Maps Utils
În vederea obţinerii detaliilor privitoare la locaţie, aşa cum se observă în metoda din figura
de mai jos, se apelează la serviciile claselor Location şi Geocoder.
Location este o clasă ce reprezintă locaţia geografică. Serviciile obligatorii care sunt
asigurate de această clasă sunt latitudinea şi longitudinea, celelalte precum altitudinea sau direcţia
fiind opţionale.
40
Fig. 21 Obţinerea detaliilor despre locaţie
Constanta GPS_PROVIDER determină locaţia prin utilizarea de sateliţi.
Geocoder este o clasă ce manipulează coordonatele. În metoda prezentată se utilizează
conceptul de reverse geocoding ce reprezintă procesul de transformare a coordonatelor
reprezentate de latitudine şi longitudine în adresă. Astfel, prin apelarea funţiilor din această
colecţie de obiecte se returnează ca răspuns adresa, oraşul, ţara şi codul poştal.
Funcţionalitatea GoogleMaps ce a fost implementată returnează din baza de date MySQL
un marcator ce conţine informaţii despre locaţie şi fotografii. Câmpurile din baza de date lat şi
long vor indica poziția aşezării în mod dinamic a marcatorului. Aceste două câmpuri au fost
înserate prin intermediul aplicaţiei mobile la apelarea opţiunii Send Photo.
Astfel turistul aflat în călătorie poate împartăși fotografii din experiența sa de vacanță, iar
în momentul apăsării butonului Send Photo, împreună cu aceasta se va trimite locația din care se
află indicându-se latitudinea, longitudinea, adresa, codul poștal, orașul și țara.
Fig. 22 Câmpurile din baza de date în vederea populării hărții
41
Utilizatorul aplicației mobile va putea consulta opțiunea Help unde va găsi toate
informațiile necesare cu privire la utilizarea serviciului PhotoSharing.
Toate aceste date vor fi înserate în baza de date și mai apoi verificate de către
administratorul aplicației. De asemenea, în funcție de tipul de date primit de la utilizator, acesta
poate adăuga detalii cu privire la locație.
Administratorul aplicației va dispune de o interfață intuitivă prin care va putea verifica și
valida datele. Astfel acesta va avea permisiunea de vizualizare a conținutului, modificare și nu în
ultimul rând ștergere dacă informațiile nu sunt în conformitate cu standardul.
Unui marcator i se va asocia o literă în funcție de tipul corespunzător, sugerând obiectivul
respectivei locații. După cum a fost prezentat în capitolul anterior, amintim faptul că aceștia pot fi
de tip restaurant - R, muzeu - M, bar - B, stradă -S.
La nivel de cod modalitatea de implementare care generează această funcționalitate este
următoarea:
var customLabel = restaurant: label: 'R' ,bar: label: 'B' ,
street: label: 'S' , museum: label: 'M' ;
Reprezentarea tipului de marcator
Prin accesarea opțiunii PhotoSharing de către utilizator, serviciul web interoghează baza
de date pentru a i se returna câmpurile necesare în vederea populării hărții cu informațiile aferente.
Mai exact, tabela acestei funcționalități, și anume markerinsert, va conține toate datele
cartografice de marcare. Se folosește un fișier XML ca intermediar între baza de date şi harta
Google care permite încărcarea mai rapidă în pagină și oferă o flexibilitate mai mare.
42
Fig.23 Construirea documentului XML
Codul de mai sus inițializează un nou document XML și creează taguri cu denumirea
"marker". Apoi, se conectează la baza de date, execută o interogare de tip select pe tabela
markerinsert și iterează prin fiecare rezultat astfel construind un XML ce este utilizat în popularea
cu valori pe hartă.
Pentru fiecare rând din tabelă se crează un nou nod în XML cu valorile aferente liniei din
baza de data ca atribute a XML-ului și le ataşeaza nodului părinte.
Confirmarea faptului că scriptul PHP produce un XML valid, este indicată prin apelarea
fişierului domParse.php în browser pentru verificarea datelor.
Pentru a încărca fișierul XML în pagină, se va folosit obiectul asicron XMLHttpRequest.
Acesta permite preluarea unui fișier care se află pe același domeniu ca pagina web solicitată, având
la bază concepte de tip AJAX.
43
Fig. 24 Modalitatea de integrare a marcatorilor pe hartă
Funcţia dowloadUrl are doi parametri ce reprezintă:
primul paramentru url specifică calea fişierului XML sau a scriptului PHP care
generează fişierul. În acest caz se va apela documentul xml cu numele
domParse.php.
cel de-al doilea parametru indică returnarea valorilor din fişierul xml.
După construcţia paginii HTML, se crează un eveniment care va genera afişarea unei
ferestre cu informaţii la accesarea unui marcator. La deschiderea paginii în browser funcţia
initMap setează harta, iar mai apoi, va apela funcţia downloadUrl. Aceasta va itera prin toate
elementele ce conţin marcatori şi returnează latitudinea, longitudinea, numele, oraşul, adresa,
descrierea şi fotografiile.
De asemenea aplicația mobilă dispune de funcționalitatea oferită de Google Maps. Prin
accesarea opțiunii Map, vei fi localizat. Astfel vor fi vizualizate împrejurimile, adresa și se oferă
opțiunea de căutare a rutei.
44
7.Concluzii
Lucrarea realizată are scopul de a oferi o aplicație de actualitate, ușor de folosit și cu
adevărat utilă, destinată oricărui tip de turist.
Conceptul aplicației se pune în valoare prin semnalarea problemei din timpul unei călătorii.
Am considerat importantă departajarea tipului de problemă înștiințată. Astfel, utilizatorul are două
opțiuni precise de adresare, poliția sau salvamontul. În funcție de problema care a apărut prin
intermediul serviciului integrat de localizare prin satelit oferit de GPS, clientul va fi localizat, are
posibilitatea de a trimite o fotografie, un video sau un mesaj text. Comunicarea directă cu serviciile
de asistență este asigurată prin oferirea unei opțiuni individuale. Personalul autorizat va avea câte
un cont diferit în funcție de serviciul oferit de către aceștia. Totodată, serviciul Google Maps
furnizează turiștilor o direcție de orientare mai bună și vizualizare a împrejurimilor prin
intermediul imaginilor oferite de satelit.
Un alt avantaj a utilizării acestei aplicații îl reprezintă integrarea instrumentelor necesare
de călătorie, cazare și transport, care reduc gradul de căutare și facilitează achiziționarea rapidă a
serviciilor necesare, spre deosebire de alte platforme actuale pe piață. Validarea datelor de către
administratorii aplicației oferă siguranță și încredere față de toate serviciile oferite.
Pe partea tehnică am utilizat preponderent PHP și Java în Android, alături de o bază de
date relațională MySQL alături de numeroase biblioteci și frameworkuri. Conexiunea dintre
aplicația mobilă Android și componenta web stă în utilizarea serviciilor web de tip REST, care
transmit și primesc răspunsuri de la server în format JSON.
În încheiere subliniez faptul că beneficierea de un serviciu de asistență turistică la distanță,
este o necesitate a societății contemporane și un factor care iși poate pune amprenta în buna
desfășurare a unor activități ce vizează deplasarea.
45
8.Direcții de dezvoltare
Pe viitor aplicația poate avea îmbunătățiri la nivel de comunicare între utilizatori. Se poate
crea un canal de comunicare care să permită trimiterea datelor în timp real. Această funționalitate
ar putea fi la nivel de chat. Extinzând această capacitate de interschimbare de mesaje, va crește
rapidatatea de răspuns și eficiența în gestionarea clienților.
La nivel de administrare a fotografiilor se poate folosi un algoritm eficient, care după un
criteriu dat, să creeze fișiere dinamice la nivel de stocare a conținutului trimis de utilizator. Astfel
se va reduce timpul de verificare de către responsabilul cu gestionarea fotografiilor primite.
De asemenenea, pentru accelerarea accesului la date se pot crea indecși pe câmpurile
frecvent folosite. Prin urmare, tabele de gestiune a serviciilor cât și a fotografiilor ar putea procesa
indecși pentru eficientizarea procesului de răspuns.
Totodată s-ar putea crea extensii cu privire la mecanismele de transport. Prin urmare,
introducerea unui plan elaborat pentru mijloace de transport intern să fie pus la dispoziția
utilizatorilor. Astfel, ar crește gradul de siguranță și orientare într-un oraș nou.
46
9.Referințe
[1] World Tourism Organisation http://www2.unwto.org/en
[2] Pagina oficială PHP http://php.net/manual/ro/index.php
[3] Pagina oficială și documentația Bootstrap http://getbootstrap.com/getting-started/
[4] Multimedia Creations Academy http://dana-damoc.eu/blog/introducere-la-bootstrap-3/
[5] Dezvoltarea aplicațiilor pentru Android și Comunicarea prin rețea, Interfețe grafice și
activități http://android.rosedu.org/2015/
[6] Noțiuni fundamentele de SAX, XML și DOM http://software.ucv.ro/~cstoica/
MPV/VPE_Lab4.pdf
[7] Sistem de poziționare gloabală https://ro.wikipedia.org/wiki/Sistem_de_pozi
%C8%9Bionare_global%C4%83
[8] Start Bootstrap Portfolio https://startbootstrap.com/template-overviews/stylish-
portfolio/
[9] Android Login Registration System https://www.learn2crack.com/2016/04/
[10] Android Uploading Camera Image, Video to Server http://www.androidhive.info/
2014/12/
[11] Google Maps Android API Documentation
https://developers.google.com/maps/documentation/android-api/reference
[12] Testing web map APIs - Google vs OpenLayers vs Leaflet http://robinlovelace.net/software
/2014/03/05/webmap-test.html
[13] Maps JavaScript API Customize maps with your own content and imagery
https://developers.google.com/maps/documentation/javascript/mysql-to-maps