Aplicație pentru promovarea turismului montan Coordonator științific: Lect. Dr. Iulian ILIE-NEMEDI Absolvent: Denisa ROȘA București 2019 Cuprins:… [308960]

[anonimizat]:

Lect. Dr. [anonimizat]: [anonimizat]

2019

Cuprins:

Introducere……………………………………………………………………………………………………………3

Descrierea problemei…………………………………………………………………………………..3

Prezentarea funcțiilor de bază ale unei aplicații tipice pentru problema aleasă……4

Prezentarea unor soluții consacrate existente pe piață……………………………………..6

Proiectarea aplicației……………………………………………………………………………………………..8

Diagrama cazurilor de utilizare…………………………………………………………………….8

Diagrame de secvență………………………………………………………………………………….9

Diagrame de stare……………………………………………………………………………………..11

Diagrame de activitate……………………………………………………………………………….12

Diagrama de pachete………………………………………………………………………………….13

Diagrama de componente……………………………………………………………………………13

Diagrama de clase……………………………………………………………………………………..14

Diagrama de clase detaliată………………………………………………………………………..15

Securizarea aplicației…………………………………………………………………………………20

Implementarea aplicației……………………………………………………………………………………….23

Prezentarea tehnologiilor utilizate……………………………………………………………….23

Detalii privind algoritmii folosiți…………………………………………………………………31

Concluzii…………………………………………………………………………………………………………….38

Sintetizarea funcțiilor oferite de aplicația implementată…………………………………38

Raportarea la soluțiile consacrate în domeniu……………………………………………….39

Identificarea unor direcții de dezvoltare viitoare a aplicației…………………………..40

Bibliografie…………………………………………………………………………………………………………41

Anexe…………………………………………………………………………………………………………………42

Anexa 1: Lista figurilor………………………………………………………………………………42

Anexa 2: Listarea de cod sursă…………………………………………………………………….43

Introducere:

Descrierea problemei

Dezvoltarea tehonologiei a adus odată cu aceasta și o schimbare pozitivă în viața turiștilor de pretutindeni. [anonimizat], acum toata operațiunea se află la o distanță de câteva click-uri prin deschiderea unei aplicații mobile sau a unei pagini web. În plus, hărțile făcute pe hârtie nu își mai găsesc locul fiind rapid înlocuite cu cele online, iar alcătuirea unei liste lungi cu obiective turistice sau anumite puncte de interes nu își mai au rostul. Deoarece aplicațiile mobile ne acoperă astăzi toate aceste nevoi, tot ce trebuie să facem este să alegem o destinație și să fim dornici de o nouă aventură.

Potrivit unor studii recente, oamenii petrec tot mai mult timp online, iar din totalul timpului petrecut online, mai bine de 50% din acesta îl petrec folosind aplicațiile mobile în detrimentul variantelor web. Acest trend se răsfrânge și asupra turismului, de aceea ideea unei aplicații turistice bine gândită, cu care să te diferențiezi pe aceasta piață, reflectă cel mai bine așteptările turiștilor care plănuiesc o vacanță în viitorul apropiat.

Astfel, am dezvoltat o aplicație mobilă pentru promovarea turismului în zona montană, mai exact în Transfăgărășan și Transalpina. Motivul pentru care am ales această temă este că muntele reprezintă pentru orice turist o atracție deosebită pe tot parcursul anului, iar Munții Carpați ascund cele mai spectaculoase priveliști care pot fi văzute conducând pe cele două drumuri menționate mai sus, promovarea acestora aducând o mulțime de turiști dornici sa vadă frumusețile acestor zone.

Aplicația este destinată turiștilor din întreaga lume, dar și pentru cei din țara noastră care nu au reușit încă să viziteze aceste locuri unice care te fascinează încă de la primul pas. Având în vedere faptul că în ultimii ani studiile arată că România a devenit destinația preferată pentru mulți europeni, fiindcă mai mult de 60% din turiștii străini vin din țările din Europa, dezvoltarea acestei aplicații ca un mic ghid pentru cei care vor să viziteze zona montană a țării noastre consider că este utilă.

Conform World Travel and Tourism Council, România se află pe locul 4 în topul țărilor în care s-a dezvoltat rapid acest fenomen economico-social al turismului, cu un potential de creștere anuală de 8%, un rol important în tot acest proces constituindu-l promovarea și rapiditatea cu care pot ajunge informațiile la utilizatori în cel mai eficient mod. Cu toții ne-am confruntat de-a lungul timpului în planificarea unei vacanțe cu problema găsirii resurselor necesare pentru a ne organiza activitățile în viitoarea călătorie prin compararea diferitelor site-uri și aplicații ce ne pot oferi informații cu privire la obiectivele turistice din zonă, hoteluri, un restaurant unde poți servi o masa bună, dar și vremea din acele zile.

Impactul transformării digitale este evident în toate industriile și sectoarele, iar industria turismului nu face excepție. Tehnologia oferă consumatorilor experiențe semnificative privind călătoriile, astfel încât un studio efectuat de eMarketer arată că aplicațiile mobile bazate pe turism sunt în top 10 descărcări în preferințele utilizatorilor de smartphone. Așadar, îmbinând toate aceste nevoi ale turiștilor am dezvoltat o aplicație care să le ofere informațiile dorite despre aceste zone montane.

Prezentarea funcțiilor de bază ale unei aplicații pentru problema aleasă

O aplicație de promovare a unei zone turistice trebuie să îi ajute pe utilizatori să își planifice vacanța în acel loc în cel mai mic detaliu, știind de înainte ce puncte de interes există în zonă, unitățile disponibile pentru cazare care să le ofere comfort pe toată durata sejurului, restaurantele cu cele mai bune preparate tradiționale, prognoza meteo în perioada respectiva, etc. Toate aceste informații au fost incluse în aplicația pe care am ales să o dezvolt, astfel încât călătoritul să devină mai sigur pentru toți turiștii.

Cel mai important pentru utilizator este primul contact cu aplicația, modul în care este întâmpinat imediat ce deschide aplicația prin intemediul designului acesteia îl constituie factorul principal în hotărârea de a păstra acea aplicație și pe viitor. Utilizatorul așteaptă ca funcționalitățile să fie ușor de accesat, să afle tot ce îl interesează la un click distanță, astfel că interfața cu utilizatorul trebuie să fie cât mai ușor de utilizat, altfel interesul pentru aplicație va dispărea și va alege alte modalități de a obține informațiile de care are nevoie.

Aplicația dispune de diverse funcționalități de care utilizatorii vor beneficia imediat ce și-au creat un cont, introducând adresa de email și o parolă. Toți utilizatorii vor fi înregistrați intr-o bază de date unde sunt reținute datele contului lor pentru o viitoare logare în aplicație. Aceștia pot modifica datele contului sau îl pot șterge dacă își doresc să nu mai folosească aplicația și să nu mai figureze în baza de date pentru a nu primi pe viitor diferite oferte prin email.

