easytravel - alexandru ioan cuza universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt...

46
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

Upload: others

Post on 07-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 2: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 3: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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 __________________

Page 4: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

____________________

Page 5: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 6: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 7: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 8: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 9: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 10: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 11: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 12: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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/

Page 13: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 14: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 15: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 16: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 17: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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/

Page 18: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 19: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 20: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 21: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 22: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 23: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 24: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 25: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 26: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 27: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 28: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 29: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 30: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 31: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 32: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 33: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 34: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 35: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 36: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 37: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 38: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 39: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 40: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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

Page 41: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 42: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 43: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 44: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 45: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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.

Page 46: EasyTravel - Alexandru Ioan Cuza Universityalaiba/pub/absolvire/2017... · 2017-02-07 · n alt reprezentat de seama, înfiinţat în 1996 este compania %ooking, leader mondial al

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