Conf.dr.ing.inf. Cătălin DAMIAN Cosmin-Alexandru Epure IA Ș I 2018 Cuprins Introducere 3 Contextul general al aplicației [614746]

UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI”, IA
Ș
I

FACULTATEA DE INGINERIE ELECTRICĂ, ENERGETICĂ
Ș
I

INFORMATICĂ APLICATĂ

Lucrare de licen
ț
ă

Titlu

lucrării

Cadru didactic îndrumător:
Absolvent: [anonimizat].dr.ing.inf. Cătălin DAMIAN
Cosmin-Alexandru Epure

IA
Ș
I

2018

Cuprins

Introducere
3

Contextul general al aplicației
3

Aplica
ț
ii similare
9

Prezentarea pe scurt a ceea ce se propune
10

Descrierea capitolelor
12

Resurse software
14

Limbaje de programare
14

Medii de programare/compilare
17

Descrierea aplica
ț
iei
29

Module componente
29

Mod de lucru
35

Observații, Probleme de funcționare
41

Concluzii
44

Avantajele aplicației
46

Dezavantaje
46

Bibliografie
47

Anexe
48

2

Capitolul I.
Introducere

I.1.
Contextul general al aplicației

Ne
aflăm
în
epoca
tehnologiei,
unde
unul
dintre
cele
mai
importante
gadget-uri

este
telefonul
mobil
pe
care
majoritatea
dintre
noi,
oamenii,
îl
folosim.
Aceste
asa

numite
smartphone-uri
le
folosim
pentru
a
ne
face
viața
mai
ușoară
încercând

ne

satisfacem
nevoile
pe
mai
multe
ramuri.
Putem

luăm
legătura
cu
colegii
de
serviciu

pentru
a
ne
transmite
informații
utile
și
într-un
timp
destul
de
mic,
putem
lua
legătura

mai
ușor
cu
membrii
familiei,
prietenii
sau
persoane
cu
care
credem

putem
face

schimbul
unor
informații.
Dar,
pentru

lucrurile
nu
sunt
limitate
și
mereu
vine
vorba

de
inovație,
progresul
a
făcut
ca
acest
smartphone

fie
o
necesitate
pentru
fiecare

dintre
noi.
Putem
asculta
muzică,
jocurile
ce
le
foloseam
odată
doar
pe
computere,

acum
le
putem
juca
și
pe
telefon,
putem
fi
mereu
online
pe
rețelele
de
socializare
și
fi

mereu
la
curent
cu
ultimele
informații,

fim
suprinsi
de
minunăția
naturi
pe
care
o

putem
fotografia
fără
a
deține
un
aparat
foto
clasic,
etc.
Așadar,
lista
cu
lucrurile
pe

care
le
poate
face
un
smartphone
este
uriașă,
se
poate
spune
infinită,
deoarece
orice

idee
care
ne
trece
prin
minte
poate
fi
transformată
într-o
aplicație
mobilă
și
dată
în

folosință oricărui deținător de astfel de gadgeturi.

Utilizarea
dispozitivelor
mobile
inteligente
din
categoria
tabletelor
ș
i

telefoanelor
este
într-o
cre
ș
tere
permanentă.
De
altfel,
acestea
ne
ajută

ne
planificăm

via
ț
a
de
zi
cu
zi,
începând
cu
agenda
telefonică
ș
i
continuând
cu
aplica
ț
ii
care
ne

monitorizează
somnul,
activitatea
fizică,
consumul
de
apă
sau
aplica
ț
ii
care
î
ț
i
permit

plata
facturilor
fără
a
te
deplasa
la
ghi
ș
ee.
Astfel,
noi,
utilizatorii
de
smartphone,
ne

dorim
cele
mai
noi
aplica
ț
ii
mobile,
iar
acestea,
la
rândul
lor,
sunt
gratuite
sau

contracost.

De
regulă,
cele
contracost
sunt
mai
complexe
ș
i
cu
o
mentenan
ț
ă
mai
bună.

Aplicațiile
bune,
cu
funcționalitate
ș
i
design
pe
măsură,
nu
se
fac
fără
resurse

importante, fără programatori
ș
i designeri buni, iar toate acestea, de regulă, costă.

Defini
ț
ia aplica
ț
iei mobile

3

Aplica
ț
iei
mobile
îi
corespunde
no
ț
iunea
de
program
pentru
calculator,
unica

diferen
ț
ă
este

aceste
programe
sunt
destinate,
de
regulă,
unor
dispozitive
mobile

care
rulează
pe
sisteme
de
operare
specifice
(Android,
iOS,
Windows
Phone,

BlackBerry
etc.).
Asupra
aplica
ț
iei
mobile
se
aplică
dreptul
de
proprietate
intelectuală,

ș
i
anume,
aplica
ț
ia
mobilă
beneficiază
de
protec
ț
ia
dreptului
de
autor,
cu
excep
ț
ia

materialului
aflat
în
domeniul
public
(public
Domain).
Designul,
interfa
ț
a
grafică,

codul
sursă,
sunetul,
videoclipurile,
textul
ș
i
alt
con
ț
inut
original
al
aplica
ț
iei
sunt

protejate
prin
Legea
privind
drepturile
de
autor
ș
i
drepturile
conexe,
de
la
momentul

creării lor.

Dreptul
de
autor
se
extinde
asupra
formei
de
exprimare
ș
i
nu
se
aplică
asupra
ideilor.

La
crearea
aplica
ț
iei
pot
fi
utilizate
orice
semne
vizuale
ș
i
auditive,
care
servesc
la

individualizarea
și
deosebirea
produselor
și/sau
serviciilor
unei
persoane
fizice
sau

juridice
de
cele
ale
altor
persoane
fizice
sau
juridice,
care
pot
fi
înregistrate
în
calitate

de marcă comercială (trademark).

Aplica
ț
ia
mobilă
nu
este
o
inven
ț
ie,
însă
poate
fi
protejată
prin
brevet
de
inven
ț
ie
dacă

reprezintă
un
produs
sau
un
procedeu
din
orice
domeniu
tehnologic,
cu
condiția
ca

invenția

fie
nouă,

implice
o
activitate
inventivă
și

fie
susceptibilă
de
aplicare

industrială.
Brevetul
nu
protejează
aplica
ț
ia
mobilă,
ci
solu
ț
ia
tehnică,
cum
ar
fi,
de

exemplu:
efectul
aplica
ț
iei
mobile
prin
care
utilizatorul
acesteia
poate
accesa
la

distan
ț
ă
sistemul
electronic
de
protec
ț
ie
al
mijlocului
de
transport
ș
i
datele
despre

acesta.[1]

După
cum
am
spus,
orice
idee
se
poate
transforma
într-o
aplicație
mobilă
și
de

aici
am
ajuns
la
faptul

ceea
ce
mi-am
propus

fac
este
o
aplicație
mobilă
turistică

de
promovare
a
orașului
și
județului
în
care
trăiesc.
Majoritate
orașelor
din
țară
și
din

afară
granițelor
posedă
o
astfel
de
aplicație
mobilă,
prin
care
fiecare
zona
își
scoate
în

față
tot
ce
are
mai
bun,
zone
atractive,
turism
cultural,
atracții
pentru
copii,
transport
în

comun și așa mai departe.

Iașul
este
județul
pentru
care
eu
am
ales

fac
acesta
aplicație
turistică.
Acesta

este
un
jude
ț
aflat
în
regiunea
istorică
numită
Moldova,
în
nord-estul
României,
cu

4

re
ș
edin
ț
a în municipiul Ia
ș
i. Ia
ș
ul î
ș
i trage numele de la vechiul trib șarmat al Ia
ș
ilor.

În
urma
datelor
recensământului
din
2011,
jude
ț
ul
Ia
ș
i
avea
o
popula
ț
ie
de
772.348

locuitori,
fiind,
după
București,
al
doilea
județ
ca
număr
de
locuitori
din
România,
cu
o

 
 
 
 
 
 
 
 
 
 
 
 
 
densitate
a
populației
de
140,5
loc./km².

Populația
aproape
s-a
dublat
în
ultimii
șaizeci
 
 
 
 
 

 
 
 
 
 
 
 
de
ani.
Peste
98%
dintre
locuitori
sunt
români;
există
de
asemenea
comunită
ț
i
de
romi.
 

Majoritatea
popula
ț
iei
este
formată
din
ortodoc
ș
i,
însă
există
ș
i
o
comunitate

semnificativă
de
catolici
(cca.
5%,
în
Ia
ș
i
ș
i
în
partea
de
vest
a
jude
ț
ului),
precum
ș
i

mici grupuri de protestan
ț
i.[2]

I.2.
Aplica
ț
ii similare

Câteva
exemple
de
astfel
de
aplicații
turistice
sunt
prezentate
în
cele
ce

urmează,
aplicații
ale
orașelor
importante
din
românia
cu
un
număr
mare
de
descărcări

și
un
raiting
ridicat.
Acestea
sunt
gratuite
pentru
toți
deținătorii
de
telefone
mobile
cu

sistem de operare Android.

Ghid Bucure
ș
ti

Ghid
București
este
o
aplicație
care
furnizează
rezultatele
unei
căutări
într-o

anumită
zonă
geografică
sau
în
vecinătatea
punctului
în
care
se
află
utilizatorul
la

momentul
oportun
de
exemplu:
cel
mai
apropiat
hotel,
restaurant,
spital
sau
magazin
în

funcție de categoria aleasă.

Facilitățile disponibile în această aplicație sunt următoarele:


9
categorii
de
locații
principale
care
cuprind
cele
mai
atractive
100
de

locații din orașul București.


listarea
celor
mai
apropiate
locații
din
zonă
în
funcție
de
distanța
până
la

acestea.


hărțile
interactive
se
pot
afișa
în
modul
preferat:
normal,
satelitar,
hibrid

sau teren.


fiecare
locație
conține
imaginea
reprezentativă,
descrierea,
datele
de

contact și posibilitatea de explorare sau navigare până la aceasta.

5


aplicația
se
poate
rula
fără
a
fi
nevoie
de
o
conexiune
permanentă
la

Internet.


distanța
din
punctul
curent
până
la
punctul
de
interes
este
calculată
în

mod automat.


posibilitatea
adăugării
locațiilor
favorite
într-o
listă
personală,
pentru

orice utilizator.


navigarea
până
la
locația
aleasă
cu
indicații
precise,
în
modul
preferat
de

navigare: mașina personală, mijloc de transport în comun sau pe jos. [3]

Figura I.1 Meniu principal Figura I.2 Informa
ț
ii despre un punct touristic


Timi
ș
oara City App

'Timi
ș
oara
City
App'
este
o
aplica
ț
ie
dedicată
Timi
ș
oarei
care

aduce
toate

evenimentele
importante
ale
ora
ș
ului,
împreună
cu
ghidul
loca
ț
iilor
unde

pute
ț
i

6

petrece
timpul
liber.
Un
'smart
city
app'
care
nu
uită
nici
de
cele
mai
bune
oferte
de

produse
ș
i servicii, direct publicate chiar de către cei care vi le oferă.