Odată logat utilizatorul va alege una dintre cele două zone montane: Transfăgărășan sau Transalpina, având acces la informații referitoare la acestea pentru planificarea unei viitoare calătorii acolo. Ca să își facă o idee despre frumusețile zonei un scurt video de prezentare poate fi urmărit accesând meniul aplicației destinației alese, iar mai apoi celelalte opțiuni din meniu: obiectivele turistice cu informații despre acestea dar și posibilitatea de a vizualiza unde se află amplasate pe hartă; unități de cazare din apropiere cu posibilitatea de a face o rezervare directă telefonică, sau cu trimitere către site-ul www.booking.com pentru a face o rezervare online, și totodată turiștii interesați pot vizualiza locația exactă a unității de cazare pe hartă. O altă opțiune pe care o conține meniul aplicației este oferirea unei liste de restaurante cu descrierea specificului culinar al fiecăruia și meniul dacă este disponibil online, iar la fel ca și în cazul unităților de cazare există posibilitatea de a afla locația exactă a restaurantului pe hartă, astfel turiștii pot vedea distanța de la unitatea de cazare până la unul din restaurantele la care ar vrea sa servească masa.

O altă funcționalitate pe care aplicația o pune la dispoziția utilizatorilor este aceea de a avea acces la informații cu privire la prognoza meteo dintr-o anumită locație sau chiar din punctul în care se află în acel moment cu ajutorul GPS-ului care detectează locația curentă. De asemenea, pot consulta și vremea din următoarele ore, din ziua următoare sau chiar pe întreaga săptămână. În cadrul aceleiași pagini pot găsi grafice cu privire la temperatură, precipitații, viteza vântului și presiunea din aer în următoarele zile și o hartă care le arată prin culori specifice (galben spre nuanțe tot mai roșiatice pentru temperaturi ridicate, albastru pentru temperaturi scăzute, etc.) temperatura din toate zonele țării și nu numai, unde există precipitații în acel moment și situația vitezei vântului.

Deoarece interacțiunea cu utilizatorul este foarte importantă pentru a aduce îmbunătățiri aplicației și pentru a ști ce așteptări au cei care utilizează aplicația, am inclus încă o funcționalitate, și anume cea de feedback, prin care utilizatorul poate să trimită un mesaj prin intermediul email-ului administratorului aplicației pentru a ști pe viitor ce informații își mai doresc cei care descarcă aplicația să găsească prin intermediul ei sau să trimită o apreciere, primind un feedback pozitiv despre funcționalitățile aplicaței, știind astfel că i-a fost de folos. Feedback-ul nu reprezintă altceva decât o reacție având ca scop menținerea unui echilibru.

1.3. Prezentarea unor soluții consacrate existente pe piață

Astăzi, aplicațiile mobile joacă un rol foarte important în fiecare domeniu de afaceri dar și în viața personal a fiecăruia dintre noi. Astfel, industria turismului nu face nici ea excepție, deoarece o mare parte din succesul acesteia îl reprezintă promovarea prin intermediul aplicațiilor mobile. Trecutul turismului constituit din hărți de hârtie, ghiduri și alte lucruri au dispărut odată cu avansarea tehnologiei și apariția primelor aplicații mobile care vin cu o mulțime de funcționalități pentru utilizatorii lor.

Datorită faptului că smartphone-urile au devenit obiecte inseparabile a vieții de zi cu zi pentru posesorii lor, aceștia preferă ca să-și planifice vacanța prin intemediul aplicațiilor mobile stând acasă pe canapea.

Dacă urmărim topurile celor mai descărcate aplicații de turism putem oberva funcționalitățile pe care utilizatorii și le doresc pentru o astfel de aplicație, astfel ca dezvoltatorii acestora să vină mereu cu idei inovatoare pe acest plan. Din Google Play am reușit să realizez un mic top a celor mai utilizate aplicații când vine vorba de a planifica o vacanță.

Unele dintre cele mai descărcate aplicații de către utilizatori sunt Airbnb și Booking.com tonight care reprezintă o extensie a site-ului www.booking.com și oferă funcționalități precum găsirea unor unități de cazare în funcție de bugetului fiecăruia și realizarea unei rezervări, cu review-uri de la clienții care au vizitat deja acele locuri și de asemenea fiecare unitate poate fi vizualizată prin deschiderea hărților sau se poate lua contact direct cu proprietarul acestora.

Aplicații la fel de utilizate sunt celor ale companiilor de zbor, precum Lufthansa, Wizz Air, KLM, etc., perfecte pentru a căuta cele mai bune oferte la biletele de avion pentru destinația aleasă, cu posibilitatea rezervării unui zbor și a vizualizării informațiilor legate de acesta precum și realizarea unui check-in rapid înainte de a ajunge la aeroport.

Printre aplicațiile preferate de turiști se numără și TripAdvisor care oferă utilizatorilor informații despre orice oraș, hotel, restaurant, muzeu, etc. bazându-se pe review-urile călătorilor care au vizitat deja acele locuri. De asemenea, există o secțiune specială în aplicație care dă acces la informații despre zonele din apropiere și permite printr-un tap ca utilizatorul să își facă rezervare la un restaurant din zonă sau să obțină mai multe informații despre magazine, parcuri de distracții sau alte puncta de atracție de acolo. Tocmai pentru că vizitarea unui loc nou presupune și o serie de locuri necunoscute, aplicația AroundMe vine în ajutorul turiștilor prin localizarea locației unde se află și oferindu-le o listă cu băncile, benzinăriile, spitalele, restaurantele, supermarketurile, hotelurile, stațiile de taxi sau chiar cinematografele și teatrele din apropiere.

Deoarece mulți turiști își doresc să își asigure transportul până la destinație, cât și pe perioada sejurului, aplicația KAYAK se numără de ani de zile printre preferatele lor, oferind posibilitatea de a rezerva un zbor, o cameră de hotel dar și închirierea unei mașini pe durata vacanței pentru a se deplasa către toate punctele de interes de pe lista lor.

Analizând beneficiile aplicațiilor mobile în planificarea unei vacanțe, industria turismului din România nu se lasă mai prejos iar cererea pentru dezvoltatorii aplicațiilor de acest gen a devenit tot mai ridicată, astfel putem enumera câteva dintre ideile de aplicații existente pe această piață exlusiv pentru teritoriul țării noastre: Muzee și Colecții din România și Monumente România reprezintă două aplicații-ghid care include informații despre toate muzeele din România, respectiv monumentele istorice din țară. O altă aplicație interactivă este Redescoperă România care cu ajutorul hărții le arată turiștilor punctele de interes pe un anumit perimetru. SkyTripRoad și HartaCeSăVezi sunt aplicații prin care călătorii pot alege atracțiile turistice pe care doresc să le viziteze de pe un anumit traseu. O aplicație des utilizată este Orașul meu care conectează utilizatorii la o mulțime de evenimente care se produc lunar în orașele mari din țară. Cea mai complex aplicație dintre toate în acest domeniu este Tourist Infomator prin care utilizatorii au acces la toate informațiile de interes turistic, de la cazare până la atracții și activități în zona respectivă.

În ideea de a promova turismul din țara propie, o companie privată din Republica Moldova a dezvoltat o aplicație turisică unde au fost incluse informații în limba engleză despre cele mai populare monumente culturale, vinării, manăstiri și muzee din Moldova cu posibilitatea de a vizualiza locația acestora prin intermediul hărților și astfel orice turist poate să-și planifice traseul pentru o viitoare călătorie acolo. Plecând de la aceste premise, am considerat necesară promovarea celor două zone turistice montane, cu scopul de a crește numărul turiștilor care vor fi interesați să le viziteze, parcurgând cele mai înalte și spectaculoase drumuri din țară: Transfăgărășan și Transalpina, cu ajutorul aplicației pe care am dezvoltat-o, dedicată în totalitate acestora.

