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
să
ne
satisfacem
nevoile
pe
mai
multe
ramuri.
Putem
să
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.
Dar,
pentru
că
lucrurile
nu
sunt
limitate
și
mereu
vine
vorba
de
inovație,
progresul
a
făcut
ca
acest
smartphone
să
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,
să
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ă
să
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
că
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
să
fie
nouă,
să
implice
o
activitate
inventivă
și
să
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
că
ceea
ce
mi-am
propus
să
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
să
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
vă
aduce
toate
evenimentele
importante
ale
ora
ș
ului,
împreună
cu
ghidul
loca
ț
iilor
unde
vă
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
vă
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
să
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
să
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
să
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
să
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
aș
fi
putut
să
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
să
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
să
aibă
o
structură
logică,
simplă
ș
i
regulile
pentru
gramatică,
ortografie
ș
i
punctua
ț
ie
să
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
să
existe
o
singură
clasă
care
să
conțină
o
metodă:
main().
Cu
alte
cuvinte,
numele
clasei
trebuie
să
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
să
conceapă
și
să
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
să
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
să
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
că
este
oprită(onStop())
nu
este
vizibilă;pentru
a
fi
reactivată
(ea
déjà
există),activitatea
trebuie
să
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
că
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
vă
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
să
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ă
să
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ă
să
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
să
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
că
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
că
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ă
dă
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
să
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
să
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
că
este
vorba
de
layout-uri
sau
de
butoane
ș
i
text,
poate
să
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
să
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
să
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
să
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ă
să
poate
folosi
aplicația
TurIS,
este
ca
acesta
trebuie
să
deschidă
fișierul
APK,
iar
acesta
să
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
să
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
să
ne
ducă
exact
în
fereastră
pe
care
vrem
să
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
să
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
să
le
aibă
laptopul
pentru
ca
acestea
să
funcționeze
optim.
După
scrierea
liniilor
de
cod,
în
momentul
în
care
se
compila
programul,
timpul
de
execuție
era
foarte
mare,
asta
pentru
că
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
să
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
să
grupez
fișierele
.jpg
pentru
identificarea
lor
mai
ușor.
În
momentul
de
față
pentru
a
selecta
o
parte
din
fiserele
pe
care
vreau
să
le
folosesc
într-o
singură
activitate,
trebue
să
caut
ceea
ce
am
nevoie
și
să
le
selectez
din toate cele existente pentru aplicație.
O
problemă
pe
care
am
întâlnit-o
la
început
de
aplicație
este
că
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
să
îmi
dezordoneze
liniile
de
cod,
iar
la
compilarea
acestora
interveneau
foarte
multe
erori.
Erau
într-un
număr
așa
de
mare
încât
că
și
timp
era
mai
bine
să
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
că
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
să
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
să
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
să
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
vă
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
să
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
să
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
să
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
să
ne
satisfacem
nevoile
pe
mai
multe
ramuri.
Putem
să
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
să
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
să
conceapă
și
să
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ă
să
poate
folosi
aplicația
TurIS,
este
ca
acesta
trebuie
să
deschidă
fișierul
APK,
iar
acesta
să
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
să
se
regăsească
pe
“Magazin
Play”,
aplicația
oficială
Andoid
unde
aceștia
oferă
posibilitatea
să
îț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
să
o
facă
publică
costul
este
de
25
de
$.
Însă,
dacă
tu
crezi
că
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
că
platforma
Android
Studio
pune
la
dispoziție
instrumentele
necesare
pentru
crearea
unor
aplicații
care
să
ajute
la
o
mai
bună
promovare
a
turismului,
oferind
elementele
necesare
pentru
realizarea
unui
interfețe
45
care
să
atragă
utilizatorii
și
cu
care
aceștia
să
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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Conf.dr.ing.inf. Cătălin DAMIAN Cosmin-Alexandru Epure IA Ș I 2018 Cuprins Introducere 3 Contextul general al aplicației [614746] (ID: 614746)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