Timi
ș
oara
are
de
acuma
un
sistem
informa
ț
ional
auto-sustenabil
pentru

publicarea
ș
i
informarea
localnicilor
ș
i
turi
ș
tilor.
Pute
ț
i
găsi
simplu
ș
i
de
oriunde
v-a
ț
i

afla
tot
ce
ave
ț
i
nevoie
pentru
a
ie
ș
i
în
ora
ș
,
pentru
a

petrece
timpul
liber
sau
pentru

a găsi rapid serviciile de care ave
ț
i nevoie.

Ce pute
ț
i găsi în aplica
ț
ia 'Timi
ș
oara City App'


agenda
evenimentelor
importante
ale
ora
ș
ului:
concerte,
petreceri,
filme,

teatre, workshopuri, sport etc


liste
ș
i
detalii
atractive
despre
loca
ț
ii
de
timp
liber:
restaurante,
puburi,

cafenele, locuri de joacă, divertisment


oferte
ș
i
servicii
de
tot
felul:
săli
de
sport,
frumuse
ț
e
&
sănătate,
pentru

ma
ș
ină, servicii administrative
ș
i multe altele. [4]

Figura I.3 Pagină cu evenimente Figura I.4 Harta ora
ș
ului Timi
ș
oara

Ghid virtual – Sibiu Zoo

Ghid
Virtual

aplicația
oficială
a
Grădinii
Zoologice
Sibiu
oferă
utilizatorilor
o

experiența
unică
pe
parcursul
vizitei,
fiind
disponibilă
în
limbile
Română,
Engleză
și

Germană.

7

Vizitatorii
vor
avea
acces
la
informații
de
tipul
audio,
text
sau
imagini
despre

regulamentul de vizitare și animalele prezente în grădină.

Aplicația
folosește
tehnologie
de
proximitate
bazată
pe
soluție
Beacon
pentru
a

furniza utilizatorului conținut media relevant în funcție de locație.

Notificările
despre
conținutul
media
disponibil
în
funcție
de
zonă
se
vor

transmite
atât
în
timpul
utilizării
aplicației
Ghid
Virtual
cât
și
în
momentul
în
care

aplicația rulează în background.[5]

Figura I.5 Ghid virtual – meniu Figura I.6 Buton începere vizită virtuală

Baia Mare City App

Baia Mare City App este aplica
ț
ia care î
ț
i pune la dispozi
ț
ie cele mai

interesante locuri
ș
i evenimente din ora
ș
!

Evenimente
vibrante,
restaurante
elegante
pub-uri
relaxante
sau
cazare
ieftină

sunt
doar
câteva
din
informa
ț
iile
pe
care
le
găse
ș
ti
în
aplica
ț
ie.
Chiar
dacă
e
ș
ti
doar
în

trecere
prin
Baia
Mare,
aplica
ț
ia
te
ghidează
înspre
locurile
de
interes,
î
ț
i
oferă
acces
la

informa
ț
ii
ș
i
telefoane
utile
ș
i
î
ț
i
pune
la
dispozi
ț
ie
un
ghid
ca

găse
ș
ti
repede
ceea
ce

te interesează.[6]

8

Figura I.7 SplashScreen Figura I.8 Lista evenimentelor

Arad City

Arad
City
App
este
o
aplica
ț
ie
dedicată
Aradului
care
aduce
toate
evenimentele

importante
ale
ora
ș
ului,
împreună
cu
ghidul
loca
ț
iilor
unde
se
pute
ț
i
petrece
timpul

liber.
Un
smart
city
app
care
nu
uită
nici
de
cele
mai
bune
oferte
de
produse
ș
i
servicii,

direct publicate chiar de către cei care le oferă.

Ce se poate găsi în aplica
ț
ia Arad City App:


agenda
evenimentelor
importante
ale
ora
ș
ului:
concerte,
petreceri,
filme,

teatre, workshopuri, sport, etc


liste
ș
i
detalii
atractive
despre
loca
ț
ii
de
timp
liber:
restaurante,
puburi,

cafenele, locuri de joacă, divertisment


oferte
ș
i
servicii
de
tot
felul:
săli
de
sport,
frumuse
ț
e
&
sănătate,
pentru

ma
ș
ină, servicii administrative
ș
i multe altele.

După
cum
se
poate
vedea
meniul
este
unul
foarte
simplu,
bine
conceput
încât

o poată folosi majotitatea celor ce o vor instala.

Opțiunile
oferite
de
aplicație
sunt:
Places,
Știri
Arad,
Atracții
turistice,

Notificări,
Tramvai,Informații
utile,
Distribuie
și
Voteza-ne.
Dezvoltatorul
aplicației

9

este
Air
Sfotware
Developer,
iar
aplicația
a
fost
instalată
de
mai
vine
de
1000
de

utilizatori.

Figura I.9 Interfata cu Utilizatorul a aplicatiei Arad City

I.3.
Prezentarea pe scurt a ceea ce se propune

Aplicația
mobilă
pe
care
o
voi
dezvolta
este
o
aplicație
turistică
ce
va
purta

numele
de
“TurIS”
(Turist
Iași).
Aceasta
va
fi
disponibilă
pentru
toți
deținătorii
de

smartphone
cu
sistem
de
operare
Android
și
va
putea
fi
accesată
de
către
orice

persoană pentru toate versiunile ale sistemului de operare.

Dezvoltarea
se
face
cu
ajutorul
mediului
de
programare
Android
Studiu.

Programul
este
unu
open
source
și
se
poate
descărca
de
pe
pagina
oficială
Andoid.

Varianta
disponibilă
în
momentul
de
față
este
Android
Studio
3.1.3
pentru
Windows

64-bit (758 MB).

Informațiile
ce
vor
fi
introduse
în
această
aplicație
și
care
vor
fi
la
dispoziția

celor
ce
o
vor
folosi,
sunt
informații
pe
care
le-am
găsit
într-un
ghid
turistic
al
zonei

10

moldovei
de
EDITURA
MUNICIPAL
IAȘI,
ce
are
nu
număr
de
193
de
pagini,

informații
ce
se
găsesc
în
2
limbi,
Romană
și
Engleză.
Acest
ghid
conține
și
ilustrații

de
unde
a
fost
foarte
ușor

indentific
obiectivele
turistice
ce
vor
fi
introduse
in

aplicație.

Figura I.10 Ghid turistic zona Moldovei

Aplicația
TurIS
aduce
la
un
loc
toate
obiectivele
turistice
din
zona
județului

Iași,
pune
la
un
loc
clădirile,
parcurile,
zonele
de
agrement
etc.
Mai
bine
zis

construiește
un
tur
virtual
al
locațiilor
pe
care
le
poți
viziat
apoi,
împreună
cu
familia,

prietenii
sau
colegii.
O
aplicația
accesibilă
tuturor
consumătorilor,
care
presupune
a

intra
într-un
meniu
principal,
iar
de
acolo
putând
accesa
obiective
turistice
structurate

pe categorii de vizitare.

Meniul
constă
într-o
pagină
principală
în
care
sunt
un
număr
de
10
secțiuni
din

care poți alege pentru a afla informații cu privire la obiectivele turistice și anume:

1.
Prezentare
generală

:
prezentare
pe
scurt
a
județului
cu
câteva
informații

de bază.

2.
Top
10
atracții

:
aici
sunt
prezentate
atracțiile
de
top,
în
numare
de
10,

adică cele mai cunoscute obiective turistice ale zonei.

11

3.
Alte atracții

: prezentarea pe scurt a altor obictive turistice cunoscute.

4.
Turism cultural

: enumerarea obiectivelor culturale ale zonei.

5.
Biserici și mănăstiri

: enumerarea lacaselor de cult a zonei.

6.
Atracții
pentru
copii

:
aici
se
gasec:
locația,
numărul
de
telefon,
paginile

web și adresele de email a locurilor de joacă pentru copii.

7.
Facultăți

:
este
prezentată
partea
universitară
unde
se
găsește
lista

facultăților
cu
detalii
referitoare
la
locația,
numărul
de
telefon,
adresa
de

email etc.

8.
Transport
în
comun:
detalii
despre
transportul
în
comun
din
zonă

orașului
Iași,
cu
trasele
specifice
fiecărei
zone
unde
se
găsesc
autobuze
și

tramvaie.

9.
Informații
utile

:
este
secțiunea
unde
de
pot
găsi
informații
referitoare
la

diverse
locații
ce
nu
intră
în
cele
enumerate
de
până
acum,
evenimente,

parcări, etc.

10.
Locația
ta

:
îți
va
arăta
locația
în
care
te
aflii
în
momentul
folosirii

aplicației
pentru
a
estima
distanța
până
la
unul
din
obictivele
turistice

enumerate în secțiunile prezentate de mai sus.

I.4.
Descrierea capitolelor

Capitolul
1

:
Acest
capitol
reprezintă
o
scurtă
prezentare
a
contextului
general.

Am
descris
de
ce
am
ales

construiesc
această
aplicație
și
metodele
prin
care
am

realizat-o.
Am
dat
câteva
exemple
de
aplicații
similare
pe
care
le
găsim
la
noi
în
țară
și

le-am descris în câteva cuvine după care am adăugat și câteva imagini reprezentative.

Capitolul
2

:
Sunt
prezentate
resursele
software
utilizate.
Am
făcut
o
scurtă

prezentare
a
ceea
ce
înseamnă
limbaje
de
programare,
iar
apoi
am
descris
limbajul

Java,
cel
pe
care
îl
folosește
mediul
de
programare
în
care
am
lucrat.
După
ce
am

vorbit
de
limbajele
de
programare
am
făcut
cunoștință
cu
Android
Studio,

desvoltatorul
aplicației
TurIS.
Aici
am
intrat
în
amănunte
și
am
arătat
cum

funcționează programul prin analizarea elementelor care îi stau la bază.

12

Capitolul
3

:
Se
prezintă
aplicația
dezvoltată.
Am
comentat
câteva
linii
de
cod

pe
care
le-am
folosit
în
diferitele
fișiere,
după
care
am
pus
la
dispoziție
câteva
imagini

pentru
a
face
cunoștință
cu
partea
grafică
și
anume
designe-ul
rezultat
în
urma
muncii.

Tot
aici
am
vorbit
și
despre
emulatorul
Genymotion,
ce
fără
de
care
nu

fi
putut

realizez testele de pe parcursul construcției aplicației.

Capitolul
4

:
Prezintă
concluziile
rezultate
în
urma
lucrării
la
acest
proiect
de

licență.
Am
dat
exemple
de
avantaje
și
dezavantaje
pe
care
le
constituie
o
aplicație

mobilă.

13

Capitolul II.
Resurse software

II.1.
Limbaje de programare

Limbajul
de
programare
este
un
limbaj
artificial,
folosit
pentru
a
scrie
secven
ț
a

de instruc
ț
iuni care poate fi rulată de un computer.

Limbajele
de
programare
au
apărut
o
dată
cu
inven
ț
ia
computerului
digital
în

anii
40.
Primul
limbaj
de
asamblare
a
apărut
în
ultima
perioadă
a
anilor
50
ca
răspuns