Proiectarea aplicației

Diagrama cazurilor de utilizare

Figura 2.1: Diagrama cazurilor de utilizare

Diagrame de secvență

Figura 2.2: Diagrama de secvență pentru “Cont”

Figura 2.3: Diagrama de secvență pentru “Zonă montană”

Diagrame de stare

Figura 2.4: Diagrama de stare pentru “Cont”

Figura 2.5: Diagrama de stare pentru “Zonă montană”

Diagrame de activitate

Figura 2.6: Diagrama de activitate pentru “Cont”

Figura 2.7: Diagrama de activitate pentru “Zonă montană”

Diagrama de pachete

Figura 2.8: Diagrama de pachete

Diagrama de componente

Figura 2.9: Diagrama de componente

Diagrama de clase

Figura 2.10: Diagrama de clase

Diagrama de clase detaliată

Figura 2.11: Diagrama de clase detaliată

Figura 2.12: Diagrama de clase detaliată (partea 1)

Figura 2.13: Diagrama de clase detaliată (partea 2)

Figura 2.14: Diagrama de clase detaliată (partea 3)

Figura 2.15: Diagrama de clase detaliată (partea 4)

2.8 Securizarea aplicației

Într-o perioadă relativ scurtă de timp, Android a devenit cea mai populară platformă pentru dispozitivele mobile din lume. Deși inițial sistemul a fost proiectat pentru smartphone-uri, acesta este folosit astăzi pe tablete, televizoare, ceasuri sau chiar în computerele de bord ale mașinilor.

Sistemul de operare Android are o mulțime de caracteristici integrate de securitate, cum ar fi sandbox-ul care reprezintă un mecanism ce izolează de alte aplicații datele și codul sursă al aplicației, protecția împotriva supraîncărcării buffer-ului, zone de memorie segregate pentru instrucțiunile și datele aplicației, etc. Modelul de securitate al sistemul Android este avantajat de caracteristicile de securitate oferite de Linux, care reprezintă un sistem de operare al cărui nucleu izolează resursele utilizatorilor una de alta, altfel spus, într-un sistem Linux un utilizator nu poate accesa resursele altui utilizator decât cu permisiunea acestuia.

Ca urmare a celor menționate mai sus, aplicațiile Android simple care nu efectuează nici un sistem de fișiere sau operațiuni de rețea pot fi considerate sigure în mod implicit. Însă, când vine vorba despre a dezvolta aplicații complexe care să corespundă standardelor de astăzi este responsabilitatea dezvoltatorului să găsească soluții pentru a-și asigura datele aplicației și pentru a proteja confidențialitatea utilizatorilor.

Permisiuni:

Deoarece aplicațiile android sunt de tip sandbox, acestea pot accesa doar fișiere proprii sau resurse accesibile de pe acele dispozitive. Cu o astfel de limitare aplicațiile nu ar mai prezenta interes, de accea sistemul Android poate acorda drepturi suplimentare de acces la diverse funcționalități externe. Aceste drepturi de acces se numesc permisiuni și pot controla accesul la dispozitivele hardware, conectivitatea la Internet, date, etc. Permisiunile se pot solicita prin definirea lor în fișierul AndroidManifest.xml.

Figura 2.16: Permisiuni în fișierul AndroidManifest.xml

Intent pentru IPC:

În aplicațiile Android utilizarea socket-urilor sau a fișierelor partajate pentru a comunica în mod asincron cu alte aplicații instalate pe dispozitivul Android sunt grele și nesigure, astfel o abordare mai sigură este oferită prin folosirea obiectelor de tip Intent. Pentru a trimite date de la o componentă a aplicației la alta sau de la o activitate către altă activitate, se creează o nouă instanță a clasei Intent și este utilizată metoda setComponent() pentru a specifica numele pachetului aplicației și a componentei, apoi datele se transmit prin metoda PutExtra(). Iar pentru a trimite date simultan la mai multe aplicații, obiectul de tip Intent este trimis folosind metoda sendBroadcast().

Figura 2.17: Folosirea obiectelor de tip Intent între două activități

Utilizarea spațiului de stocare intern:

Toate aplicațiile Android au un director de stocare intern asociat a cărui cale o reprezintă numele pachetului aplicației. Fișierele din acest director sunt sigure deoarece sunt create implicit în modul privat, deci acestea nu pot fi accesate de nici o altă aplicație de pe dispozitiv. Prin urmare, datele importante ale aplicației este bine să fie stocate în acest director. Pentru a determina calea absolută a directorului de stocare intern al aplicației se utilizează metoda getFilesDir().

Utilizarea spațiului de stocare extern pentru criptarea datelor:

Capacitatea de stocare internă a unui dispozitiv Android este limitată, de aceea uneori singura posibilitate de a stoca datele este pe medii de stocare externe. Însă aceste medii de stocare externe pot fi accesate în mod direct de către alți utilizatori, cât și de alte aplicații de pe dispozitiv, astfel este necesară criptarea acestora. Unul dintre algoritmii de criptare folosiți deseori astăzi este Advanced Encryption Standard, prescurtat AES.

Utilizarea HTTPS:

Comunicarea între aplicație și servere trebuie să fie efectuată printr-o conexiune HTTPS utilizând clasa HttpsURLConnection. Prin utilizarea HTTPS, atâta timp cât serverul este configurat cu un certificat emis de una din autoritățile de certificare de încredere, de exemplu GlobalSign, traficul de rețea va fi protejat de dăunători externi care ar putea apărea din cauza faptului că dispozitivele mobile se conectează frecvent la rețele nesecurizate, cum ar fi hotspoturile publice Wi-Fi.

API:

API reprezintă o resursă externă, capabilă să răspundă și să accepte cererile de resurse făcute de către aplicații. Pentru a creea identificatori unici precum API KEY și OAuth 2.0. Google abordează două viziuni diferite.

API KEY:

Cheia API este un identificator unic utilizat pentru a autentifica cererile asociate unui anumit proiect în scopul utilizării acestuia. Cheile API sunt o modalitate accesibilă prin care se impun anumite autentificări unei aplicații. De exemplu, prin utilizarea unei chei API gestionează automat accesul la hărțile oferite de Google, la afișarea acestora, descărcarea de date, etc.

OAuth 2.0.:

OAuth 2.0. este un protocol standard de autorizare care permite aplicațiilor să obțină accesul limitat la conturile de utilizator pe un serviciu HTTP, oferind în același timp fluxuri de autorizare specifice aplicațiilor desktop, web și telefoanelor mobile. OAuth2.0. este o modalitate de a separa procesul de autentificare de accesul la resurse, astfel că în locul trimiterii acreditărilor, utilizatorul preia un token care va fi utilizat pentru a accesa mai apoi acea resursă.

Securizarea bazei de date:

Un prim pas în securizarea aplicației este identificarea utilizatorilor prin procesul de autentifiicare. Firebase include suport de tip drop-in pentru metodele de identificare comune precum Facebook și Google, autentificarea anonimă sau autentificarea prin intermediul email-ului și a unei parole.

Deoarece utilizatorii au roluri diferite, identificarea acestora este un concept important al securității aplicației. De exemplu, într-o aplicație care include un chat, fiecare mesaj este asociat utilizatorului care l-a trimis și doar acesta poate să aleagă dacă dorește să șteargă mesajul, ceilalți utilizatorii neavând această permisiune.

