• Nu S-Au Găsit Rezultate

Sistem integrat de asistență și prevenție pe durata unei călătorii

N/A
N/A
Protected

Academic year: 2022

Share "Sistem integrat de asistență și prevenție pe durata unei călătorii "

Copied!
46
0
0

Text complet

(1)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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

Referințe

DOCUMENTE SIMILARE

În cea de a doua secţiune, pe care am intitulat- o „Principiul reverbe- raţiei“, pentru a evidenţia opţiunea autorului pentru critica de receptare, am introdus analizele și

Lucrarea își propune să analizeze felul în care apar, în cadrul programei matematice gimnaziale și liceale, diverse probleme de extrem atât în algebră și geometrie, cât

• Neajunsurile inerente elaborării și exploatării unei platforme informatice complexe cum este SISEC pot fi înlăturate și astfel se poate vorbi de un sistem unic, robust,

Pune în marș o mare armată care trece Dunărea pe pod de vase și calcă pentru prima oară pământul Țării Românești.. Coloanele infanteriei și cavaleriei otomane, convoaiele

Pentru aceasta, am dedicat atât un sistem de mailing intern cât și paginile în care sunt afișate proiectele și evenimentele ce au legătură cu compania în care este

• Nu mai puțin adevărat este și faptul că, surprizător pe undeva, studenții cu înclinații vădite pentru însușirea și aplicarea elementelor de modelare

Este vorba despre un corpus de texte în care personajul Celan devine sursă de inspirație pentru o suită de autori germani și austrieci contemporani acestuia precum Marie

Rootkit-urile sunt rareori distructive ele însele, pentru ca scopul lor este de a câștiga și menține controlul asupra unui sistem pentru a-i folosi capacitatea de procesare în