la
introducerea
computerelor
comerciale
iar
primele
limbaje
procedurale
au
fost

dezvoltate
la
sfârșitul
anilor
50
ș
i
începutul
anilor
60
prin
apari
ț
ia
limbajelor:

FORTRAN
(FORmula
TRANslation)
creat
de
Jhon
Backus
ș
i
COBOL
(Common

Business
Oriented
language)
creat
de
Grace
Hopper.
Primul
limbaj
funcțional
LISP

(List Processing) a fost creat de Jhon McCarthy.

Spre
sfâr
ș
itul
anilor
60
a
apărut
primul
limbaj
orientat
pe
obiecte,
precum

SIMULA.
Limbajele
logice
au
devenit
bine
cunoscute
la
mijlocul
anilor
70
prin

apari
ț
ia PROLOG, limbaj folosit în domeniul inteligen
ț
ei artificiale.

De-alungul
anilor
70,
limbajele
procedurale
au
continuat

se
dezvolte
o
dată

cu
apari
ț
ia:
ALGOL,
BASIC,
PASCAL,
C,
ș
i
ADA.
SMALLTALK
a
avut
o
mare

influen
ț
ă
în
programarea
pe
obiect
ducând
la
combinarea
limbajelor
procedurale
cu

cele orientate pe obiect în C++
ș
i mai recent în JAVA.

Similar
limbajelor
naturale,
limbajele
de
programare
au
vocabularul
ș
i

gramatica
proprie.
Limbajele
naturale
nu
sunt
potrivite
pentru
programarea

computerelor
deoarece
acestea
sunt
ambigue,
interesul
lor
putând
fi
interpretat
în

diferite
moduri.
Limbajele
folosite
pentru
programarea
computerelor
trebuie

aibă
o

structură
logică,
simplă
ș
i
regulile
pentru
gramatică,
ortografie
ș
i
punctua
ț
ie

fie

precise.

Limbajele de programare pot varia de la un nivel specific la unul general.

Unele
limbaje
de
programare
sunt
scrise
pentru
a
rezolva
un
tip
particular
de

probleme
sau
pot
fi
folosite
numai
pe
anumite
sisteme
de
calcul.
Astfel
limbaje

precum
FORTRAN
ș
i
COBOL
au
fost
scrise
pentru
a
rezolva
anumite
tipuri

14

particulare
de
probleme
(FORTRAN

pentru
aplica
ț
ii
în
domeniul
științelor,
COBOL

– pentru aplica
ț
ii de birou), însă sunt compatibile cu numeroase clase de computere.

Alte
limbaje
precum
codul
ma
ș
ina
sunt
destinate
utilizării
pe
un
anumit
tip
de

sisteme
de
calcul
sau
chiar
numai
pe
un
singur
computer
în
anumite
domenii
de

cercetare.

Cele
mai
răspândite
limbaje
de
programare
sunt
portabile
(pot
fi
folosite
pentru

a
programa
diverse
tipuri
de
computer)
ș
i
pot
fi
folosite
pentru
a
rezolva
cele
mai

diverse probleme. Astfel de programe sunt: C, PASCAL, BASIC. [7]

Limbajul de programare folosit – JAVA

Java
este
un
limbaj
de
programare
orientat-obiect,
puternic
tipizat,
conceput
de

către
James
Gosling
la
Sun
Microsystems
(acum
filială
Oracle)
la
începutul
anilor
ʼ
90,

fiind
lansat
în
1995.
Cele
mai
multe
aplica
ț
ii
distribuite
sunt
scrise
în
Java,
iar
noile

evolu
ț
ii
tehnologice
permit
utilizarea
sa
ș
i
pe
dispozitive
mobile
gen
telefon,
agendă

electronică,
palmtop
etc.
În
felul
acesta
se
creează
o
platformă
unică,
la
nivelul

programatorului,
deasupra
unui
mediu
eterogen
extrem
de
diversificat.
Acesta
este

utilizat
în
prezent
cu
succes
ș
i
pentru
programarea
aplica
ț
iilor
destinate

intranet-urilor.[8]

Limbajul
împrumută
o
mare
parte
din
sintaxă
de
la
C
ș
i
C++,
dar
are
un
model

al
obiectelor
mai
simplu
ș
i
prezintă
mai
pu
ț
ine
facilită
ț
i
de
nivel
jos.
Un
program
Java

compilat,
corect
scris,
poate
fi
rulat
fără
modificări
pe
orice
platformă
care
e
instalată
o

ma
ș
ină
virtuală
Java
(în
engleză
Java
Virtual
Machine,
prescurtat
JVM).
Acest
nivel

de
portabilitate
(inexistent
pentru
limbaje
mai
vechi
cum
ar
fi
C)
este
posibil
deoarece

sursele
Java
sunt
compilate
într-un
format
standard
numit
cod
de
octe
ț
i
(în
engleză

byte-code)
care
este
intermediar
între
codul
ma
ș
ină
(dependent
de
tipul
calculatorului)

ș
i codul sursă.

Ma
ș
ina
virtuală
Java
este
mediul
în
care
se
execută
progrămele
Java.
În
prezent,

există
mai
mul
ț
i
furnizori
de
JVM,
printre
care
Oracle,
IBM,
Bea,
FSF.
În
2006,
Sun
a

anun
ț
at că face disponibilă varianta sa de JVM ca open-source.

15

Există 4 platforme Java furnizate de Oracle:


Java Card – pentru smartcard-uri (carduri cu cip);


Java
Platform,
Micro
Edition
(Java
ME)

pentru
hardware
cu
resurse

limitate, gen PDA sau telefoane mobile;


Java
Platform,
Standard
Edition
(Java
SE)

pentru
sisteme
gen

workstation, este ceea ce se găse
ș
te pe PC-uri;


Java
Platform,
Enterprise
Edition
(Java
EE)

pentru
sisteme
de
calcul

mari, eventual distribuite.[9]

JAVA: un limbaj compilat
ș
i interpretat

În
funcție
de
modul
de
execuție
al
programelor,
limbajele
de
programare
se

împart în două categorii:


Interpretare:
instrucțiunile
sunt
citite
linie
cu
linie
de
un
program
numit

interpretor
și
traduse
în
instrucțiuni
mașină;
avantaj:
simplitate;

dezavantaj: viteza de execuție redusă;


Compilate:
codul
sursă
al
programelor
este
transformat
de
compilator

într-un
cod
ce
poate
fi
executat
direct
de
procesor;
avantaj:
execuție

rapidă;
dezavantaj:
lipsa
portabilității,
codul
compilat
într-un
format
de

nivel scăzut nu poate fi rulat doar pe platforma pe care a fost compilat.

Programele Java sunt atât interpretate cât
ș
i compilate.

Codul
de
octeți
este
diferit
de
codul
mașină.
Codul
mașină
este
reprezentat
de
o

succesiune
de
0
și
1;
codurile
de
octeți
sunt
seturi
de
instrucțiuni
care
seamănă
cu

codul
scris
în
limbaj
de
asamblare.
Codul
mașină
este
executat
direct
de
către
procesor

și
poate
fi
folosit
numai
pe
platforma
pe
care
a
fost
creat;
codul
de
octeți
este

interpretat
de
mediul
Java
și
de
aceea
poate
fi
rulat
pe
orice
platformă
care
folosește

mediul de execuție Java.

Realizarea unui program Java constă în următorii pași:


Editarea programului într-un editor de texte;


Salvarea
programului
sub
numele:
NumeClasa.java
unde
NumeClasa

este
numele
clasei
care
conține
metoda:
main().
Într-un
program
Java

16

trebuie

existe
o
singură
clasă
care

conțină
o
metodă:
main().
Cu
alte

cuvinte,
numele
clasei
trebuie

coincidă
cu
numele
fișierului.
Extensia

fișierului este .java


Compilarea
programului
se
face
cu
ajutorul
comenzii:
javac

NumeClasa.java


Executarea programului se face cu ajutorul comenzii: java NumeClasa

II.2.
Medii de programare/compilare

Mediul
de
programare
folosit
pentru
dezvoltarea
aplica
ț
iei
„TurIS”
este

Android
Studio.
Până
în
luna
mai
a
anului
2013,
aplica
ț
iile
Android
se
puteau
realiza

prin
intermediul
mediului
de
dezvoltare
Eclipse,
împreună
cu
plugin-ul
ADT
(Android

Development Tools) – dezvoltat de Google.

Mai
apoi,
Google
a
propus
un
nou
IDE

Android
Studio,
care
are
acela
ș
i

scop(de
a
permite
dezvoltarea
de
aplica
ț
ii
mobile),
dar
oferă
mai
multe
facilită
ț
i
în

ceea
ce
prive
ș
te
instalarea
mediului
de
lucru,
performan
ț
a,
“code
completion
and

refactoring” la nivel avansat, etc.

Figura III.1 Interfa
ț
a Android Studio

17

Platforma Hardware

Android
a
fost
proiectat
pentru
a
fi
compatibil
cu
o
gamă
largă
de
componente

hardware.
Aceasta
constituie
o
caracteristică
importantă,
întrucât
permite

producătorilor

conceapă
și

integreze
elementele
necesare
dispozitivului
Android,

făcându-l atractiv atât în rândul programatorilor cât și al consumatorilor.

Fiind
o
platformă
destinată
dezvoltării
de
aplicații
pentru
telefoane
mobile,
în

realizarea
ei
s-a
avut
în
vedere
conservarea
energiei
acumulatorului
precum
și

gestionarea în mod eficient a resurselor de memorie existente.

După
cum
apare
în
[10],
majoritatea
dispozitivelor
Android
au
utilizat
încă
de
la

început
procesoare
ARM,
cunoscute
a
fi
destul
de
puternice,
raportat
la
consumul
mic

de
energie.
Cu
toate
acestea,
unele
corporațiile
care
au
portat
Android
pe
alte

platforme
au
ales

folosească
propriile
lor
CPU-uri
(ex:
Intel
a
utilizat
propriul
lor

procesor Atom).

Pentru
a
nu
suprasolicita
procesorul,
designerii
de
celulare
au
realizat
o

componentă
separată
care

gestioneze
complexitatea
comunicării
mobile.
Modem-ul

baseband
și
radioul
sunt
sisteme
hardware
și
software
care
furnizează
dispozitivelor

Android
o
conexiune
la
telefonia
mobilă,
lucru
ce
permite
atât
transfer
de
voce,
cât
și

de date.

Văzând
figura
1.1,
la
telefoanele
inteligente
întâlnim
două
tipuri
de
memorie:

memorie
cu
acces
aleator
(RAM)
și
memorie
nevolatilă
flash
NAND.
Coform
[10],

memoria
RAM
este
folosită
de
sistem
pentru
încărcarea,
executarea
și
manipularea

diferitelor
părți
ale
sistemului
de
operare,
iar
cea
flash
pentru
stocarea
sistemului
de

operare
precum
și
a
datelor
dorite
de
utilizator.
Datorită
limitării
impuse
de
spațiul

restrâns,
cele
două
tipuri
de
memorie
sunt
combinate
într-o
singură
componentă,

cunoscută sub numele de pachet multicip (MCP).

18