Regulile bazei de date sunt gestionate printr-un singur obiect de tip JSON care poate fi editat prin consola bazei de date, fie prin intermediul Firebase CLI, adică linia de comandă a bazei de date.

Figura 2.18: Definirea regulilor într-o bază de date

Implementarea aplicației

Prezentarea tehnologiilor utilizate

Android reprezintă o platformă software și un sistem de operare pentru dispozitivele mobile bazată pe nucleul Linux, inițial fiind dezvoltată de compania Google, iar mai apoi de Open Handset Alliance, un consorțiu format din 48 de companii de software, hardware și telecomunicații.

Android a fost construit ca să ofere dezvoltatorilor posibilitatea de a creea aplicații mobile cu ajutorul limbajului de programare Java prin care utilizatorii să aibe acces la tot ceea ce telefonul mobil are de oferit. De exemplu, o aplicație poate să acceseze oricare din funcțiile de bază ale telefonului, cum ar fi trimiterea de mesaje text, efectuarea de apeluri telefonice, utilizarea camerei foto, etc. Android utilizează o mașină virtuală personalizată, numită Dalvik, creată de Dan Bornstein și inginerii Google să optimizeze resursele hardware și memoria dispozitivelor mobile.

Arhitectura sistemului Android este formată din următoarele componente:

Figura 3.1: Arhitectura sistemului Android

Kernel-ul Linux:

Inima arhitecturii Android este reprezentată de nucleul Linux. Acesta conține drivere pentru diferite componente ale hardware-ului (ecran, tastatură, camera foto, erc.) și este responsabil pentru gestionarea memoriei, proceselor, dispozitivelor de intrare/ieșire și accesului la resurse.

Hardware Abstraction Layer:

Nivelul de abstractizare a hardware-ului este alcătuit din mai multe module de biblioteci care realizează fiecare câte o interfață pentru un anumit tip de componentă hardware, cum ar fi modulul bluetooth sau modulul camerei. Atunci când un cadru API face apel pentru a accesa hardware-ul dispozitivului mobil, sistemul Android acționează prin încărcarea modulului bibliotecii pentru acea componentă.

Android Runtime:

În timpul procesului de rulare a aplicației Android există biblioteci de bază dezvoltate în limbajul Java și DVM (Dalvik Virtual Machine) care sunt responsabile pentru rularea corectă a aplicației. Fiecare aplicație rulează având propria instanță. De asemenea, există posibilitatea de a rula mai multe mașini virtuale prin executarea fișierelor de tip DEX care conțin un format bytecode special conceput pentru Android, cu ajutorul căruia se optimizează memoria.

Native C/C++ libraries:

Multe componente și servicii de bază ale sistemului Android necesită biblioteci native scrise în C/C++. Platforma Android oferă API-uri Java pentru a expune funcționalitatea anumitor biblioteci pentru aplicații. De exemplu, prin accesarea bibliotecii OpenGL ES se adaugă suport pentru desenarea și manipularea graficelor 2D și 3D, biblioteca WebKit este responsabilă pentru suportul browser-ului, FreeType pentru suportul fonturilor, SQLite pentru baza de date, iar Media pentru înregistrarea și redarea formatelor de tip audio și video.

Java API framework:

Cadrul Android include întregul set de caracteristici al sistemului de operare diponibil prin intermediul API-urilor scrise în limbajul Java. Aceste API-uri conțin un sistem de vizualizare folosit pentru a construe interfața cu utilizatorul, butoane, liste, grille și chiar un browser web integrat; un manager de resurse care oferă acces la fișierele de tip layout și grafică; manager de notificări care permite aplicațiilor să afișeze notificări în bara de stare a telefonului mobil; manager de activități care gestionează ciclul de viață al aplicațiilor și furnizori de conținut care oferă aplicațiilor acces la datele din alte aplicații, cum ar fi accesul către contactele de pe dispozitiv.

System apps:

În partea de sus a cadrului arhitecturii Android se află aplicațiile de bază pentru mesaje, e-mail, contacte, calendar, navigare pe Internet, etc. care utilizează bibliotecile native la runtime, iar acestea la rândul lor utilizează nucleul Linux.

Aplicațiile sistemului funcționează ca aplicații pentru utilizatori, dar și pentru a oferi anumite utilizări pe care dezvoltatorii le pot accesa din propriile aplicații. De exemplu, în cazul în care prin intermediul aplicației dezvoltate se dorește posibilitatea de a transmite un mesaj text se poate invoca aplicația care este deja instalată pentru a transmite mesaje text către un anumit destinatar fără a fi nevoie să se creeze acea funcționalitate.

Mediul de dezvoltare:

Mediul de dezvoltare integrat pentru sistemul de operare Android se numește Android Studio și este cel mai folosit mediu de dezvoltare a aplicațiilor Android, fiind proiectat pentru a putea fi descărcat pe toate sistemele de operare. Android Studio a fost anunțat pe data de 16 mai 2013 la conferința Google, aflându-se la vremea aceea în faza de previzualizare, etapa beta fiind lansată în iunie 2014 și prima versiune stabilă oferită publicului a fost lansată abia în luna decembrie a anului 2014, versiunea Android 1.0. Dacă până acum Java era limbajul preferat de dezvoltatorii Android Studio, în 7 mai 2017 a fost lansat un alt limbaj preferat de Google numit Kotlin, ambele fiind utilizate pentru dezvoltarea aplicațiilor Android.

La baza construirii unei aplicații Android există patru componente mari: activități, receptorii de mesaje, servicii și furnizorii de conținut. Nu toate aceste componente trebuie neapărat incluse într-o aplicație, odată alese care dintre acestea vor face parte din aplicație, în fișierul numit AndroidManifest.xml vor fi declarate conținând detalii cu privire la funcțiile pe care le îndeplinesc în aplicație.

Dintre cele patru blocuri de construcție a unei aplicații Android, activitățile sunt cele mai frecvente, reprezentând o singură pagină a aplicației. O activitate este implementată printr-o singură clasă care va afișa și o interfață cu utilizatorul compusă din butoane, imagini, EditText, etc. cărora li se atribuie diverse funcții și utilizări. Aplicațiile sunt construite de obicei din mai multe activități, spre exemplu o aplicație de mesagerie text va avea o activitate care afișează liista de contacte, o activitate pentru a scrie mesajul către destinatarul ales și alte activitate pentru a revedea mesaje vechi trimise sau primite. O altă componentă a aplicației o reprezintă receptorii de mesaje care transmit date de la o activitate a aplicației la alta prin intermediul acestei clase speciale numite Intent. Serviciile sunt componenta aplicației reprezentată prin porțiuni de cod care îndeplinesc anumite funcții pe o anumită perioadă de timp și rulează în cadrul aplicației fără o interfață utilizator. Un exemplu pentru acestea îl reprezintă o aplicație de tip media player prin intermediul căreia se redau melodii dintr-o listă în continuare chiar și la trecerea dintr-o activitate în cealaltă fără ca redarea acestora să fie gestionată printr-o activitate. Ultima componentă a aplicațiilor sunt furnizorii de conținut utilizați pentru a partaja datele aplicației cu alte aplicații de pe dizpozitvul mobil printr-o serie de metode care oferă permisiuni către aceste date.