Figura III.2 Arhitectura MCP

Una
dintre
cele
mai
interesante
componente
hardware
este
sistemul
de

poziționare
globală
(GPS)
care
este
oferit
gratis
în
pachetul
de
bază.
Acesta
nu

identifică
doar
locația
telefonului,
folosindu-se
de
sateliții
GPS,
dar
oferă
și
aplicațiilor

posibilitatea de a accesa și de a se folosi de aceste informații.

Pe
lângă
rețeaua
de
telefonie
mobilă
existentă,
Android
permite
conectarea
la

internet
prin
activarea
opțiunii
Wireless,
cât
și
conectarea
la
alte
telefoane
sau

dispozitive externe, prin activarea opțiunii Bluetooth.

Majoritatea
telefoanelor
prezintă
un
card
de
memorie
detașabil
care
este

cunoscut
prin
numele
de
card
SD
(Secure
Digital).
La
fel
ca
memoria
flash,
cardurile

SD
sunt
tipuri
de
memorie
nevolatilă
ce
utilizează
tehnologia
flash
NAND.
Fiind

concepute
ca
elemente
portabile,
acestea
aderă
la
anumite
specificații
fizice,
făcând

posibil
interoperabilitatea
cu
celelalte
dispozitive.
Acest
aspect
constituie
una
dintre

notele
distinctive
vis-a-vis
de
telefoanele
Apple,
care
nu
prezintă
card
SD,
ci
doar

memorie
flash
cu
o
capacitate
de
la
4
GB
la
32
GB,
după
cum
este
relatat
în
[10].

Această
alegere
făcută
de
producătorii
Android
nu
este
doar
o
soluție
mai
ieftină
ci
și

practică, acest card putând fi utilizat și de către alte telefoane.

19

Ecranul
este
interfața
sistemului
de
operare
pentru
interacțiunea
cu
utilizatorul,

fiind
important
nu
doar
pentru
impactul
pe
care
îl
produce
din
punct
de
vedere
vizual,

cât
și
pentru
răspunsul
pe
care
îl
oferă
la
atingere.
Acesta
este
într-o
continuă

dezvoltare
urmărindu-se
creșterea
rezoluției,
a
luminozității,
precum
și
capacității
de

răspuns la stimulii externi.

Camera
telefonului
și-a
depășit
atribuțiile
cunoscute
de
a
face
poze
sau
de
a

filma,
utilizând
celelalte
componente
hardware
pentru
a-și
lărgi
aria
de
utilitate.

Majoritatea
dispozitivelor
combină
funcționalitatea
acesteia
pentru
a
înregistra
pe

lângă
data
și
timpul
la
care
s-a
realizat
o
poză
sau
un
video
și
coordonatele
GPS
la

momentul
utilizării
acesteia.
Datele
multimedia
pot
fi
cu
ușurință
încărcate
pe
web
și

partajate
cu
alte
persoane.
Interesantă
este
utilizarea
acestei
comoponente
în
domeniul

realității
augmentate,
camera
putând
fi
folosită
pentru
a
identifica
un
produs
pe
baza

codului de bare sau a unei clădiri pe baza coordonatelor geografice sau a unor etichete.

Tastatura
a
fost
și
ea
înlocuită
cu
una
ce
încorporează
tehnologia
touch
screen.

Aceasta
se
poate
adapta
după
poziția
telefonului
și
poate
suporta
mai
multe
limbi,

existând
și
posibilitatea
utilizării
unor
sisteme
ce
au
rolul
de
a
prezice
cuvintele
ce

urmează a fi scrise.

Durata
de
viață
a
bateriei
constituie
încă
o
problemă
datorită
aplicațiilor

existente
ce
sunt
mari
consumatoare
de
energie.
Se
dorește
depășirea
acestui
neajuns,

existând
cercetări
în
acest
sens,
după
cum
apare
în
[10],
ce
urmăresc
realizarea
unor

baterii
din
ce
în
ce
mai
puternice
sau
încărcarea
bateriei
fără
utilizarea
vreunui
cablu,

un exemplu fiind încărcarea în timpul mișcării.

Majoritatea
dispozitivelor
Android
oferă
suport
pentru
USB
(Universal
Serial

Bus)
cu
ajutorul
căruia
telefoanele
pot
fi
conectate
la
un
calculator.
Prin
cablu
se
poate

realiza
atât
încărcarea
bateriei,
cât
și
accesarea
memoriei
SD
sau
a
consolei
Linux
de

pe dispozitiv.

Android
poate
detecta
și
schimba
poziția
ecranului,
în
funcție
de
felul
în
care

telefonul
este
ținut
sau
rotit,
acest
lucru
fiind
posibil
datorită
existenței
unui

accelerometru
care
detectează
aceste
schimbări.
Noile
versiuni
suportă
și
un
giroscop,

20

care
este
mult
mai
senzitiv
decât
un
accelerometru,
aspect
ce
a
dus
la
dezvoltarea

jocurilor pe această platformă.

Ultimele
componente
hardware
sunt
constituite
de
difuzorul
și
microfonul

telefonului,
care
la
fel
ca
și
celelalte
părți
sunt
perfecționate
de
la
o
versiune
la
alta.

Unele
dispozitive
prezintă
două
sau
trei
microfoane,
care
combinate
cu
software-ul

Android
au
abilitatea
de
a
detecta
și
elimina
zgomotul
de
fundal
pentru
a
oferi
o

calitate mai bună a sunetului.

Arhitectura sistemului Android

Sistemul
Android
dispune
de
o
arhitectură
alcatuită
din
5
niveluri
ce
comunică

între ele:


Nucleul Linux (Linux Kernel)


Librarii de bază


Addroid Runtime


Aplica
ț
ii Framework


Aplica
ț
ii

Figura III.3 Arhitectura sistemului Android

21

Nucleul Linux (Linux Kernel)

Primul
nivel
al
arhitecturii
sistemului
Android
îl
constituie
Nucleul
Linux.

Acesta
se
află
la
baza
arhitecturii
ș
i
asigură
func
ț
ionalită
ț
ile
de
bază
ale
sistemului

precum
gestionarea
memoriei,
gestionarea
proceselor,
re
ț
elelor,
a
sistemului
de
fi
ș
iere

ș
i a driverelor (driver pentru afi
ș
aj, cameră, memorie Flash, etc).[11]

Figura III.4 Nucleul Linux

Librăriile de bază

Al
doilea
nivel
reprezintă
bibliotecile
de
bază
(native)
Android
ș
i
constă

dintr-un
set
de
librării
C/C++
ce
stau
la
baza
func
ț
ionării
sistemului.
Printre
acestea
se

numără
bibliotecile
responsabile
de
stocarea
ș
i
gestionarea
bazelor
de
date
(SQLite),

biblioteci ce oferă suport pentru formate audio
ș
i video (Media Framework), etc.

Figura III.5 Librăriile de bază

Android Runtime

Android
Runtime
con
ț
ine
ma
ș
ina
virtuală
Dalvik
și
bibliotecile
Java.
Ma
ș
ina

Virtuală
Dalvik
este
o
componentă
principală
a
acestui
nivel
ce
permite
rularea
fiecărei

aplica
ț
ii într-un proces propriu.

22

Figura III.6 Android Runtime

Aplica
ț
ii Framework

Nivelul
de
aplica
ț
ii
Framework
este
cel
cu
care
lucrează
direct
programatorul,

oferind
dezvoltatorilor
toate
funcționalitățile
ș
i
resursele
oferite
de
sistem.
Acest
nivel

este
preinstalat
în
Android
ș
i
este
organizat
pe
componente
pentru
a
putea
extinde
ș
i

crea noi componente.

Cele mai importante componente sunt:


Gestiunea
activită
ț
ii
(Activity
Manager):
coordonează
ș
i
controlează

ciclul de via
ț
ă al aplica
ț
iilor.


Providerul
de
con
ț
inut
(Content
Provider):
este
întâlnit
doar
la

arhitectura
Android
ș
i
oferă
posibilitatea
de
a
accesa
date
din
alte

aplica
ț
ii.

Figura III.7 Aplica
ț
ii Framework

Nivel Aplica
ț
ii

Nivelul
Aplica
ț
ii
reprezintă
ultimul
nivel
din
arhitectura
sistemului
Android
ș
i

cuprinde
toate
aplica
ț
iile
ce
folosesc
interfa
ț
a
cu
utilizatorul
precum
contacte,
telefon,

Browser, etc.

Fiecare
aplica
ț
ie
rulează
într-un
proces
propriu,
oferind
astfel
securitate

maximă
ș
i protec
ț
ie între aplica
ț
ii în cazul în care o aplica
ț
ie se blochează.

23

Figura III.8 Nivel Aplica
ț
ii

Aplicațiile sistemului android

Compinentele importante ale unei aplicații Android sunt:

Activity(Activitate)

Reprezintă
o
interfață
cu
utilizatorul,fereastră
sau
formular.
O
aplicație
Android

poate
avea
una
sau
mai
multe
activități:de
exemplu
o
aplicație
de
tip
Agendă
poate

avea
o
activitate
pentru
a
gestiona
contactele,
o
activitate
pentru
a
gestiona
întâlniri
și

una pentru a edita o intrare în agendă.

Fiecare
Activitate
are
propriul
sau
ciclu
de
viață,
independent
de
ciclul
de

viață al procesului asociat aplicației.

Fiecare
activitate
are
propria
stare
și
datele
acesteia
pot
fi
salvate
sau

restaurate.Activitățile
pot
fi
pornite
de
aplicații
diferite
(dacă
e
permis).Are
un
ciclu
de

viata
complex
deoarece
aplicațiile
pot
avea
activități
multiple
și
doar
una
este
în

prim-plan;utilizând
managerul
de
activități,
sistemul
Android
gestionează
o
stivă
de

activități care se găsesc în diferite stări(pornire,în execuție, întreruptă,oprită, distrusă);

În
SDK,
activitatea
este
implementată
folosind
o
subclasă
a
clasei
Activity
care

extinde clasa Context.

Ciclul
de
viață
al
unei
activități
descrie
starea
în
care
o
activitate
poate
fi
la
un

moment dat:

Running


Activitatea
a
fost
creata
(onCreate()),
pornită
(onStart())
și
este

afișată
pe
ecranul
aparatului;în
cazul
în
care
activitatea
a
mai
fost
utilizată
și
aplicația
a

salvat
starea
accesteia
(onSaveInstanceState()),
activitatea
este
reluată
din
acel
punct

(onRestoreInstanceState()
și
on
Resume());
în
acceasta
stare
utilizatorul

interacționează
cu
activitatea
prin
intermediul
interfeței
dispozitivului

(tastatură,touchscreen, display).

24

Paused

Activitatea
pierde
prim-planul
(onPause()),deoarece
o
altă
activitate

este
executată,
cum
ar
fi
o
fereastră
de
dialog,
de
asemenea,în
cazul,
în
care
aparatul

intră
în
modul
sleep,
activitatea
este
oprită
temporar;activitatea
își
poate
relua

execuția(onResume()) și este plasată înapoi în prim-plan.

Stopped

Activitatea
nu
mai
este
în
uz
și
pentru