Fiecare proiect din Android Studio conține module cu fișiere de resurse și de cod sursă. Vizualizarea proiectului Android este organizată pe module pentru a oferi rapid accesul la fișierele cheie ale proiectului. Acestea sunt organizate în foldere astfel: folderul manifests conține fișierul AndroidManifest.xml, folderul java conține fișierele care conține cod sursă Java și fișierul res compus din toate resursele care nu conțin cod Java, cum ar fi layout-urile XML, șirurile de caractere UI, imagini, etc.

Figura 3.2: Organizarea fișierelor în cadrul proiectelor din Android Studio

Java:

Pentru dezvoltatorii de aplicații mobile din întreaga lume Java este limbajul preferat de programare folosit în dezvoltarea unei aplicații Android, fiind limbajul care stă la baza construirii majorității aplicațiilor din Magazin Play. Limbajul Java a fost dezvoltat de Sun Microsystems încă din 1995 și a fost creat pe baza sintaxelor limbajul C++ astfel încât cei care doreau să învețe limbajul puteau fi deja familiarizați cu noțiunile de bază învățate din C++. Din punct de vedere structural, limbajul Java este organizat în pachete cu o anumită denumire, în interiorul acestora se află clasele, iar în cadrul claselor se găsesc metode, constante, variabile, etc. Programarea pe o platformă Java înseamnă scrierea de cod sursă în fișierele .java care sunt mai apoi compilate și verificate de către compilator și transformate în bytecode în fișierele .class. Bytecode reprezintă un set de instrucțiuni care rulează pe o mașină virtuală Java, aceasta având rolul de a interpreta codul sursă care urmează să ruleze pe un dispozitiv Android.

Însă, pentru dezvoltatorii la început de drum limbajul Java nu este tocmai simplu de învățat, deoarece este un limbaj de programare orientat pe obiecte cu multiple noțiuni despre constructori, excepții și multe altele. De asemenea, în cazul dezvoltării aplicațiilor Android apare Java SDK (Software Development Kit) care reprezintă setul de unelte folosite la scrierea programelor pe platforma Android Stufio, conținând biblioteci și API-uri care pot fi apelate de către programatori. De asemenea, vine le pachet cu o serie de noțiuni noi care trebuie înțelese, precum Gradle, AndroidManifest și fișierele XML.

JavaScript:

Pentru a furniza o pagină web prin intermediul unei aplicații ca parte a acesteia se utilizează clasa WebView care reprezintă o extensie a clasei View din Android prin care se permite afișarea paginilor web într-o aplicație. Dacă pagina web care urmează să fie încărcată prin intermediul WebView în aplicație conține cod JavaScript acesta trebuie activat prin următoarele metode: getSettings() și setJavaScriptEnabled().

Prin dezvoltarea unei aplicații web sau a unei pagini care conține WebView într-o aplicație se se poate apela metoda addJavascriptInterface pentru a lega o interfață între codul aplicației Android de codul JavaScript.

De asemenea, pentru manipularea hărților, animațiilor și creearea unor hărți cât mai interactive pe un dispozitiv mobil se folosesc bibliotecile JavaScript jQuery și Leaflet.

JSON( JavaScript Object Notation):

JSON este un format de fișiere standard care conține text lizibil pentru a transmite date formate din perechi de atribute cheie-valoare și tipuri de date sub formă de matrice. Se bazează pe limbajul JavaScript dar este un format text complet independent, utilizând convenții familiare limbajelor de programare C, C++, C#, Python, Java, JavaScript, etc.

Regulile de sintaxă JSON sunt constituite din obiecte, reprezentând un set de perechi cheie/valoare neordonate cuprinse între două acolade { }, perechile cheie/valoare fiind separate prin virgulă și matricele, care reprezintă o colecție ordonată de obiecte cuprinse între paranteze drepte [ ] și separate prin virgulă.

Schema JSON reprezintă un format de validare și control asupra datelor. Schema JSON este bazată pe conceptele schemei XML, ambele reprezentând un suport în crearea, citirea și decodificarea datelor, JSON fiind preferat deoarece datele pot fi mai ușor transmisibile și analizate.

Google Maps API:

Cu ajutorul setului SDK de hărți disponibile pentru Android se pot adăuga aplicației hărți pe baza datelor din Google Maps. Pentru a utiliza SDK de hărți pentru Android este necesară obținerea unei chei API. Cheia API reprezintă un identificator unic utilizat pentru autentificarea cererilor ascoiate proiectului, astfel că, în acest caz API-ul permite afișarea hărților solicitate de la Google și personalizarea acestora cu conținut și imagini urmând să fie afișate în cadrul aplicațiilor de pe dizpozitivele Android. Serviciul API Maps Static returnează harta sub forma unei imagini care poate fi accesată din aplicație pe baza parametrilor URL expediați printr-o solicitare HTTP.

API-ul JavaScript Maps conține patru tipuri de hărți: hartă rutieră, satelit, de teren și hibridă care pot fi modificate prin diverse stiluri, evenimente, controale, biblioteci, etc. Prin intermediul API-ului Google Maps se permite solicitarea unei adrese din partea Google (se adaugă locația fizică prin scrierea valorilor exacte de latitudine și longitudine și acestea sunt transformate într-o adresă sau se poate și inversa procesul), de asemenea se pot obține repere și informații ale unor companii, restaurante, etc., iar prin intermediul casetei de căutare utilizatorii pot căuta o anumită locație pe hartă. Tot cu ajutorul API-ului se pot adăuga pe hartă o serie de marcatori, adică obiecte ancorate pe hartă la anumite poziții reprezentând locația exactă, polilinii, poligoane pentru a evidenția un anumit traseu de exemplu, sau seturi de imagini care sunt afișate în partea superioară a hărții. Atfel, toate aceste obiecte oferă utilizatorului permisiunea de a interacțiunea cu hărțile.

O altă proprietate a hărților este geolocația care se referă la identificarea locației geografice prin mecanisme de colectare a datelor unui dispozitiv. Geolocația reprezintă un API specific dispozitivelor și se determină prin intermediul adreselor de rutare a rețelei sau a dispozitivelor GPS interne.

Firebase:

Firebase este o platformă de dezvoltare a aplicațiilor mobile și web cu ajutorul căreia dezvoltatorii reușesc să obțină aplicații de înaltă calitate, dezvoltându-și baza de date a utilizatorilor având la dispoziție o multitudine de instrumente și servicii.

Evoluția Firebase începe în anul 2011 cu Envolve când James Tamplin și Andrew Lee au oferit dezvoltatorilor un API prin intermediul căruia aceștia puteau integra în aplicațiile lor o funcționalitate de chat online. În anul 2012 a fost lansat Firebase-Real Time, ca prim produs al companiei reprezentând un API care sincronizează datele din aplicațiile dispozitivelor mobile și le stochează în baza de date, permițând astfel creearea aplicațiilor în timp real. După ce a fost achiziționată de Google în 2014, Firebase a evoluat rapid în platforma care este astăzi.

Figura 3.3: Serviciile oferite de Firebase

Serviciile oferite de Firebase se împart în două categorii: dezvoltarea și testatea aplicațiilor și analiza datelor.