este
oprită(onStop())
nu

este
vizibilă;pentru
a
fi
reactivată
(ea
déjà
există),activitatea
trebuie

fie

repornită(onRestart() și onStart()) și reluată(onResume());

Destroved

Activitatea
este
distrusă
(onDestroy())
și
memoria
s-a

eliberat,deoarece
nu
mai
este
necesară
sau
sistemul
are
nevoie
de
memorie

suplimentară
pentru
rutinele
proprii
sau
pentru
alte
activități;deoarece
managementul

memoriei
este
un
aspect
important
pentru
sistemul
de
operare
Linuxal
dispozitivului

mobil,procesul
care
găzduiește
o
activitate
întreruptă,
prita
sau
distrusă,
poate
fi

terminat
pentru
a
elibera
memorie
pentru
noi
activități;doar
procesele
ce
gestionează

activități sunt protejate.

Activitatea
are
mai
multe
stări
între
care
există
tranziții
clare.
În
ciuda
faptului

lucrurile
pot
arăta
complicat
,
în
realitate
ele
sunt
mult
mai
simple
dacă
ne
concentrăm

pe următoarele elemente.

O
singură
activitate
poate
fi
în
prim-plan
la
un
moment
dat.
Doar
sistemul
gestionează

stările
și
tranzițiile
unei
activități
și
nu
programatorul
(nu
în
mod
direct,
deoarece

atunci
când
se
lansează
o
activitate
nouă
se
modifică
implicit
starea
activității
curente)

Sistemul

anunță
atunci
când
activitatea
își
schimbă
starea
prin
intermediul

handler-elor
(metode
de
formă
onXXX())
pentru
evanimentele
de
tip

tranziție;programatorul
poate
adăugă
propriul
cod
pentru
supradefinirea
acestor

metode.

25

onCreate(Bundle)

este
apelată
când
activitatea
este
creată
folosind

argumentul
metodei
de
tip
Bundle
există
posibilitatea

restabiliți
starea
activității,

care
a
fost
salvată
într-o
sesiune
anterioară
după
ce
activitatea
a
fost
create,
va
fi

pornită (onStart());

Figura III.9 Ciclul de via
ț
ă al unei activita
ț
i

onStart()

apelată
în
cazul
în
care
activitatea
urmează

fie
afișată;din
acest

punct,
activitatea
poate
veni
în
prim
plan
(onResume())
sau
rămâne
ascunsă
în
fundal

(onStop());

26

onRestoreInstanceState(Bundle)

apeleta
în
cazul
în
care
activitatea
este

inițializată
cu
datele
dintr-o
stare
anterioară,
ce
a
fost
salvată;
în
mod
implicit,
sistemul

restaurează
starea
interfeței
cu
utilizatorul
(starea
controalelor
vizuale,
poziția

cursorului,etc); [12]

onResume()

este
apelată
când
activitatea
este
vizibilă
iar
utilizatorul
poate

interacționa
cu
aceasta;din
această
stare
,activitatea
poate
fi
plasată
în
fundal,
devenind

întreruptă (onPause);

onRestart
()

este
apelată
în
cazul
în
care
activitatea
revine
în
prim-plan

dintr-o stare oprită(stopped); după această activitatea este pornită (onStart()) din nou.

onPaused()

este
apelată
atunci
când
sistemul
aduce
în
prim-plan
o
altă

activitate;
activitatea
curentă
este
mutate
în
fundal
și
mai
târziu
poate
fi
oprită

(onStop())
sau
repornită
și
afișată
(onResume());
acesta
este
un
moment
bun
pentru
a

salva
datele
aplicației
într-un
mediu
de
stocare
persistent
(fișiere,
baze
de
date)

deoarece
după
această
fază
de
activitate
poate
fi
terminată
și
distrusă
fără
a
se
anunța

acest lucru. [12]

onSaveInstanceState(Bundle)

este
apelată
pentru
a
salva
starea
curentă
a

activității;în mod implicit, sistemul salvează starea interfeței cu utilizatorul.

onStop()

este
apelată
în
cazul
în
care
activitatea
nu
mai
este
utilizată
și
nu

mai
este
vizibilă
deoarece
o
altă
activitate
ineractioneaza
cu
utilizatorul;
din
acest

punct, activitatea poate fi repornită (onRestart()) sau distrusă (onDestroy()).

onDestroy()

este
apelată
în
cazul
în
care
activitatea
este
distrusă
,
iar

memoria
sa
eliberată.
Acest
lucru
se
poate
întâmpla
în
cazul
în
care
sistemul
necesită

mai
multă
memorie
sau
dacă
programatorul
termină
explicit
activitatea
apelând

metoda finish() din clasa Activity.

27

Deoarece
tranzițiile
dintre
straturi
sunt
descrise
prin
apeluri
către
diferite

metode
de
tipul
onXXX(),
ciclul
de
viață
al
unei
activități
poate
fi
descris
de

succesiunea posibilă a acestor apeluri.

Intent(Intenție)

Reprezintă
o
entitate
folosită
pentru
a
descrie
o
operație
care
urmează

fie

executată;
Oarecum
similar
cu
conceptual
de
event-handler
din
NET
sau
Java.
Un

mesaj
asincron
utilizat
pentru
a
activa
activități
sau
servicii.
Gestionată
de
o
instant
a

clasei Intent.

Service(Serviciu):


Un
task
care
se
execută
în
fundal,
fără
interacțiunea
directă
cu

utilizatorul.


Gestionată de o instant a clasei Service.


Content provider(Furnizor sau manager de conținut).


Un API folosit pentru a gestiona datele private ale aplicației.


Un
sistem
de
management
de
date
ce
descrie
o
alternativă
la
sistemul
de

fișiere, baze de date SQLite sau orice altă soluție de stocare persistentă.


Implementată de o subclasă a clasei ContentProvider.


Soluție
pentru
a
partaja
și
controla
(pe
baza
de
pemisiuni)
transferul
de

date
intre
aplicații(
de
exemplu
,
sistemul
Android
oferă
un
furnizor
de

conținut pentru datele de contact).


Broadcast receiver.


Component
care
răspunde
la
anunțuri
difuzate(propagate
)la
nivel
de

sistem.


Oarecum
similar
cu
conceptual
de
handler
global
(sau
evenimente
de

sistem).


Implementată de o subclasă a clasei BroadcastReceiver. [12]

28

Capitolul III.
Descrierea aplica
ț
iei

III.1.
Module componente

După
cum
s-a
prezentată
și
în
capitolul
I
aplicația
mobilă
pe
care
am
devoltat-o

este
o
aplicație
turistică
ce
am
denumit-o
TurIS
(Turist
Iași).
Acesta
aplicație
oferă

turiștilor
și
persoanelor
din
această
zonă
ce
nu
sunt
familiarizate
cu
orașul/județul,

informații
utile
pentru
o
ședere
plăcută.
O
aplicație
ideală
pentru
o
zi
în
care
te

plictisești
acasă,
unde
îți
poți
alege
câteva
obiective
din
lista
celor
prezentate
și
numai

bune de vizitat.

Structura
unui
proiect
Android
în
mediul
de
programare
Android
Studio
poate
fi

observată în fereastra 1: Project, iar aici avem :

Figura IV. 1 Structura ferestrei 1.Project

29

Fi
ș
ierul app

Acest director este compus din 2 fi
ș
iere, manifest
ș
i java.

Manifest

Acesta
conține
informații
detaliate
despre
aplicație.
Înainte
de
a
putea
rula

aplica
ț
ia,
trebuie

completăm
câteva
informa
ț
ii
în
fi
ș
ierul
AndroidManifest.xml.

Acest
fi
ș
ier,
extrem
de
important,
con
ț
ine
toate
detaliile
aplica
ț
iei.
Orice
fel
de

Activity
pe
care
îl
folosim
în
aplica
ț
ie
trebuie
declarat
aici.
Acela
ș
i
lucru
este
valabil
ș
i

pentru
servicii
ș
i/sau
receivere,
dar
în
momentul
de
fa
ț
ă
ne
vom
concentra
asupra

Activity-urilor.

Fi
ș
ierul
e
important
ș
i
pentru

poate
con
ț
ine
listă
de
permisii
cerute
de
aplicație,
fără

de
care
anumite
feature-uri
ale
telefonului,
cum
ar
fi
accesul
la
internet,
contacte
sau

GPS,
nu
ar
fi
posibile.
De
observat
este
elementul
de
intent-filter
de
la
Activity-ul

unde
avem
meniul
aplicației,
care
este
Activity-ul
nostru
principal.
Prin
specificarea

acelui
filtru,
predefinit
în
SDK,
în
ș
tiin
ț
ăm
sistemul

respectivă
activitate
este
cea

care
trebuie
pornită
atunci
când
utilizatorul
folose
ș
te
iconi
ț
a
din
meniul
de
aplica
ț
ii
ș
i

reprezintă practic punctul de intrare în aplica
ț
ia noastră.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.cosmin.licenta">

<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

<activity android:name=".SplashScreen">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".PrezentaraGenerala" />

<activity android:name=".Top10" />

<activity android:name=".AlteAtractii" />

30


<activity android:name=".TurismCultural" />

<activity android:name=".Biserici" />

<activity android:name=".AtractiiCopii" />

<activity android:name=".Facultati" />

<activity android:name=".Transport" />

<activity android:name=".Informatii" />

<activity android:name=".MainActivity"></activity>

</application>

</manifest>

Tabel IV.1. Cod sursă fi
ș
ierul AndroidManifest.xml

Java

Con
ț
ine
fi
ș
ierele
de
cod
sursă
Java,
inclusiv
codul
de
test.
Aici
găsim
toate

activitatiile
pe
care
noi
le
folosim.
În
sistemul
Android
ferestrele
se
numesc
activități,

iar
din
punct
de
vedere
al
programării,
acestea
sunt
clase
care
extind
clasa

MainActivity.
Spre
deosebire
de
alte
sisteme
în
care
un
program
conține
mai
multe

ferestre
simultan,
în
Android
ecranul
este
mereu
ocupat
cu
o
singură
fereastră.
Mai

mult,
ferestrele
sunt
conectate
prin
simpul
fapt
ca
o
fereastră

naștere
mai
multor

ferestre,
în
cazul
de
față
fereastra
principală
este
MainActivity,
iar
restul
sunt
ferestrele

secundare ale aplicației.

În
secvența
de
cod
ce
urmează
a
activității
MainActivity,
este
prezentată
legarea

de
la
meniul
principal
a
activităților
secundare,
de
exemplu
atunci
când
apăsăm
pe

butonul
cu
Prezentare
generală,
aplicația
ne
va
duce
exact
în
fereastra
unde
găsim

informații
generale
despre
județul
Iași.
Tot
în
această
secvență
sunt
prezentate
liniile

de
cod
care
vor
face
ca
dimensiunea
background-ului

fie
întinsă
pe
toată
suprafața

display-ului.

Pentru
a
crea
o
activitate,
vom
crea
o
clasă
ce
extinde
clasa
Activity.
La
pornire,

programul
o
va
genera,
iar
noi
putem
interacționa
cu
fereastra
prin
evenimente.
Unele

dintre cele mai importante evenimente sunt: onCreate și onPause.

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

31

super.onCreate(savedInstanceState);

// inceput Fullscreen

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);


// sfarsit Fullscreen

setContentView(R.layout.activity_main);

}

public void PrezGen(View v){

Intent intent = new Intent(this, PrezentaraGenerala.class);

startActivity(intent);

}

public void Top10 (View v){

Intent intent = new Intent(this, Top10.class);

startActivity(intent);

Tabel IV.2 Cod sursă fi
ș
ierul MainActivity.java

Fi
ș
ierul res (resurse)

Este
un
director
care
con
ț
ine
resursele
aplica
ț
iei
precum:
elemente
grafice,

designul
aplica
ț
iei
sau
descrierea
unor
elemente
din
aplica
ț
ie.
Acesta
este
împăr
ț
it
la

rândul
său
în
mai
multe
directoare.
Aici
găsim
următoare
fișiere:
drawble,
layout,

mipmap, values.

Drawble

În
acest
fișier
se
găsesc
resursele
grafice.
Aici
stocăm
fișiere
bitmap
(.png,

.jpeg, .gif) sau fișiere ce definesc resurse ce pot fi destinate (drawble resource).

În
cazul
aplicației
de
față,
în
acest
fiser
se
află
în
mare
parte
fișiere
.jpg
pe
care

le-am
folosit
la
grilă
zonelor
turistice
unde
am
adăugat
câte
o
imagine
a
fiecărui

obiectiv turistic.

Tot
în
acest
fișier
avem
iconițele
și
anume
cele
cu
.xml
pe
care
le-am
folosit

pentru
designe-ul
din
meniul
principal,
fiecare
activitate
în
care
dorim

intrăm
se
află

câte
o
iconiță
specifică
domeniului
pe
care
îl
accesăm,
dar
și
pentru
iconița
care
va

apărea atunci când pornim aplicația din meniul telefonului.

32

Layout

În
layout
sunt
fișierele
XML
ce
definesc
desingn-ul
interfeței.
Layout-urile
au

rolul
de
a
descrie
cum
sunt
a
ș
ezate
pe
ecran,
componentele
interfe
ț
ei
grafice.
În
cadrul

acestui
articol,
nu
vom
intra
în
prea
multe
detalii.
În
layout-ul
principal,

activity_main.xml,
al
activității
ce
definește
meniul
principal
vom
folosi

<LinearLayout>,
care
a
ș
ază
toate
componentele
din
interior
în
ordine
liniară,
pe

verticală
sau
pe
orizontală.
Fiecare
componentă,
fie

este
vorba
de
layout-uri
sau
de

butoane
ș
i
text,
poate

primească
un
identificator
care
o
face
accesibilă
în
cadrul

codului
Java.
În
plus,
fiecare
componentă
are
un
set
de
atribute
care
pot
modifica

modul în care ele sunt afi
ș
ate.

/>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

android:weightSum="3"

>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorGrass"

android:layout_margin="2dp"

android:onClick="PrezGen"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_002380"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorGrassDark"

android:padding="8dp"

android:text="Prezentare generală"

android:textAlignment="center"

android:textColor="@color/colorWhite"

Tabel IV.3 Cod sursă activity_main.xml

33

De
remarcat
aici
atributul
onClick
al
textului,
care
specifică
numele
metodei

care
va
fi
executată
atunci
când
utilizatorul
îl
atinge.
De
exemplu
atunci
când
din

meniul
principal
vom
atinge
imaginea
pentru
prezentare
generală,
imediat
ne
va
trimite

în activitatea cu informații ce cuprind prezentarea genearala a județului Iași.

Mipmap

În
acest
director
avem
fișierele
specifice
pentru
a
putea
schimba
imaginea

iconiței
pe
care
noi
o
găsim
în
meniul
telefonului
mobil.
Pentru
a
scimba
această

imagine
va
trebui

folosim
un
convertor
de
dimensiune
.png
pentru
a
avea
mărimile

exacte
a
iconiței
în
cazul
în
care
telefonul
mobil
are
un
display
diferit,
asta
înseamnă

mai
mare
sau
mai
mic.
Această
conversie
se
face
automat
de
la
un
telefon
la
altul.

Formatele necesare sunt urmaroarele: (hdpi, mdpi, xhdpi, xxhdpi, xxxhdpi).

Values

În
directorul
Values
găsim
fișiere
XML
care
conțin
valori
simple,
cum
ar
fi

șiruri
de
caractere,
numere
întregi
și
culori.
Este
recomandat

utilizăm
convențiile
de

nume de fișiere pentru anumite ripuri de resurse.

<resources>

<color name="colorPrimary">#dd3333</color>

<color name="colorPrimaryDark">#4A89DC</color>

<color name="colorAccent">#FF4081</color>

<color name="colorWhite">#FFFFFF</color>

<color name="colorGrapeFruit">#ED5565</color>

<color name="colorGrapeFruitDark">#DA4453</color>

<color name="colorBitterSweet">#FC6E51</color>

<color name="colorBitterSweetDark">#E9573F</color>

<color name="colorFlower">#FFCE54</color>

<color name="colorFlowerDark">#F68B42</color>

<color name="colorGrass">#A0D468</color>

<color name="colorGrassDark">#8CC152</color>

Tabel IV.4 Codul sursă a culorilor din aplica
ț
ie

Toate
resursele
din
subdirectoarele
directorului
res/
sunt
incluse
în
pachetul

aplicației
de
către
compilator.
Pentru
a
facilita
accesul
și
controlul
resurselor
din
codul

34

aplicației,
compilatorul
generează
o
clasă,
numită
R,
care
conține
identificatori
statici

utilizați pentru referirea fiecărei resurse.

III.2.
Mod de lucru

În
acest
subcapitol
voi
vorbi
despre
modul
de
funcționare
a
aplicației
mobile

TurIS,
mai
exact
ceea
ce
trebuie

facă
un
utilizator
al
acestei
aplicații
pentru
a
o

putea folosi cu succes.

După
cum
am
spus
în
această
aplicație
găsim
informații
despre
obiectivele

turistice
din
zona
județului
Iași,
sortimentate
pe
anumite
categorii,
de
exemplu:

Prezentare generală, Top 10 atracții, Alte atracții, Turism cultural, etc.

Primul
pas
ca
o
persoană

poate
folosi
aplicația
TurIS,
este
ca
acesta

trebuie

deschidă
fișierul
APK,
iar
acesta

fie
instalat.
Un
fișier
APK
este
de
fapt
o

arhivă
ce
conține
toate
fișierele(imagini,
sunet,
detalii
despre
aplicație,
codul
sursă

etc.) care sunt necesare unei aplicații ca aceasta să ruleze optim în Android.

Figura IV. 2 Iconi
ț
a care deschide aplica
ț
ia Figura IV. 3 Prima activitate SPLASHSCHREEN

35

Pentru
a
vedea
ce
este
în
interiorul
unei
arhive
.apk
puteți
dezarhiva
respectivul
fișier

schimbându-i terminația din apk în zip.

Aplicația
se
poate
instala
doar
pe
sistemul
de
operare
Android,
deci
această
nu

funcționează
pe
iOS,
Windos
sau
alte
sisteme.
După
ce
această
a
fost
instalată
cu

succes
în
telefonul
utilizatorului
aplicația
va
începe
procesul
de
încărcare
și
deșchidere

activități.

Prima
activitate
pe
care
o
deschide
aplicația
este
un
așa
numit
splashscreen,
ce
conține

logo-ul
aplicației
TurIS,
acest
splashscreen
are
o
durată
de
4
secunde
după
care
se
va

trece
automat
la
meniul
principal
al
aplicației
care
este
și
activitatea
principală

aplicației.

În
fereastra
principală
a
aplicației
se
găsește
meniul
principal.
Meniul

principal
este
alcătuit
dintr-o
imagine
de
funadal
de
culoare
albastră
cu
alb.
În
partea

de
sus
a
ferestrei
se
găsește
o
imagine
reprezentativă
a
orașului
Iași.
În
suprapunere
se

mai află și un text care conține numele aplicației și anume “TurIS”.

Aplicația
este
una
viu
colorată,
sunt
doar
cu
nuanțe
deschise
care
fac
ca

meniul

fie
unul
atractiv
și
care
este
bine
structurat.
Imaginile/butoanele
totodată

conțin câte icon diferit specific temelor alese.

Meniul face legatura către următoarele activități:


Prezentare generală


Top 10 atrac
ț
ii


Alte atrac
ț
ii


Turism cultural


Biserici
ș
i mănăstiri


Atrac
ț
ii pentru copii


Faculta
ț
i


Transport în comun


Informa
ț
i utile

Componentele
pe
care
le-am
folosit
pentru
construc
ț
ia
meniului
principal

sunt:
LinearLayout(vertical),
ScrollView,
LinearLayout(horizontal),
ImageView,

TextView.

36

Figura IV. 4 Activitate principala – Meniul aplicatiei

Tranziția
dintr-o
activitate
în
altă
se
face
prin
apăsarea
uneia
dintre
căsuțe.

Deoarece
aceste
căsuțe
sunt
defapt
niște
imagini
trebuie
făcute
în
așa
fel
încât
atunci

când
la
atingem

ne
ducă
exact
în
fereastră
pe
care
vrem

o
afișăm,
de
aceea
vom

tranforma
această
simplă
imagine
într-un
buton
prin
linia
de
cod
pe
care
o
avem
în

activity_main.xml
și
anume
ex:
android:onClick="AlteA",
iar
în
fișierul
java
va
trebui

să facem legătura între aceste două activități după cum se vede în următorul ex:

}

public void AlteA (View v){

Intent intent = new Intent(this, AlteAtractii.class);

startActivity(intent);

}

Tabel IV.5. Tranzi
ț
ia din activitatea principală în activitatea secundară

Prima
activitate
secundară
“Prezentare
generală”
este
o
simplă
fereastră
unde

am
adăugat
o
imagine
.jpg
de
fundal
și
un
text
unde
avem
prezentarea
generală
a

județului Iași.

37

Întoarcerea
la
activitatea
principală
se
face
prin
butonul
“back”
a
telefonului.

acesta
se
aplică
automat
de
la
sistemul
de
operare
Android
pe
care
îl
deținem.
Acesta

se
poate
modifica,
dar
în
cazul
de
față
nu
este
nevoie.
În
oricare
din
ferestrele

secundare întoarcere se face prin acest buton.

La
activitățile:
Prezentare
generală,
Top
10
atracții,
Alte
atracții,
Turism

cultural,
Biserici
și
mănăstiri
și
Atracții
pentru
copii
s-a
folosit
o
altă
metodă
de

afișare.
În
partea
de
.xml
ale
activităților
ca
și
layout
s-a
folosit
RelativLayout,
iar
ca

mod
de
afișare
a
prezentării
obiectivelor
în
ordine
s-a
folosit
componenta
listview,
iar

restul de instrucțiuni s-au scris în directoarele Java..

Figura IV. 5 Tranzi
ț
ia activită
ț
ilor

38