Baza de date Firebase Realtime este o bază de date găzduită în Cloud, NoSQL care permite stocarea și sincronizarea datelor de la utilizatori în timp real, iar prin intermediul API-ului aceasta furnizează imediat orice actualizare a datelor. Un beneficiu este livrarea acesteia cu SDK-uri mobile și web care permit construirea aplicațiilor fără a fi nevoie de servere, de asemenea aceasta poate fi integrată și prin intermediul Firebase Authentification, care oferă servicii de backend, biblioteci și SDK-uri ușor de utilizat pentru autentificarea utilizatorilor în aplicație. Metodele de autentificare a utilizatorilor sunt următoarele: Google, Facebook, email și parolă, număr de telefon, Twitter și altele.

Cloud Firestore este o bază de date flexibilă la fel ca și Firebase RealTime, iar prin aceasta se pot sincroniza datele aplicațiilor și oferă suport offline pentru web și mobil. Cloud Storage reprezintă un serviciu de stocare a datelor simplu și eficient, construit de Google. SDK-urile bazei de date pentru spațiul de stocare al platformei Cloud asigură securitatea fișierelor la descărcarea acestora chiar dacă conexiunea la Internet este slabă. Se pot stoca imagini, video, audio sau alte conținuturi generate și transmise de utilizatori.

Alte servicii oferite de Firebase sunt Firebase Cloud Messaging prin care se pot transmite mesaje și notificări simultan către mai multe dispozitive mobile conectate și este conectat cu Firebase Analytics care oferă o analiză detaliată a datelor partajate; interogarea bazei de date prin metode de filtrare specifice pentru a simplifica procesul de preluare a datelor: orderByKey( ), startAt(‘value’), endAt(‘value’), equalTo(‘child_key’), etc și Firebase Test Labs care oferă diverse moduri de testare a aplicației mobile.

3.2 Detalii privind algoritmii folosiți

Aplicația “TransTravel” se deschide cu o activitate care prin intermediul apăsării unui buton îi permite utilizatorului accesul către activitatea de autentificare în contul său numită LoginActivity.java pentru a avea acces mai apoi la informațiile oferite de aplicație, dacă are deja un cont creat sau prin apăsarea butonului de înregistrare a unui nou membru din activitatea menționată se va deschide o altă activitate pentru a-i permite creearea unui cont numită SignupActivity.java.

Înainate de a realiza procesul de autentificare este nevoie de adăugarea unei dependențe pentru baza de date Firebase care va stoca toate datele utilizatorilor, respectiv Firebase Authentification, în fișierul build.gradle, dar și dependența pentru fișierul json “google-services”, cu ajutorul căruia Firebase gestionează setările pentru credențiale și pentru API. De asemenea, în fișierul AndroidManifest.xml se adaugă permisiunea pentru utilizarea internetului prin care se permite accesul la serviciul FirebaseAuth.

Revenind la activitatea SingupActivity.java am creat în interiorul metodei OnCreate( ) o instanță a clasei FirebaseAuth utilizând metoda getInstance( ), iar pentru ca utilizatorul să își creeze un cont este nevoie ca datele introduse în câmpuri să fie corecte conform unor condiții impuse pentru validarea acestora, adică nu trebuie să existe câmpuri necompletate, parola trebuie să conțină minim 6 caractere și adresa de email să se termine cu un domeniu valid.

Accesând activitatea de autentificare, adresa de e-mail si parola sunt trimise ca parametrii pentru metoda signInWithEmailAndPassword( ), astfel că după completarea cu datele contului, va fi apelată metoda addOnCompleteListener( ) pentru a trata execuția operației de SignIn. Dacă utilizatorul are un cont dar a uitat datele de logare își poate recupera parola printr-un click pe butonul de resetare a parolei și i se va trimite un link pentru resetarea parolei prin email datorită trimiterii ca parametru metodei sendPasswordResetEmail( ) adresa de email și a apelării metodei addOnCompleteListener( ), cu suprascrierea metodei onComplete( ). Iar prin utilizarea evenimentului setOnClickListener( ) asupra butonului de Login se va deschide activitatea LoginFirebase, conținând datele cu privire la profilul utilizatorului.

În cadrul activității LoginFirebase există mai multe opțiuni care pot fi accesate prin intermediul metodei setOnClickListener a butoanelor, astfel că utilizatorul poate alege să își șteargă contul, să se delogheze sau să își schime parola. Dacă nu se dorește editarea datelor contului se poate accesa printr-un click pe butonul Next activitatea cu destinațiile de călătorie numită Destinations.java.

Având în vedere faptul că unele dintre funcționalitățile aplicației necesită conexiunea la Internet, înainte de a avea acces la acestea se verifică printr-o funcție în momentul în care se alege o destinație dacă utilizatorul are conexiune la Internet, iar prin metoda OnCreate( ) se accesează serviciul.

Odată accesat unul dintre meniurile zonelor montane: MainTransfagarasan.java sau MainTransalpina.java utilizatorul dispune de funcționalitățile oferite de aplicație: un scurtt video de prezentare a zonei, informații cu privire la obiectivele turistice, unitățile de cazare disponibile, restaurantele din zonă cu posibilitatea de a vizualiza locația acestora pe hartă dar și de a lua legătură cu proprietarul pentru o eventuală rezervare prin intermediul unui apel telefonic dar și prognoza meteo în perioada respectivă.

În activitatea destinată prezentării destinației alese, prin suprascrierea metodei onCreateView() am utilizat un control de tip MediaController și un widget de tip VideoView pentru a reda un video despre zonă din fișierul de resurse al aplicației.

Cel mai intuitiv și interactiv mod de a furniza o locație sau o adresă fizică este prin intermediul unei hărți, folosind MapView, prin care se poate creea o activitate care afișează o hartă, oferind control asupra modului de afișare a acesteia, locației și zoom-ului. Mai întâi trebuie obținute anumite permisiuni prin scrierea lor în fișierul AndroidManifest.xml: INTERNET (permite accesul la Internet), ACCESS_FINE _LOCATION (permite determinarea locației exacte a clientului folosind GPS) și ACCESS_COARSE_LOCATION (permite determinarea locației aproximative a clientului folosind WiFi) și adăugarea dependențelor în fișierul build.gradle. Harta arată locația exactă a punctului de interes dorit prin utilizarea API-ului și pachetului oferit de Google Maps, folosind URL-ul care să afișeze harta cu marker-ul la acea locație.

De asemenea, pentru a avea posibilitatea efectuării unui apel direct către proprietarul unei anumite unități de cazare, de exemplu, e nevoie de adăugarea unei permisiuni în fișierul ManifestAndroid, și anume: CALL_PHONE (permite inițierea unui apel telefonic). Cele două acțiuni sunt diferențiate în interiorul clasei DetailActivity.java prin două constante diferite și sunt apelate prin intermediul unor metode numite launchMaps( ) și launchCall( ).

Clasa Landmark.java reprezintă șablonul după care sunt furnizate informațiile din fiecare activitate cu privire la obiectivele turistice, hoteluri și restaurante, conținând atributele aferente: denumirea, descrierea, adresa, orele de program, numărul de telefon, URL-ul pentru hărți și id-ul resursei de tip imagine pentru acestea.

Cele patru activități sunt organizate sub forma unor fragmente, adică secțiuni care au propriul ciclu de viață, conținând evenimente proprii, reprezentând un fel de subactivitate care poate fi reutilizată în cadrul diferitelor activități.