Figura IV. 6 Diagrama activita
ț
ilor

Emulator GENYMOTION

Pentru
testarea
aplicației
am
folosit
un
alt
emulator
față
de
cel
pe
care
îl
pune
la

dispoziție platforma Android Studio și anume Genymotion.

Genymotion
are
o
interfa
ț
ă
simplă
ș
i
intuitivă
de
pe
care
orice
persoană
poate

folosi
programul
fără
nici
un
fel
de
problemă.
Acesta
este
una
dintre
cele
mai
bune
din

categoria
Andorid.
E
un
program
u
ș
or
de
instalat
ș
i
de
folosit,
programul
Genymotion

nu consumă multe resurse de sistem
ș
i nu ocupă mult spa
ț
iu pe hard disk.

Am
folosit
acest
emulator,
iar
după
fiecare
schimbare
de
cod
al
aplicației
TurIS

verificăm
dacă
această
este
corectă
și
desing-ul
este
unul
potrivit.
Andoid
Studio

găsește
automat
acest
emulator
iar
după
ce
liniile
de
cod
sunt
compilate
și
nu
există

nicio
eroare,
aplicația
este
transformată
automat
într-un
fișier
APK
și
trimis
în

emulator după care acesta îl instalează și îl deschide cu succes.

39

Acest
program
a
fost
descărcat
de
pe
situl
oficial
Genymotin.
Versiunea

descărcată
este
2.12.1.
Pentru
a
o
putea
folosi
trebuie

te
înregistrezi
pe
site
și
se
va

selecta opțiunea personale use.

Ce
se
poate
face
cu
acest
program
ș
i
care
sunt
principalele
caracteristici
ale

programului Genymotion:


Emularea sistemului Android pe PC


Acces din Windows la aplica
ț
iile Android


Rulare de aplica
ț
ii Android pe desktop


Diferite op
ț
iuni de personalizare


Diferite op
ț
iuni de configurare


Interfa
ț
ă simplă
ș
i intuitivă


Este o aplica
ț
ie u
ș
or de folosit


Suport în diferite limbi


Actualizare manuală


Suport instalare / dezinstalare, etc

Figura IV. 7 Genymotion emulator

40

Exemple de emulatatoare Android pentru PC:

1.
Andy Android Emulator

2.
Emulator Oficial de la Android

3.
BlueStacks Android Emulator

4.
Droid4X

5.
Windroy mobile

6.
YouWave

7.
Xamarin Android Player

8.
Duos-M Android Emulator

III.3.
Observații, Probleme de funcționare

Pentru realizarea acestei aplicații s-a folosit laptopul personal.

Până
la
instalarea
mediului
de
programare
și
a
emulatorului
Genymotion
totul
a

decurs
bine.
Nu
am
luat
în
considerare
cerințele
pe
care
trebuie

le
aibă
laptopul

pentru
ca
acestea

funcționeze
optim.
După
scrierea
liniilor
de
cod,
în
momentul
în

care
se
compila
programul,
timpul
de
execuție
era
foarte
mare,
asta
pentru

hardul

laptopului
era
unul
de
dimensiuni
foarte
mici,
iar
pentru
fiecare
compilare
și
instalare
a

aplicației
pe
emulator
se
pierdea
foarte
mult
timp.
În
urma
acestor
probleme
de
timpi

am
decis

schimb
hard-disk-ul
laptopului
și
am
trecut
de
a
unul
de
150
gb
la
un

ssd(Solid-State
Drive)
de
la
Samsung
120
gb.
Desigur,
capacitate
mică
de
stocare
a

datelor
dar
o
viteză
mult
mai
mare.
După
ce
acesta
a
fost
înlocuit
compilarea
și

instalarea apliatiei pe emulator se petreceau la nivel de maxim 1 minut.

În
directorul
drawble
nu
am
reușit

grupez
fișierele
.jpg
pentru
identificarea

lor
mai
ușor.
În
momentul
de
față
pentru
a
selecta
o
parte
din
fiserele
pe
care
vreau

le
folosesc
într-o
singură
activitate,
trebue

caut
ceea
ce
am
nevoie
și

le
selectez

din toate cele existente pentru aplicație.

O
problemă
pe
care
am
întâlnit-o
la
început
de
aplicație
este

nu
am
salvat
în

fiecare
zi
pe
un
hard-disk
extern
fișierul
în
care
lucram.
Asta
a
făcut
ca
la
un
moment

41

dat
dintr-o
eroare
a
sistemului
de
operare
a
laptopului
sau
a
mediului
de
programare

îmi
dezordoneze
liniile
de
cod,
iar
la
compilarea
acestora
interveneau
foarte
multe

erori.
Erau
într-un
număr
așa
de
mare
încât

și
timp
era
mai
bine

reconstruiesc

aplicația
de
la
0
și
a
nu
pierde
timp
pentru
a
rearanja
și
verifica
dacă
totul
decurge

perfect.

Pentru
a
ajunge
la
designe-ul
dorit
al
aplicației
am
încercat
foarte
multe
variante

și
acestea
după
ideei
luate
de
pe
internet
de
la
alți
dezvoltatori
de
aplicații
mobile,
atât

în
engleză
cât
și
în
romană.
Am
lucrat
în
paralel
de
pe
două
proiecte
diferite:
un

proiect
pentru
aplicația
în
sine,
iar
al
doilea
pentru
testele
sau
încercările
pe
care
le

făceam, asta ca să nu deranjez cu ceva și a nu strica proiectul care deja era unul foarte

mare, iar refacerea acestuia ar fi durat foarte mult.

Icon-ul
folosit
pentru
pentru
butonul
care
accesează
aplicația
din
meniul

telefonului
mobil
a
fost
încărcat
pe
pun
site
(Android
Asset
Studio

Launcher
icon

generator)
unde
acesta
convertește
automat
exact
la
mărimile
cerute
de
Android

Studio.

Datorită
faptului

timpul
a
fost
insuficient
iar
managemant-ul
lui
nu
a
fost

unul
foarte
reușit
ultimile
3
activități
ale
aplicației
nu
sunt
terminate,
urmând
ca

acestea

fie
reluat
în
viitorul
aproiapt
și
aduse
la
ceea
ce
s-a
propus.
Aceste
activități

sunt:
Faculati,
Transport
în
comun
și
Informații
utile.
Aceste
activități
se
deschide,

deci a fost creată legatura cu activitatea principală.

“Facultăți”
este
activitatea
care
trebuie

prezinte
în
detaliu
facultatiile
orașului

unde
vom
găsi
imagini,
informații
despre
program,
adresa
și
metoda
de
înscriere
în

mediul universitar.

Pentru
dezvoltarea
acesteia
se
folosește
aceiași
metodă
care
s-a
folosit
și
la
aplicațiile

anterioare.

“Transport”
în
comun
este
activitatea
care
pune
la
dispoziție
harta
traseelor

autobuzelor
și
tramvaielor
din
incinta
orașului
Iași,
se
vor
enumera
traseele
și
se
vor

pune
la
dispoziție
informații
despre
fiecare
în
parte
cum
ar
fi:
numărul
de
linie,
locurile

de
unde
acestea
își
încep
traseele,
stațiile
prin
care
vor
trece.
Metoda
prin
care
trebuie

42


se
facă
aceste
modificări
este
una
mai
complicată,
iar
timpul
necesar
unei
astfel
de

metode necesită o durată mai lungă de timp.

“Informații
utile”
este
activitatea
o
activitate
asemănătoare
cu
cea
de
la

“Prezentare
generală”.
Metoda
este
aceiași
unde
doar
informațiile
care
se
vor
găsi
în
ea

sunt diferite.

În
momentul
în
care
se
deschid
aceste
3
ferestre

porni
un
fundal
de

culoare albastră, care să arate ca această aplicație funcționează în parametrii normali.

43

Capitolul IV.
Concluzii

Lucrarea
de
față
are
ca
scop
prezentare
unei
aplicații
care

ilustreze
nevoia
de

cunoa
ș
tere și de interacțiune.

Această
aplicație
pune
utilizatorului
la
dispoziție
informații
atent
selectate
care

sunt
pentru
toate
categoriile
de
vârstă.
TurIS,
aplicația
județului
Iași,
aduce
turiștilor
și

locuitorilor
acestei
zone
oportunitatea
de
a-și
face
trasee
cu
obicetive
turistice
pe
care


le
viziteze
într-un
timp
destul
de
scurt
și
de
a
avea
informații
despre
fiecare
obiectiv

turistic
în
parte.
Toate
acestea
sunt
puse
la
dispoziție
prin
sistemul
de
operare

Android..

Aflându-ne
în
epoca
tehnologiei
unde
unul
dintre
cele
mai
importante

gadget-uri
este
telefonul
mobil
ce
face
ca
majoritate
din
noi

utilizăm
un
astfel
de

dispozitiv.
Aceste
așa
numite
smartphone-uri
le
folosim
pentru
a
ne
face
viața
mai

ușoară
încercând

ne
satisfacem
nevoile
pe
mai
multe
ramuri.
Putem

luăm

legătura
cu
colegii
de
serviciu
pentru
a
ne
transmite
informații
utile
și
într-un
timp

destul
de
mic,
putem
lua
legătura
mai
ușor
cu
membrii
familiei,
prietenii
sau
persoane

cu care credem că putem face schimbul unor informații.

Limbajele
de
programare
sunte
limbaje
artificiale.
Acestea
sunt
folostie
pentru
a

scrie
secvențe
de
instrucțiuni
care

poată
fi
rulate
pe
computer.
Sunt
apărute
odată
cu

invenția
computerului
digital
în
anii
40.
Primul
limbaj
de
asamblare
a
apărut
în
ultima

perioadă
a
anilor
50
ca
răspuns
la
întroducerea
computerelor
comerciale
iar
primele

limbaje procedurale au fost dezvoltate la sfârșitul anilor 50
ș
i începutul anilor 60.

Java
este
un
limbaj
de
programare
orientat-obiect,
puternic
tipizat,
conceput
de
către

James
Gosling
la
Sun
Microsystems
(acum
filială
Oracle)
la
începutul
anilor
ʼ
90,
fiind

lansat în 1995.

Mediul
de
programare
folosit
pentru
dezvoltarea
aplica
ț
iei
„TurIS”
este

Android
Studio.
Până
în
luna
mai
a
anului
2013,
aplica
ț
iile
Android
se
puteau
realiza

prin
intermediul
mediului
de
dezvoltare
Eclipse,
împreună
cu
plugin-ul
ADT
(Android

Development Tools) – dezvoltat de Google.

44

Android
a
fost
proiectat
pentru
a
fi
compatibil
cu
o
gamă
largă
de
componente

hardware.
Aceasta
constituie
o
caracteristică
importantă,
întrucât
permite

producătorilor

conceapă
și

integreze
elementele
necesare
dispozitivului
Android,

făcându-l atractiv atât în rândul programatorilor cât și al consumatorilor.

Sistemul
Android
dispune
de
o
arhitectură
alcătuită
din
5
niveluri
ce
comunică

între
ele
și
anume:
Nucleul
Linux
(Linux
Kernel),
Librării
de
bază,
Addroid
Runtime,

Aplica
ț
ii Framework și Aplica
ț
ii.

Aplicația
dezvoltată
prin
mediul
de
programare
Android
Studio
se
numește

TurIS
care
vine
de
la
Truist
Iași.
Acesta
aplicație
oferă
turiștilor
și
persoanelor
din

această
zonă
ce
nu
sunt
familiarizate
cu
orașul/județul,
informații
utile
pentru
o
ședere

plăcută.
O
aplicație
ideeala
pentru
o
zi
în
care
te
plictisești
acasă,
unde
îți
poți
alege

câteva obiective din lista celor prezentate și numai bune de vizitat.

Primul
pas
ca
o
persoană

poate
folosi
aplicația
TurIS,
este
ca
acesta
trebuie


deschidă
fișierul
APK,
iar
acesta

fie
instalat.
Un
fișier
APK
este
de
fapt
o
arhivă

ce
conține
toate
fișierele(imagini,
sunet,
detalii
despre
aplicație,
codul
sursă
etc.)
care

sunt necesare unei aplicații ca aceasta să ruleze optim în Android.

Pentru
testarea
aplicației
am
folosit
un
alt
emulator
față
de
cel
pe
care
îl
pune
la

dispoziție
platformă
Android
Studio
și
anume
Genymotion
care
are
o
interfață
simplă

ș
i
intuitivă
de
pe
care
orice
persoană
poate
folosi
programul
fără
nici
un
fel
de

problemă.

Pe
viitor
îmi
doresc
ca
această
aplicație

se
regăsească
pe
“Magazin
Play”,

aplicația
oficială
Andoid
unde
aceștia
oferă
posibilitatea

îți
faci
vizibilă
aplicația

mobilă
dezvoltată
de
tine.
Această
metodă
care
din
punct
de
vedere
al
vizibilității
este

cea
mai
bună
însă
nu
este
gratuită.
Pentru
ca
utilizatorii
care
dezvoltă
aplicații
Andorid

și
vor

o
facă
publică
costul
este
de
25
de
$.
Însă,
dacă
tu
crezi

aplicația
ta
mertia

a
fi
descărcată
de
către
alte
persoane
o
poți
încărca,
iar
cei
care
sunt
interesați
o
pot

cumpăra online cu prețul pe care tu îl stabilești.

În
concluzie,
consider

platforma
Android
Studio
pune
la
dispoziție

instrumentele
necesare
pentru
crearea
unor
aplicații
care

ajute
la
o
mai
bună

promovare
a
turismului,
oferind
elementele
necesare
pentru
realizarea
unui
interfețe

45

care

atragă
utilizatorii
și
cu
care
aceștia

poată
ușor
interacționa.
Ceea
ce
va
face

diferența
între
aplicații
va
fi
modul
cum
aceste
componente
vor
fi
îmbinate
și
utilizate

pentru îndeplinirea scopului propus.

IV.1.
Avantajele aplicației

Avantajele aplica
ț
iei mobile pe care am construit-o sunt:


Oferă o bună promovare a zonei pentru care este constuită aplica
ț
ia.


Oferă
informa
ț
ii
utile
a
obiectivelor
turistice
ajutând
consumatorul
sa-
ș
i
facă
o

idee despre ora
ș

ș
i comunitate.


Ofera
posibilitatea
de
a
alege
câteva
obiective
turistice
ș
i
a
le
vizita
fară
a
căuta

foarte mult.


Interfa
ț
a este una simplă
ș
i orice utilizator o poate folosi.


Adună într-un singur loc toate obicetivele turistice.


Poate fi accesată în modul offline.

IV.2.
Dezavantaje

Dezavantajele aplica
ț
iei mobile sunt:


Update-urile
nu
intra
pe
dispozitivul
utilizatorului
decât
dacă
acesta
încarca
o

noua versiune a acesteia.


Calitatea
imaginilor
este
una
scazută
ș
i
nu
poate
fi
accesată
cu
zoom
in,
zoom

out.


Nu
poate
fi
accesată
ș
i
de
catre
sisteme
de
operare
cum
ar
fi:
iOS,
Windows,

etc.

46

Bibliografie

1.
Aplica
ț
iile mobile – obiecte ale proprietă
ț
ii intelectuale –

https://www.bizlaw.md/2017/07/15/aplicatiile-mobile-obiecte-ale-propri
etatii-intelectuale

2.
Ia
ș
i Wikipedia –

https://ro.wikipedia.org/wiki/Ia%C8%99i

3.
Ghid Bucure
ș
ti –

https://play.google.com/store/apps/details?id=com.ghid.bucuresti

4.
Timi
ș
oara City App –

https://play.google.com/store/apps/details?id=com.vecthordigital.timisoa
racityapp

5.
Ghid virtual – Sibiu Zoo –

https://play.google.com/store/apps/details?id=com.ionicframework.zoo9
99740

6.
Baia Mare City App –

https://play.google.com/store/apps/details?id=com.tna.baiamare

7.
LIMBAJE DE PROGRAMARE – PREZENTARE GENERALA –

https://biblioteca.regielive.ro/referate/limbaje-de-programare/limbaje-de-
programare-prezentare-generala-51447.html

8.
Ș
tefan Tanasa, Cristian Olaru, Stefan Andrei, "Java de la 0 la expert",

Polirom, 2003.

9.
Java (limbaj de programare) –

https://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)#cite_note-10

10.
Hoog, A., 2011, Android Forensics Investigation, Analysis and Mobile

Security for Google Android, Elsevier, Inc., Capitolele 2-3

11.
http://ocw.cs.pub.ro/courses/pdsd/labs/00

12.
Android Tutorial (2) – Concepte, activitati si resurse ale unei aplicatii

Android –

http://www.itcsolutions.eu/2011/09/08/android-tutorial-concepte-activita
ti-si-resurse-ale-unei-aplicatii-android

47

Anexe

MainActivity

package com.example.cosmin.licenta;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// inceput Fullscreen

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

// sfarsit Fullscreen

setContentView(R.layout.activity_main);

}

public void PrezGen(View v){

Intent intent = new Intent(this, PrezentaraGenerala.class);

startActivity(intent);

}

public void Top10 (View v){

Intent intent = new Intent(this, Top10.class);

startActivity(intent);

}

public void AlteA (View v){

Intent intent = new Intent(this, AlteAtractii.class);

startActivity(intent);

}

public void TurismC (View v){

Intent intent = new Intent(this, TurismCultural.class);

startActivity(intent);

}

public void Biseric (View v){

Intent intent = new Intent(this, Biserici.class);

startActivity(intent);

}

public void AtractiiC (View v){

Intent intent = new Intent(this, AtractiiCopii.class);

startActivity(intent);

}

public void Fac (View v){

Intent intent = new Intent(this, Facultati.class);

48

startActivity(intent);

}public void Transpor (View v){

Intent intent = new Intent(this, Transport.class);

startActivity(intent);

}

public void InformatiiU (View v){

Intent intent = new Intent(this, Informatii.class);

startActivity(intent);

}

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity"

android:orientation="vertical"

android:background="@drawable/cadru1">

<ScrollView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@drawable/cadru1">

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:orientation="vertical"

android:layout_marginTop="20dp"

android:layout_marginStart="6dp"

>

<TextView

android:layout_width="400dp"

android:layout_height="255dp"

android:background="@drawable/homepage"

android:textAlignment="center"

android:text="T u r I S"

android:textStyle="bold"

android:textColor="@color/colorWhite"

android:textSize="55dp"

android:gravity="bottom"

/>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

android:weightSum="3"

>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

49

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorGrass"

android:layout_margin="2dp"

android:onClick="PrezGen"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_002380"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorGrassDark"

android:padding="8dp"

android:text="Prezentare generală"

android:textAlignment="center"

android:textColor="@color/colorWhite"

android:textSize="11dp"

/>

</LinearLayout>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorBlueJeans"

android:layout_margin="2dp"

android:onClick="Top10"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_041300"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorBlueJeansDark"

android:padding="8dp"

android:text="Top 10 atrac
ț
ii"

android:textAlignment="center"

android:textColor="@color/colorWhite"

android:textSize="11dp"

/>

</LinearLayout>

<LinearLayout

android:layout_width="0dp"

50

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorLavander"

android:layout_margin="2dp"

android:onClick="AlteA"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_001500"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorLavanderDark"

android:padding="8dp"

android:text="Alte atrac
ț
ii"

android:textAlignment="center"

android:textColor="@color/colorWhite"

android:textSize="11dp"

/>

</LinearLayout>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:weightSum="3"

>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_margin="2dp"

android:layout_weight="1"

android:background="@color/colorMint"

android:orientation="vertical"

android:onClick="TurismC">

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_gravity="center"

android:layout_marginTop="20dp"

android:src="@drawable/ic_icon_010340"

android:tint="@color/colorWhite" />

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorMintDark"

android:padding="8dp"

android:text="Turism cultural"

android:textAlignment="center"

android:textColor="@color/colorWhite"

51

android:textSize="11dp"

/>

</LinearLayout>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorAqua"

android:layout_margin="2dp"

android:onClick="Biseric"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_041300"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorAquaDark"

android:padding="8dp"

android:text="Biserici
ș
i mănăstiri"

android:textAlignment="center"

android:textColor="@color/colorWhite"

android:textSize="11dp"

/>

</LinearLayout>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorPinkRose"

android:layout_margin="2dp"

android:onClick="AtractiiC"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_048990"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorPinkRoseDark"

android:padding="8dp"

android:text="Atrac
ț
ii pentru copii"

android:textAlignment="center"

android:textColor="@color/colorWhite"

52

android:textSize="11dp"

/>

</LinearLayout>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:weightSum="3"

>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorGrapeFruit"

android:layout_margin="2dp"

android:onClick="Fac"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_004350"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorGrapeFruitDark"

android:padding="8dp"

android:text="Facultă
ț
i"

android:textAlignment="center"

android:textColor="@color/colorWhite"

android:textSize="11dp"

/>

</LinearLayout>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorBitterSweet"

android:layout_margin="2dp"

android:onClick="Transpor"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_059030"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

53

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorBitterSweetDark"

android:padding="8dp"

android:text="Transport în comun"

android:textAlignment="center"

android:textColor="@color/colorWhite"

android:textSize="11dp"

/>

</LinearLayout>

<LinearLayout

android:layout_width="0dp"

android:layout_height="120dp"

android:layout_weight="1"

android:orientation="vertical"

android:background="@color/colorFlower"

android:layout_margin="2dp"

android:onClick="InformatiiU"

>

<ImageView

android:layout_width="40dp"

android:layout_height="40dp"

android:layout_marginTop="20dp"

android:layout_gravity="center"

android:src="@drawable/ic_icon_026470"

android:tint="@color/colorWhite"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="20dp"

android:background="@color/colorFlowerDark"

android:padding="8dp"

android:text="Informa
ț
ii utile"

android:textAlignment="center"

android:textColor="@color/colorWhite"

android:textSize="11dp"

/>

</LinearLayout>

</LinearLayout>

</LinearLayout>

</ScrollView>

</LinearLayout>

54

Similar Posts