Activitatea care oferă informațiile referitoare la prognoza meteo înglobează o multitudine de funcții descrise în clasele referitoare la aceasta. Astfel că în clasa MainActivityWeather.java prin metoda onCreate( ) este inițiată tema de bază a activității, bara de instrumente și sunt preluate informațiile actuale despre vremea din zonă, și anume: temperatura, vântul, precipitațiile, presiunea aerului, umiditatea, indicele UV, dar și ora la care răsare și apune soarele în acea zi; toate aceste atribute fiind descrise în clasa Weather.java. Prin metoda OnStart( ) sunt actualizate informațiile în timp real cu privire la vremea din acea zi dar și din zilele următoare.

Metoda searchCities( ) permite utilizatorului să caute o anumită localitate de unde își dorește să afle prognoza meteo prin tastarea acesteia într-un EditText si prelucrarea numelui astfel încât datele să fie preluate. Datele sunt preluate din fișiere de tip JSON prin metode numite ParseTodayJson( ) sau ParseLongTermJson( ) care vor întoarce ca rezultat obiecte de tip enum cu rezultatele despre vremea din locația respectivă dacă aceasta a fost găsită.

Accesând meniul toolbar-ului, prin metoda onOptionsItemSelectected( ) utilizatorul poate alege una dintre opțiuni: reîncărcarea paginii prinicipale pentru a se actualiza vremea prin metoda refreshWeather( ), vizualizarea condițiilor meteo pe hartă, grafice cu temperatura, precipitațiile și altele, căutarea unei locații prin metoda searchCities( ) menționată mai sus, localizarea locației prin intemediul GPS-ului sau setări prentru alegerea preferințelor modului de vizualizare a condițiilor meteo.

Metoda getCityByLocation( ) permite utilizatorului prin accesarea serviciilor GPS pentru localizare ale telefonului mobil să afle condițiile meteo din zona în care se află utilizând permisiunile din fișierul AndroidManifest.xml cu privire la INTERNET și ACCESS_ FINE_LOCATION și LOCATION_SERVICE prin care sunt controlate actualizările locației.

În clasa MapActivity.java algoritmul implentat afișează hărțile cu temperatura, precipitațiile și viteza vântului printr-un widget de tip WebView. În metoda onCreate( ) sunt inițializate cele trei hărți prin preluarea API-ului Javascript și accesarea din folderul assets a documentului map.html care conține pagina web creată cu HTML, CSS și JavaScript, cu ajutorului librăriilor JavaScript jQuery și Leaflet pentru o utilizare mai rapidă și mai usoară a hărților și prin adăugarea interfeței JavaScript.

Clasa GraphActiviy.java are implementate metode pentru trasarea graficelor care afișează pe parcursul câtorva zile fluctuațiile de temperatură, schimbarea vitezei de vânt, presiunea aerului și nivelul precipitațiilor. Prin metoda OnCreate( ) sunt stabilite modurile de vizualizare prin teme predefinite din care utilizatorul poate alege și inițializate graficele de tip linie prin setarea culorilor, tipului de linie, efectelor, etc. prin intermediul unor algoritmi specifici de desenare. Datele preluate pentru realizarea graficelor se obțin prin metoda parseLongTermJson, dintr-un fișier de tip json cu informațiile numerice despre temperatură, precipitații, presiune și viteza vântului, iar după ce au fost preluate sunt trasate graficele cu specificațiile fiecăruia prin metodele temperatureGraph( ), rainGraph( ), pressureGraph( ) și windSpeedGraph( ).

4. Concluzii

4.1 Sintetizarea funcțiilor oferite de aplicația prezentată

În era tehnologiei, unde oamenii au devenit dependenți de utilizarea telefoanelor mobile, devenind principalul mod de comunicare și informare, aplicația descrisă în această lucrare are scopul de a facilita accesul util și rapid al turiștilor la informațiile de care au nevoie pentru a avea siguranța unei călătorii fără griji. În locul multiplelor pagini web de care ar fi nevoie pentru a afla toate informațiile dorite, aplicația oferă obținerea acestora într-un mod ușor și confortabil. Astfel că am decis dezvoltarea aplicației numite “TransTravel” în care sunt înglobate informații cu privire la două zone montane de interes cu potențial turistic ridicat: Transfăgărășan și Transalpina.

Funcțiile oferite de aplicație au fost gândite în așa fel încât nevoile utilizatorilor să fie satisfăcute. Pentru început utilizatorii trebuie să se logheze în contul lor, sau să își creeze unul dacă nu au mai folosit și în trecut aplicația. În cazul în care își doresc, datele contului pot fi schimbate sau șterse în totalitate. Apoi aceștia au la dispoziție o serie de informații cu privire la cele două zone montane: Transalpina și Transfăgărășan, de îndată ce aleg una dintre aceste destinații. Printre funcționalitățile aplicației se numără și accesare informațiilor cu privire la obiectivele turistice din zonă, restaurantele cu preparatele specifice și hotelurile cu posibilitatea rezervării online a unui loc de cazare printr-un click pe link-ul catre site-ul www.booking.com, dar și o scurtă prezentare video a destinației alese, toate acestea accesând meniul aplicației. De asemenea, aplicația dispune de hărți pentru a vizualiza locația exactă a fiecărui punct de interes dintre cele enumerate mai sus, dar și de o funcție prin care se poate lua legătura cu proprietarii unităților de cazare sau a localurilor prin intermediul unui apel telefonic direct. Printre funcțiile aplicației se numără și accesul la prognoza meteo din zona respective prin accesare funcției de locație cu ajutorul GPS-ului dar și din alte zone apropiate. Utilizatorii pot vedea condițiile meteo din ziua respectivă, pe ore, și din următoarele zile, acestea putând fi vizualizate și prin intemediul graficelor, iar prin intemediul hărților pot vizualiza temperatura, vântul și precipitațiile din orice zonă. O ultimă funcționalitate importantă a aplicației este cea de feedback prin care utilizatorul interacționează cu administratorul prin intermediul transmiterii unui mail către acesta.

Dezvoltarea acestei aplicații m-a ajutat să mă familiarizez cu tehnologiile prezentate mai sus în lucrare, de aceea am decis să adaug serviciul de hărți oferit de Google cu diverse funcționalități.

Baza de date care mi s-a părut cea mai potrivită este Firebase RealTime Database, fiindcă permite dezvoltarea aplicațiilor de înaltă calitate prin oferirea actualizărilor în timp real a datelor către utilizatori fără a creea o bază de date sau a adăuga un API suplimentar.

Deoarece sistemul Android este cel mai des întâlnit pe dispozitivele mobile, fiind o tehnologie care oferă multiple funcționalități în implementarea aplicațiilor, am optat pentru această opțiune în dezvoltarea aplicației descrise mai sus.

4.2 Raportarea la soluțiile consacrate în domeniu:

În domeniul turismul există o mulțime de aplicații care oferă vizitatorilor din anumite zone acces la diverse informații cu privire la traseele pe care le pot urma, punctele de interes, rezervarea unei camere la hotel, achiziționarea unui bilet de avion, restaurantele din apropiere etc. Prin analiza diverselor aplicații dezvoltate deja am încercat să implementez câteva funcționalități pe care utilizatorii le doresc într-o astfel de aplicație, iar ulterior aplicația poate fi îmbunătățită prin adăugarea unor funcții suplimentare.

Similarități pe care le-am întâlnit și în alte aplicații-ghid destinate călătoriilor sunt accesul la informații cu privire la atracțiile turistice, cum ar fi muzee, monumente, mănăstiri, peșteri și altele cu prețurile și programul de vizitare a acestora prin intermediul aplicației “Moldova Holiday”, de asemenea aplicația “Delta Danube” este destinată exclusiv celor care călătoresc în Delta Dunării și oferă informații despre istoria zonei, ariile protejate, descrierea traseelor turistice și reguli de vizitare. Ambele aplicații menționate mai sus pun la dispoziție accesul la hărți pentru a afla unde sunt localizate punctele de interes de pe traseu cum ar fi un anumit obiectiv turistic sau un hotel. O alltă aplicație destinată turiștilor este aplicația “Ce să vezi” care îți indică pe hartă poziția în care te afli în acel moment și obiectivele turistice din jur cu imagini, program de vizitare, restaurantele din zonă dar și o listă cu ofertele unităților de cazare.

Deoarece starea vremii în plănuirea unei călătorii este un factor important, activitatea care pune la dispoziția utilizatorilor condițiile meteo din zonă din acea zi dar dar și prognoza din zilele următoare se regăsește și în aplicația numită “AccuWeather – Weather for Life” care oferă prognoza vremii actualizată pe ore în acea zi și din următoarele zile în funcție de locația unde te afli, cu detalii despre presiunea atmosferică, umiditate, indice UV, etc. API-ul care permite accesul la informațiile meteo fiind preluat de pe www.develover.accuweather.com.

4.3 Identificarea unor direcții de dezvoltare viitoare a aplicației

Aplicațiile din domeniul turismului au ca scop planificarea unei călătorii în cele mai mici detalii într-un mod rapid și eficient. Există o mulțime de aplicații axate doar pe anumite părți din ceea ce presupune pregătirea unui plan de vacanță, cum ar fi aplicațiile care oferă doar informații despre principalele puncte de interes dintr-un loc, cele prin care poți face o rezervare la un hotel sau cele prin care îți poți achiziționa un bilet de avion către destinația dorita și aplicațiile care oferă doar informații despre prognoza meteo.

Aplicația TripIt reușește să îmbine cu success ceea ce are nevoie un turist în călătoria sa, astfel că după ce s-a creat contul utilizatorului, prin intermediul aplicației se poate achiziționa un bilet de avion sau o mașină către destinația aleasă, de asemenea se poate face o rezervare la un hotel din zonă și totodată acesta va primi un itinerariu pentru călătorie, cu toate informațiile referitoare la punctele de interes de pe traseu.

O altă aplicație de călătorile care să satisfacă nevoile turiștilor este Google Trips cu ajutorul căreia toate informațiile esențiale sunt organizate într-un singur loc. Este un planificator de călătorii care preia toate informațiile esențiale pe care le-ai salvat în Gmail și le va grupa într-un singur loc, o agenda care va conține sugestii a locurilor care merită vizitate în zonă, a evenimentelor, unde se găsesc cele mai bune restaurante, rezervarea unui zbor către destinația aleasă și a unei camera de hotel, iar în plus aplicația te anunță atunci când în preajmă se află un obiectiv turistic și îți oferă o listă cu părerile celor care au vizitat deja acel lor.

Un obiectiv viitor a aplicației pe care am deszvoltat-o este implementarea unei funcții care să ofere posibilitatea de a rezerva un bilet de avion către cel mai apropiat aeroport de cele două zone montane, adică cel de la Sibiu, dar și posibilitatea înhirierii unui mijloc de transport de la aeroport către aceste zone. De asemenea doresc ca pe viitor aplicația să ofere turiștilor și posibilitatea rezervării unei camere de hotel direct din interiorul aplicației și totodată dezvoltarea acesteia prin adăugarea de informații despre zone montane noi care merită promovate pentru frumusețile lor.

În încheiere meționez faptul că aplicațiile dezvoltate exclusiv în interesul turiștilor, îi ajută pe aceștia să nu se mai simtă străini atunci când vizitează un loc nou și aduc un beneficiu în același timp și un beneficiu companiilor care pot folosi aceste aplicații ca un instrument de creștere a veniturilor și reputației acestora, fiind un plus pentru întregul sector al turismului.

Bibliografie

Phillips Bill; Marsicano Kristin; Stewart, Chris (2017), Android Programming: The Big Nerd Ranch Guide, Editura Big Nerd Ranch Guides, Arizona

Boja Catalin; Ciurea Cristian; Doinea Mihai (2015), Android mobile applications: a practical development guide, Editura ASE, București

Pocatilu Paul; Ivan Ion; Visoiu Adrian; Alecu Felician; Zamfiroiu Alin; Iancu Bogdan (2015), Programarea aplicațiilor Android, Editura ASE, București

Elenkov Nikolay (2014), Android Security Internals, Editura No Starch Press, San Francisco

Neil Smyth (2017), Android Studio 3.0 Development Essentials – Android 8 Edition, Payload Media Inc.

http://andbook.anddev.org/files/andbook.pdf

https://www.raywenderlich.com/1434-java-for-android

https://firebase.google.com/docs

https://developer.ibm.com/tutorials/j-introtojava1/

https://developers.google.com/maps/documentation/javascript/tutorial

https://developers.google.com/maps/documentation/javascript/geolocation

https://developers.google.com/maps/documentation/android-sdk/marker

https://ro.wikipedia.org/wiki/Android_(sistem_de_operare)

https://code.tutsplus.com/articles/how-to-secure-an-android-app–cms-26385

https://blog.udemy.com/java-for-android/

https://www.json.org/

https://get.google.com/trips/

https://developer.android.com/studio/projects

https://developer.android.com/studio/intro/

https://developer.android.com/guide/components/activities/intro-activities

https://developer.android.com/guide/components/fragments

https://developer.android.com/guide/topics/media/mediaplayer

https://developer.android.com/guide/topics/ui/menus

https://en.wikipedia.org/wiki/Android_Studio

https://en.wikipedia.org/wiki/Java_(programming_language)

Anexe

Anexa 1

Lista figurilor:

Figura 2.1: Diagrama cazurilor de utilizare

Figura 2.2: Diagrama de secvență pentru “Cont”

Figura 2.3: Diagrama de secvență pentru “Zonă montană”

Figura 2.4: Diagrama de stare pentru “Cont”

Figura 2.5: Diagrama de stare pentru “Zonă montană”

Figura 2.6: Diagrama de activitate pentru “Cont”

Figura 2.7: Diagrama de activitate pentru “Zonă montană”

Figura 2.8: Diagrama de pachete

Figura 2.9: Diagrama de componente

Figura 2.10: Diagrama de clase

Figura 2.11: Diagrama de clase detaliată

Figura 2.12: Diagrama de clase detaliată (partea 1)

Figura 2.13: Diagrama de clase detaliată (partea 2)

Figura 2.14: Diagrama de clase detaliată (partea 3)

Figura 2.15: Diagrama de clase detaliată (partea 4)

Figura 2.16: Permisiuni în fișierul AndroidManifest.xml

Figura 2.17: Folosirea obiectelor de tip Intent între două activități

Figura 2.18: Definirea regulilor într-o bază de date

Figura 3.1: Arhitectura sistemului Android

Figura 3.2: Organizarea fișierelor în cadrul proiectelor din Android Studio

Figura 3.3: Serviciile oferite de Firebase

Anexa 2

Listarea codului sursa:

Similar Posts