Specializarea : Informatică [626744]
1
UNIVERSITATEA „LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE ȘTIINȚE
Specializarea : Informatică
LUCRARE DE LICENȚĂ
Coordonator științific
Lect.Univ.Dr.Alina Elena Pitic Absolvent: [anonimizat]
2017
2
UNIVERSITATEA „LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE ȘTIINȚE
Specializarea : Informatică
Aplicatie Android pentru
verificarea cunostintelor html
si css
Coordonator științific
Lect.Univ.Dr.Alina Elena Pitic Absolvent: [anonimizat]
2017
3
CUPRINS
1. CAPITOLUL 1. Android ………………………….. ………………………….. ………………………….. ……………………… 5
1.1. Scurt istoric si evolutia versiunilor sistemului de operare Android ………………………….. ………….. 5
1.2. Android 1.5 Cupcake ………………………….. ………………………….. ………………………….. ………………… 5
1.3. Android 1.6 Donut ………………………….. ………………………….. ………………………….. ……………………. 5
1.4. Android 2.0 -2.1 Éclair ………………………….. ………………………….. ………………………….. ……………….. 6
Prezentat la sfârșitul anului 2009, Android 2.0 a apărut pentru prima oară pe Motorola Droid, Eclair
a fost un pas destul de mare în fața predecesorilor săi. A adus îmbunătățiri în browser, Google Maps
și o nouă interfață cu utilizatorul . Navigarea de hărți Google, apropiindu -se repede de platforme cu
alte sisteme de navigație GPS. ………………………….. ………………………….. ………………………….. ………….. 6
1.5. Android 2.2 – 2.2.3 Froyo ………………………….. ………………………….. ………………………….. ………….. 6
1.6. Android 2.3 – 2.3.7 Gingerbread ………………………….. ………………………….. ………………………….. … 6
1.7. Android 3.x Honeycomb ………………………….. ………………………….. ………………………….. …………… 6
1.8. Android 4.0 – 4.0.4 Ice Cream Sandwich ………………………….. ………………………….. ………………….. 7
1.9. Android 4.1 – 4.3.1 Jelly Bean ………………………….. ………………………….. ………………………….. …….. 8
1.10. Android KitKat (4.4 – 4.4.4) ………………………….. ………………………….. ………………………….. …….. 8
1.11. Android Lollipop (5.0 – 5.1.1) ………………………….. ………………………….. ………………………….. …. 8
1.12. Android Marshmallow (6.0 – 6.0.1) ………………………….. ………………………….. …………………….. 8
1.13. Android Nougat (7.0 – 7.1.1) ………………………….. ………………………….. ………………………….. ….. 9
CAPITOLUL 2. ANDROID STUDIO ………………………….. ………………………….. ………………………….. …………….. 10
2.1 Structura proiectului in Android Studio ………………………….. ………………………….. …………………. 10
2.2 Interfata cu utilizatorul ………………………….. ………………………….. ………………………….. …………… 11
2.3 Setări Structura proiectului ………………………….. ………………………….. ………………………….. ……… 12
2.3.1 Elementele de bază ale fluxului de lucru pentru de zvoltarea aplicatiei Android …………………. 13
2.3.2 Investigarea cantitatii de memorie RAM folosita ………………………….. ………………………….. …… 13
2.3.3 Scrierea si vizualizarea de logur i ………………………….. ………………………….. ………………………….. 14
2.3.4 Folosirea utilitarului DDMS (Dalvik Debug Server Monitor) ………………………….. …………………. 14
CAPITOLUL 3. ANDROID INTERFATA GRAFICA – XML ………………………….. ………………………….. ………………. 16
3.1 LinearLayout ………………………….. ………………………….. ………………………….. ………………………….. …… 16
3.2 Relative Layout ………………………….. ………………………….. ………………………….. ………………………. 17
3.3 Table Layout ………………………….. ………………………….. ………………………….. ………………………….. 17
3.4 ScrollView Layout ………………………….. ………………………….. ………………………….. …………………… 18
3.5 Cum functioneaza Java si Android impreuna? ………………………….. ………………………….. ………… 18
CAPITOLUL 4. Configurarea si utilizarea widget -urilor ………………………….. ………………………….. …………… 22
4.1 Dimensionarea folosind pixeli independenti ………………………….. ………………………….. ……………….. 22
4
4.2 Dimensionarea fo losind pixeli scalabili ………………………….. ………………………….. ……………………….. 22
4.3 Folosirea padding -ului si a marginii ………………………….. ………………………….. ………………………….. .. 23
4.3 Folosirea proprietatii’ layout_weight’ ………………………….. ………………………….. ………………………… 23
4.4 Folosirea proprietatii ‘gravity’ ………………………….. ………………………….. ………………………….. ……….. 23
4.5 Fazele unei aplicatii Android ………………………….. ………………………….. ………………………….. …………. 24
CAPITOLUL 5. SQLite ………………………….. ………………………….. ………………………….. ………………………….. … 25
5.1 Despre SQLite ………………………….. ………………………….. ………………………….. ………………………….. …. 25
5.2 Trasaturile cele mai importante ale SQLite -ului ………………………….. ………………………….. …………… 26
5.3 Tabele ………………………….. ………………………….. ………………………….. ………………………….. ……………. 29
5.4 Cheile primare ………………………….. ………………………….. ………………………….. ………………………….. … 32
CAPITOLUL 6. JSON ………………………….. ………………………….. ………………………….. ………………………….. ….. 34
6.1 Despre JSON ………………………….. ………………………….. ………………………….. ………………………….. …… 34
CAPITOLUL 7 ………………………….. ………………………….. ………………………….. ………………………….. ……………. 39
7.1 Interfata Aplicatiei ………………………….. ………………………….. ………………………….. ………………………. 39
5
1. CAPITOLUL 1. Android
1.1. Scurt istoric si evolutia versiunilor sistemului de operare Android
Inițial, Andy Rubin a fondat Android Incorporation în Palo Alto, California, Statele Unite în
octombrie 2003. În 17 august 2005, Google a achiziționat un sistem de in corporare Android. De
atunci, este în filiala Google Incorporation. Angajații cheie ai Android Incorporation sunt Andy
Rubin, Rich Miner, Chris White și Nick Sears. Inițial destinat pentru camera foto, dar a fost
mutat mai târziu la telefoanele inteligente , din cauza pieței reduse numai pentru aparatul de
fotografiat. Android este nick name -ul lui Andy Rubin dat de colegii datorat dragostei lui față de
roboți. În 2007, Google anunță dezvoltarea sistemului de operare Android, iar in 2008 HTC a
lansat primul telefon Androi d. 1
De la versiunea 1.5, Android are nume de cod bazate pe dulciuri in ordine alfabetica.
Incepand de la Cupcake (1.5), Donut (1.6), Éclair (2.0 – 2.1), Froyo (2.2 – 2.2.3), Gingerbread
(2.3 – 2.3.7), Honeycomb (3.0 – 3.2.6), Ice Cream Sand wich (4.0 – 4.0.4), Jelly Bean (4.1 – 4.3.1),
KitKat (4.4 – 4.4.4), Lollipop (5.0 – 5.1.1), Marshmallow (6.0 – 6.0.1) și versiunea Nougat (7.0 –
7.1.1).
1.2. Android 1.5 Cupcake
Cupcake a fost prima revizuire majoră a sistemului de operare Android. Android 1.5
SDK a fost lansat în aprilie 2009 și a adus o mulțime de modificări ale UI -ului, cel mai probabil
fiind suportul pentru widget -uri și foldere pe ecranele de start.Cupcake a adus caracteristici cum
ar fi îmbunătățirea suportului Bluetooth, a funcțiilor cam erei video și a serviciilor de încărcare
noi precum YouTube și Picasa. Android 1.5 a inaugurat epoca telefonului Android modern .
1.3. Android 1.6 Donut
Donut, lansat în septembrie 2009,a extins caracteristicil e care au venit cu Android
1.5.Android 1.6 a adus unele îmbunătățiri majore. Donut a adus suport pentru ecranele
touchscreen de înaltă rezoluție, asistență pentru ecrane WVGA si suport mult îmbunătățit pentru
camere și galerii.
1 Padmini, ‘Android App Development’, Educreation Publishing, 2011, p.2
6
1.4. Android 2.0 -2.1 Éclair
Prezentat la sfârșitul anului 2009, Android 2.0 a apă rut pentru prima oară pe Motorola
Droid, Eclair a fost un pas destul de mare în fața predecesorilor săi. A adus îmbunătățiri în
browser, Google Maps și o nouă interfață cu utilizatorul. Navigarea de hărți Google, a propiindu –
se repede de platforme cu alte s isteme de navigație GPS.
1.5. Android 2.2 – 2.2.3 Froyo
Android 2.2 Froyo a fost anunțat în mai 2010 la conferința Google IO din San
Francisco. Cea mai mare schimbare a fost introducerea compilatorului Just -In-Time – sau JIT –
care accelerează în mod semnifica tiv puterea de procesare a telefonului.Împreună cu JIT,
Android 2.2 aduce de asemenea suport pentru Adobe Flash 10.1 .Froyo a adus, de asemenea,
suport nativ pentru tethering, ceea ce înseamnă că se poate utiliza conexiunea de date pentru
smartphone -ul Andr oid pentru a oferi Internet (fără fir sau cu un cablu USB) la aproape orice
dispozitiv.
1.6. Android 2.3 – 2.3.7 Gingerbread
Android 2.3 Gingerbread a fost lansat in decembrie
2010. Gingerbread aduce câteva îmbunătățiri ale
interfeței, precum o simțire mai c onsistentă în meni uri și
dialoguri, s i o nouă bară de notificare
neagră. Gingerbread aduce suport și pentru noile
tehnologii. NFC (Near Field Communication) este acum
acceptată și suportul SIP (Internet calling) e ste acum
disponibil pe Android, plus o optim izare ulterioara
pentru o viață ma i bună a bateriei completează acest
upgrade .
1.7. Android 3.x Honeycomb
Android 3.0 Honeycomb a fost lansat in februarie 2011
cu Motorola Xoom. Este prima versiune Android
produsă în mod specific pentru tablete și a adus la ma sa
o mulțime de noi elemente de interfață. O nouă bara de
sistem in partea de jos a ecranului pentru a înlocui bara
7
de stare pe care o vedem pe telefoane și un nou buton pentru aplicații le recente .
Unele dintre aplicațiile Google standard au fost, de asem enea, actualizate pentru utilizarea cu
Honeycomb, inclusiv aplicația Gmail și aplicația Talk. Ambele au folosit foarte mult fragmente,
iar aplicația Talk a adăugat o conversație prin chat video și o asistență pentru apelare încorporată.
Google nu a lansat niciodată sursa de tip Honeycomb.Îmbunătățirile pentru Honeycomb au fost
anunțate la Google IO în mai 2011 ca Android 3.1, iar Android 3.2 a urmat ulterior. Însă
Honeycomb este în principiu considerată o versiune uitată.2
1.8. Android 4.0 – 4.0.4 Ice Cream San dwich
Android 4.0 oferă o interfață rafinat ă pentru telefoane și tablete.I ntroduce caracteristici
inovatoare pentru utilizatori și dezvoltatori. Acest document oferă o imagine a numeroaselor noi
caracteristici și tehnolo gii care fac Android 4.0 simplu si frumos.
Android 4.0 se bazează pe lucrurile pe care le iubesc cei mai mulți oameni despre Android –
multitasking ușor, notificări bogate, ecrane de pornire personalizabile, widget -uri
redimensionabile și interactivitate profundă –
Versiunile Android ( https://mariocube.com/android -version -history.html )
și adaugă noi modalități puternice de comunicare și partajare. Face ca acțiunile comune să fie
mai vizibile și 3permit e navigatorilor să navigheze cu gest uri simple și intuitive.
Butoanele virtuale din bara de sistem permit utilizatorilor să navigheze instantan eu la Back,
Home și aplicatii recente . Bara de sistem și butoanele virtuale sunt prezente în toate aplicațiile.
Widgeturile sunt re dimensionabile, astfel încât utilizatorii le pot extinde pentru a afișa mai mult
conținut sau a le micșora pentru a economisi spațiu. De pe ecranul de blocare a diapo zitivelor,
utilizatorii pot merge direct la cameră pentru o fotografie sau pot trage in jo s fereastra de
notificări pentru a v erifica mesajele. Când asculta muzică, utilizatorii pot chiar să gestioneze
piese le muzicale și să vadă arta albumelor.
2 http://www.androidcentral.com/android -versions
3 https://developer.android.com /about/versions/nougat/index.html
8
1.9. Android 4.1 – 4.3.1 Jelly Bean
Android 4.3 include optimizări de performanță și caracteristici noi pentru utilizatori și
dezvoltatori. Este mai rapid, si mai receptiv prin imbunatatirea conectivitatii Bluetooth ,
optimizarea gasirii locatiei, configurarea layout -ului tastaturii capabilităților senzoriale și
filtrarea specifică notificărilor aplicați ilor.
1.10. Android KitKat (4.4 – 4.4.4)
Android 4.4 este conceput pentru a funcționa rapid, neted și sensibil pe o gamă mult mai
largă de dispozitive decât înainte – inclusiv pe milioane de dispozitive de din întreaga lume care
au doar 512 MB RAM. KitKat simp lifică fiecare componentă majoră pentru reducerea utilizării
memoriei și introduce noi API -uri și instrumente pentru a ajuta să cream aplicații inovatoare,
receptive, cu o memorie eficientă.
1.11. Android Lollipop (5.0 – 5.1.1)
Lollipop extinde Android chiar ma i departe, de la telefoane, tablete și pana la mașini.
Android TV oferă o platformă TV completă pentru experiența pe ecran mare a aplicației. Permite
utilizatorilor să descopere cu ușurință conținutul, cu recomandări personalizate și căutare vocală.
Androi d 5.0 introduce API -uri noi pentru camera.
1.12. Android Marshmallow (6.0 – 6.0.1)
Android 6.0 (M) oferă funcții noi utilizatorilor și dezvoltatorilor de aplicații . Această
versiune oferă noi interfețe API pentru a permite autentificarea utilizatorilor utiliz ând scanările
dactiloscopice pe dispozitivele acceptate. Aplicația poate autentifica utilizatorii în funcție de
ultima dată când au deblocat dispozitivul. Această caracteristică scutește utilizatorii de la
necesitatea de a -și aminti parole suplimentare pen tru anumite aplicații. Sistemul poate efectua o
copiere de rezervă automată/backup și o restaurare completă pentru aplicații. Oferă API -uri
pentru a face partajarea intuitivă și rapidă pentru utilizatori. Utilizatorii pot adopta dispozitive
externe de stoc are, cum ar fi cardurile SD. 4
4 https://developer.android.com/about/versions/marshmallow/android -6.0.html
9
1.13. Android Nougat (7.0 – 7.1.1)
Introduce o varietate de caracteristici și capabilități noi pentru utilizatori și dezvoltatori.
Acum utilizatorii pot deschide instantaneu două aplicații pe ecran, viteza instalărilor de aplicați i
și actualizarea sistem ului este imbunatatita, introduce emoji suplimentar. De asemenea,o feră un
API care permite furnizorilor de servicii să mențină o listă blocată de contacte.Lista nu este
accesibilă altor aplicații. Nougat permite aplicației implicit e de telefon să afișeze apelurile
primite.5
Cu toate acestea, a plicatiile native Android sunt dezvoltate folosind limbajul de programare Java ,
si poate fi usor adaptata pentru alte sisteme de operare mobile, cum ar fi Blackberry, Symbian și
Ubuntu.In plus , aplicatiile Android pot fi, de asemenea folosite cu usurinta de catre Chrome OS.
Android Studio este un IDE excelent bazat pe InteliJ. Dupa cum sugereaza si numele este un IDE
proiectat si dezvoltat special pentru dezvoltarea de aplicatii Android. Este e xtraordinar de rapid
si eficient, si putem seta un nou proiect Android pentru diferite tipuri de aplicatii Android in
cateva secunde. Atunci cand Android a fost lansat, dezvoltarea unei aplicatii s -a facut cu Eclipse
si pluginul Android Developer. De cand a fost la nsat Android Studio s -a schimbat , plus acesta
contine si anumite imbunatatiri: bazat pe Gradle sistem cu timp real de redare, optiunea de
examinare a aspectului de configuratie pe ecran in timpul editarii., construirea de variante si
generare de f isiere multiple apk., suporta dezvolatrea de aplicatii Android Wera, TV si Auto,
permiterea integrarii aplicatiei cu platforma Google Cloud.
Java este un limbaj de programare folosit pe o gama larga de dispozitive si sisteme de operare.
Se foloseste si in dezvoltarea de aplicatii pentru alte sisteme de operare (Windows, Linux ).
Aplicatiile Android pot fi publicate in magazinul Google
Play si disponibile pentru descarcare de catre utilizatori in termen de cateva ore, in comparatie cu
termenul de cateva sap tamani pentru magazinul de aplicatii pentru Apple. O aplicatie poate fi
literalmente actualizata de mai multe ori pe zi, pe magazinul Google Play, ca raspuns la
plangerile utilizatorilor si/ sau probleme, in timp ce pe App Store, aplicatia ar trebui sa tre aca
prin acelasi proces de linga durata ori de cate ori trimitem o actualizare sau un bug fix. Pentru o
noua aplicatie sau un joc care ar avea nevoie sa fie in mod constant si rafinat actualizat ca
raspuns la feedback -ul utilizatorilor, mahazinul Play este o platforma perfecta.
5 https://developer.android.com/about/versions/nougat/android -7.0.html
10
O alta caracteristica excelenta a Play Store -ului este abilitatea de a elibera o aplicatie alfa si/ sau
beta care ar fi disponibila numai pentru membrii unui grup selectat de testari. Cu aceasta, poate
oferi acces rapid la un subset de utilizatori si de a folosi feedback -ul lor pentru a lustrui aplicatia
inainte de final.
Dezvoltarea unei aplicatii Android se poate face pe Windows, Mac si Linux .
CAPITOLUL 2. ANDROID STUDIO
Android este oficial un mediu pentru dezvoltarea de aplicații Android. Android Studio oferă mai
multe caracteristici care sporesc chiar și în momentul construirii aplicațiilor de productivitate
Android, cum ar fi:un sistem constructiv de baza Gradle flexib il;un emulator rapid ; un mediu
unificat în cazul în care dorim sa dezvoltam pentru toate dispozitivele Android; executare
instantanee pentru a împinge modificări la aplicația in funcționare, fără a construi un nou APK;
instrumente extinse de testare;instru mente lint pentru a prinde performanta, usurinta in utilizare,
compatibilitate,suport C ++ si suport S DK.
2.1 Structura proiectului in Android Studio
Fiecare proiect din Android Studio conține unul sau mai multe module cu fișiere de cod sursă și
fișierele sursa. Include urmatoarele tipuri de modele: module de aplicatii Android, module de
biblioteca, module pentru Google App Engine.
În mod implicit, Android Studio afișează fișierele de proiect în vizualizarea proiectului
Android.Aceasta organizare pe module pentru ofera acces rapid la fișierele sursă -cheie ale
proiectului dumneavoastră. Aplicatia conține următoarele foldere: ‘ manifests ‘care contine
AndroidManifest.xml ;’ java’ conține fișierele de cod sursă Java, inclusiv codul de test JUnit;
‘res’care conți ne toate resursele de bază non -cod, cum ar fi machete XML, imagini .
11
2.2 Interfata cu utilizatorul
Fereastra principală in Android Studio este alcătuita din mai multe zone:
Bara de instrumente ne permite să efectuam o gamă largă de acțiuni, inclusiv ru larea aplicației
și lansarea de instrumente Android.
Bara de navigare ne ajută să navigam prin proiectul și fișierele deschise pentru editare. Acesta
oferă o vizualizare mai compactă a structurii vizibile în fereastra proiectului.
Fereastra Editor este locul unde putem creea si modifica codul. În funcție de tipul de fișier
curent, editorul se poate schimba. De exemplu, atunci când vizualizam un fișier se va afișa
editorul Layout.
Fereastra barei de instrumente se execută în jurul exteriorul ferestrei IDE și conține butoane
care ne permit extinderea sau restrângerea ferestrelelor individuale.
Ferestrele de intrumente ofera acces la sarcini specifice, cum ar fi managementul de proiect, de
căutare, de control al versiunii, și multe altele. Avem posibilitatea de a le extinde sau sa le
inchidem.
Bara de stare afișează starea proiectului și IDE în sine, precum și orice avertismente sau mesaje.
In Android Studio avem posibilitatea să organizați fereastra principală cum dorim pentru a ne
oferi mai mult spațiu pe ecr an prin ascunderea barelor de instrumente și ferestrelor care sunt deja
deschise. Putețem utiliza, de asemenea, comenzi rapide de la tastatură pentru a avea acces la cele
mai multe caracteristici IDE.
În orice moment, putem căuta în codul sursă, baze de da te, acțiuni, elemente ale interfeței cu
utilizatorul, și așa mai departe, prin dubla apăsare pe tasta Shift, sau făcând clic pe lupa din colțul
din dreapta sus al programului. Acest lucru poate fi foarte util în cazul în care, de exemplu,
încercam să găsim o anumită acțiune IDE pe care am uitat cum să o declanșam.
Pentru a vedea efectiv structura pe fisiere a proiectului, inclusiv toate fișierele ascunse din
ecranul Android, putem selecta Project din meniul derulant din partea de sus a ferestrei
proiectulu i. Atunci când selectam Vizualizare proiect, putem vedea mult mai multe fișiere și
directoare. Cele mai importante dintre acestea sunt următoarele:
module -name/ care cuprinde:
• build/ conține outputurile;
• libs/conține biblioteci private.
• src/conține toate fișierele de cod și resurse pentru modulul în următoarele subdirectoare:
o androidTest/ conține un cod pentru testele care rulează pe un dispozitiv Android,
12
o main/ conține "principalele" fișiere: codul și resursele partajate de toate variantele
Android const ruite:
• AndroidManifest.xml descrie fiecare dintre componentele sale
• java/ contine sursele java
• jni/conține cod nativ folosind nativ Interface Java (JNI)
• gen/conține fișierele Java generate de Android Studio, cum ar fi
fișierul R.java și interfețele create din fișiere AIDL.
• res/conține resurse pentru aplicații, cum ar fi fișierele drawable,
fișierele cu aspect UI.
• assets/ conține un fișier care ar trebui să fie compilat într -un fișier.
apk așa cum este. Putețem naviga cu acest director în același mod
ca și cu un sistem de fișiere tipic folosind URIuri și citi fișiere ca
un flux de octeți folosind AssetManager.
• test/conține un cod pentru testele locale care rulează pe gazda JVM.
• build. gradle (modul) Aceasta defineste configurațiile build modulelor specifice.
• build. gradle (proiect) Aceasta defineste configurațiade construirecare se aplică tuturor
modulelor. Acest fișier este parte integrantă a proiectului, astfel încât să le mențină în
control cu toate celelalte coduri sursă.
2.3 Setări Structura proiectului
Pentru a modifica diverse setări pentru proiectul Android Studio, putem deschide dialogul
Structura proiectului făcând clic pe Fișier> Structura proiectului. Acesta conține următoarele
secțiuni:
• SDK Locul de amplasare : setează locația JDK, Android SDK -ul, și Android NDK care
o foloseste proiectul creat.
• Project /Proiect: setează versiunea pentru Gradle și plugin -ul Android pentru Gradle, si
numele locației.
• Developer Services/ Servicii dezvoltator: conține setări pentru Android Studio add -in
componente de la G oogle sau alte părți.
• Modules /Module: permite să editam configurațiile specifice modulului, inclusiv SDK -ul,
semnătura aplicației, și dependențele de bibliotecă.
Setarile din Modules ne permit să modificam opțiunile de configurare pentru fiecare dintre
modulele proiectului creat. Pagina cu setări a fiecarui modul este împărțita în următoarele taburi:
13
Properties /Proprietăți : specifică versiunile de SDK și instrumentele de compilare a modulului;
Signing / Semnatura: utilizat pentru a semna fișierul APK.
Flavor s care permite să cream mai multe constructii, în cazul în care fiecare are un set specific
de setări de configurare, cum ar fi versiunea minimă și SDK -ul țintă al modulului, precum și
numele și versiunea.
Build Types/ Construi Tipuri, care permite să cream și să modificam configurații de constructie.
2.3.1 Elementele de bază ale fluxului de lucru pentru dezvoltarea aplicatiei Android
Fluxul de lucru pentru a dezvolta o aplicație pentru Android este conceptual acelasi ca și
alte platforme pentru dezvolt area de aplicatii. Cu toate acestea, pentru a construi în mod eficient
o aplicație bine conceputa pentru Android, avem nevoie de unele instrumente specializate. Lista
de mai jos oferă o prezentare generală a procesului de a construi o aplicație Android car e ar
trebui utilizate în timpul fiecărei faze de dezvoltare.
Configurarea spațiului de lucru . Instalarea programului Android Studio și creearea unui
proiect.
Scrierea aplicației. Android Studio include o varietate de instrumente și de informații pentru a
ne ajuta să lucram mai rapid, scrie cod de calitate, designUI, și de a crea resurse pentru diferite
tipuri de dispozitive.
Construirea si rularea aplicatiei . In timpul acestei faze, se construieste proiectul într -un pachet
APK pe care il putem instala și r ula pe emulator sau un dispozitiv cu Android.
Depanarea și testarea. Acest pas se face tot in faza in scrierea aplicației, dar cu accent pe
eliminarea erorilor și optimizarea performanței aplicației. Desigur, crearea testel or ne ajuta în
aceste eforturi. Pentru a vizualiza și analiza diferite valori de performanță, cum ar fi utilizarea
memoriei, traficul de rețea, impactul CPU, și mai mult, putem utiliza Android Monitor.
Publicarea . Când suntem pregatiti să lansam aplicația pentru utilizatori, trebuie luate cateva
lucruri in considerare, cum ar fi versionarea aplicației și semnarea acesteia cu o cheie.
2.3.2 Investigarea cantitatii de memorie RAM folosita
Atunci când dezvoltam aplicații Android, trebuie sa acordam întotdeauna atenție la cât de multa
memor ie RAM folosește aplicația construita. Cu toate că Dalvik și ART efectueaza runtime de
colectare a gunoiului de rutină (GC) pentru a oferi utilizatorilor o experiență stabilă în cazul în
care sistemul de operare Android comuta rapid între aplicații, asigur area că aplicația nu consumă
14
în mod inutil memorie atunci când utilizatorul nu interacționează cu ea este un punct important
pentru performanta.
Android Runtime (ART) este un mediu de aplicație de rulare utilizat de sistemul de operare
Android. Inlocuind D alvik, care este procesul de mașină virtuală utilizată inițial de Android,
ART realizează traducerea bytecode a aplicației în instrucțiuni native, care sunt ulterior executate
de mediu runtime al dispozitivului.
2.3.3 Scrierea si vizualizarea de loguri
Android Monitor include un monitor de loguri care afișează informatiile necesare
depanarii. Afișează mesaje în timp real, și, de asemenea, păstrează o istorie, astfel încât să pute m
vizualiza mesajele mai vechi. Pentru a afișa doar informația care ne inter eseaza, putem crea
filtre, modifica, cat de multa informatie este afisata in mesaje, nivelele de prioritate stabilite,
mesaje de afișare produse numai în funcție de codul aplicației și căutarea în istoric. În mod
implicit, monitorul logcat afiseaza output -ul celei mai recente lurari ale aplicatiei.
Atunci când o aplicație aruncă o excepție, monitorul logcat prezinta un mesaj care conține link –
uri catre cod. Această caracteristică poate ajuta la repararea erorilor și la îmbunătatirea
funcționarii aplicației.
2.3.4 Folosirea utilitarului DDMS (Dalvik Debug Server Monitor)
Android Studio include un instrument de depanare numit Dalvik Debug Server Monitor
(DDMS) care la randul sau foloseste ADB (Android Debug Bridge) care se bazeaza pe linia de
comanda si ne pe rmite sa comunicam cu o instanta de tip emulator sau un dispozitiv Android
conectat. Faciliteaza o varietate de actiuni ale dispozitivului, cum ar fi instalarea sau depanarea
aplicatiilor. Este un program client server care include trei componente si anume : un client care
trimite comenzi. Clientul ruleaza pe calculatorul de dezvoltare a aplicatiei. Putem invoca un
client din linia de comanda prin scrierea unei comenzi adb. Un daemon care executa comenzi pe
un dispozitiv. Acesta ruleaza ca un proces pe funda l pentru fiecare emulator sau dispozitiv. Un
server, care gestioneaza comunicarea intre client si daemon. Serverul ruleaza ca un proces de
fundal pe calculatorul de dezvoltare.
DDMS ne ajuta la vizualizarea parametrilor dispozitivului, dar si a programelor care ruleaza. Se
poate accesa si din Eclipse, daca dorim. Rolurile cele mai importante ale acestui utilitar este sa
afiseze log -urile dispozitivelor, sa afiseze informatii despre procesele care ruleaza in acel
moment dar si ajuta la controlarea simulatoar elor.
15
Acesta afiseaza informatii de depanare si pentru simulatoarele care sunt conectate la calculator,
dar si la acele simulatoare pornite.
Logurile, care sunt mesajele importante pe care le ofera DDMS si care apar in panoul LogCat
contin urmatoarele dat e, fiecare fiind afisata pe o coloana:
• Tipul mesajului : I(Information ) care reprezinta mesajul, D(Debug) reprezinta mesajul
util depanarii, W (Warning ) reprezinta mesajul de avertizare, adica anumite exceptii care
nu au o importanta ridicata si nu au un ef ect major asupra unor componente, E (Error)
reprezinta mesajul de eroare, V (Verbose ) reprezinta informatiile extra afisate de catre
programe si care au o prioritate scazuta
• Timpul(Time) reprezinta data si ora cand mesajul a fost scris
• PID reprezinta id -ul unui anumit proces care a determinat procesul
• Tag-ul util pentru filtre, deoarece reprezinta eticheta mesajului
• Mesajul(Message) care reprezinta un mesaj de tip text
Pentru a putea genera loguri putem folosi din clasa ‘Log’ functiile statice sau putem uti liza
mesajele (stdout) catre consola care este standard.
Mesajele de tip logse pot filtra dupa PID si Tag in cazul in care dorim sa urmarim ceva specific,
si nu sa vedem toate mesajele afisate in LogCat. Cu ajutorul panoului de control putem simula
primire a SMS -ului, apelului telefonic sau verificarea conexiunii vocii sau ce date sunt transmise
de catre GPS.
Putem vizualiza ierarhia de view -uri cu ajutorul ‘hierachyviewer’ care atunci cand este pornita
afiseaza o lista cu dispozitivele Android conectate sau alte simulatoare. Avem posibilitatea sa
alegem un dispozitiv si pe ce componenta ruleaza , apasand pe ‘Load View Hierarchy ’. Ierarhia
de view -uri va fi in forma unui arbore cu proprietatile aferente afisate alaturat. Prioritatea
vizualizarii ierarhiei este destul de ridicata deoarece putem face anumite ajustari la realizarea
design -ului.
Din cele mentionate mai sus putem spune ca Android Studio este cel mai rapid mod de a construi
de inalta calitate aplicatii performante pentru platforma Android, inclusiv t elefoane si tablete,
Android Auto, Android Wear si Android TV. Avand in vedere ca este mediul oficial Google,
Android Studio include tot ce ai nevoie pentru a construi o aplicatie, inclusiv un editor de cod,
instrumente de analiza cod, emulatoare si multe altele. Ultima versiune are viteze de a construi
rapid si un emulator rapid cu suport pentru cea mai recenta versiune si servicii Google Play.
Android Studio este construit in coordonare cu platforma Android si suporta toate cele mai
recente API -uri. Cele mai noi caracteristici fiind: Run Instant pentru fiecare dezvoltator care
iubeste a construi cu viteze mai mari si care face modificari si care are posibilitatea de a le vedea
in mod direct. Android Emulator este un nou emulator care ruleaza de 3 ori mai r apid decat
emulatoarele anterioare Android. In comparatie cu optiunea de conectare a unui dispozitv fizic
16
Android, acest emulator include, de asemeanea, Google Play Services incorporate, astfel incat sa
putem testa mai multe functionalitati API. În cele din urmă, noul emulator are noi caracteristici
bogate pentru a gestiona apeluri, bateria, rețea, GPS și multe altele. Previzualizare GPU
Debugger care este dedicat celor în curs de dezvoltare jocuri sau aplicații bazate pe OpenGL ES
bazate,se poate vedea fieca re cadru și starea GL cu noul debugger GPU. Se poate analiza si
fluxul GPU de pe dispozitivul Android.
IntelliJ 15 Update – Android Studio este construit pe platforma de codificare de clasă mondială
Intellij.6
CAPITOLUL 3. ANDROID INTERFATA GRAFICA – XML
In cadrul aplicatie o parte importanta o reprezinta interfata grafica care se scrie separat de
codul aplicatiei. Aceasta cuprinde elementele care afiseaza informatiile pentru utilizatorul
aplicatiei. Interfata grafica se poate declara in doua moduri:
Decl ararea elementelor UI in XML
Instantierea obiectelor de tipul componentelor direct in codul sursa. Aplicatia poate creea obiecte
View si ViewGroup pentru manipularea programatica.
Avantajul declararii elementelor UI intr -un fisier cu extensia .xml in dire ctorul res/layout este
usurinta si lizibilitatea cu care se poate intretine codul pe viitor.
Cele mai utilizate containere Android sunt: LinearLayout, RelativeLayout, TableLayout si
ScrollView.
3.1 LinearLayout
Orien tarea sa indica daca va arata ca s i rand sau coloana prin se tarea valorii ‚horizontal’
sau ‚vertical’ pentru prorietatea android: orientation. Orientarea se poate modifica in momentul
rularii prin apelarea metodei setOrientation (). Este obligatoriu sa declaram atributele android:
layout_w idth si android: layout_height. Valorile utilizate pentru aceste proprietati pentru
6 https:/ /developer.android.com/studio/workflow.html
https://developer.android.com/studio/profile/investigate -ram.html
http://android.rosedu.org/2015/laborator -02-structura -android -depanare
http://www.androidauthority.com/develop -apps-for-android -rather -than-ios-607219/
17
definirea inaltimii si lungimii pot fi de o dimensiune declarata de noi, ca de exemplu 100px, sau
‚wrap_content’ insemnand ca elementul UI va avea marimea sa naturala in fu nctie de continut,
‚fill_parent’ care va face ca widgetul sa ocupe tot spatiul parintelui care este disponibil.
Proprietatea android: layout_weight care poate avea o valoare (1,2,3…) este utilizata pentru a
aloca o anumita proportie de spatiu in functie de valoarea atribuita, alocata widgetului respectiv
din spatiul disponibil.
3.2 Relative Layout
Plaseaza widgeturile pe baza relatiei dintre ele in container si containerul parinte. Anumite
proprietati XML(boolean) care ajuta la pozitionarea widgetului in concordanta cu parintele sunt:
android: layout_alignParentTop, android: layout_alignParentBottom, android:
layout_alignParentLeft, android: layout_alignParentRight, android: layout_centerHorizontal,
android: layout_centerVertical, android: layout_centerIn Parent. Proprietati care se folosesc
pentru pozitionarea unui widget in concordanta cu un alt widget, ca de exemplu android:
layout_above, android: layout_below, android: layout_toRightOf etc. Pentru a putea utiliza
notatia Relative in proprietati trebuie in mod consistent sa adaugam identificatory tuturor
elementelor carora ne adresam. Sintaxa este: @+id/…
3.3 Table Layout
Permite pozitionarea widget -urilor într-o grilă realizată din rânduri și coloane
identificabile. Coloanele se pot micșora sau extinde pentru a se adapta conținutului lor.
TableLayout funcționează împreună cu TableRow. Numarul de coloane este determinat de
Android. Chiar si asa un singur widget poate ocupa mai mult de o coloana incluzand proprietatea
android: layout_span, indicand numarul de coloane pe care widgetul se poate extinde. O alta
proprietate definitorie pentru acest layout este android: stretchColumns=” … ” dacă conținutul
este mai restrâns decât spațiul disponibil.
18
3.4 ScrollView Layout
Utilizat atunci c ând avem mai multe date decât ceea ce se poate afișa pe un singur ecran.
Acesta oferă de defilare al datelor. În acest fel, utilizatorul
poate vedea doar o parte interfata cu date la un mom ent dat, iar restul este disponibil
prin derulare.7
3.5 Cum functioneaza Java si Android impreuna?
Java este un limbaj de programare orientat pe obiect. Acest lucru înseamnă că folosește
conceptul de obiecte de programare reutilizabil. Java este un limbaj ca re ne permite să scriem
cod o dată si care poate fi utilizat din nou. Acest lucru este foarte util, deoarece ne economisește
timp și ne permite să utilizam codul altor persoane pentru a efectua anumite sarcini.
In Android este nevoie sa scriem si propriul nostru cod in Java, dar de asemenea ne folosim de
codul Java din Android API. Codul nostru compilat impreuna cu alte resurse este plasat intr -o
multime de fisiere ca si pachet Android, sub denumirea de ‘APK’
Android Studio este un mediu de dezvoltare integ rat (IDE), care are grija de toate complexitatea
de compilare a codului nostru și face legătura dintre JDK și API -ul Android. Odată ce am instalat
JDK și Android Studio, putem face tot ceea ce avem nevoie în interiorul acestei aplicații.
Ori de câte ori vom crea o nouă aplic ație Android, vom alege un nume unic, cunoscut ca un
pachet. Pachetele sunt adesea separate în subpachete, astfel încât acestea să poată fi grupate
împreună cu alte pachete similare. Ne putem gândi pur și simplu la acestea ca foldere și
subfoldere. Toate pachetele pe care API -ul Android le face disponibile pentru noi sunt ca si niste
cărți care conțin cod, dintr -o bibliotecă. Anumite pachete Android comune, includ următoarele:
android graphics; android database; android. view. animation. Sunt aranjate si de numite sugestiv
pentru a fi cat mai evident posibil ceea ce contin. Aceste pachete contin clase.
O clasă va fi aproape întotdeauna în propriul sau fișier, cu același nume ca și clasă, și cu extensia
.java. In Java, in continuare putem rupe in continuare c lasele noastre in sectiuni care efectueaza
diferite actiuni pentru clasa noastra. Aceste sectiuni fiind cunoascute sub denumirea de metode.
Acestea sunt, de cele mai multe ori, metodele din clasa pe care o vom folosi pentru a accesa
funcționalitatea oferit ă în cadrul tuturor acelor milioane de linii de cod. Noi nu avem nevoie
pentru a citi codul. Trebuie doar să știm ce clasă face ceea ce avem nevoie, in care pachet este, și
care metode din cadrul clasei ne dau exact rezultatele.
7 Victor Matos, ‘Android Basic XML Layouts’, © 2008‐2009 CommonsWare, LLC. , p.2 -p.33
19
Un Activityclass este o cla sa speciala Java și fiecare aplicație Android trebuie să aibă cel puțin
una. Este partea codului atunci cand aplicația noastră este lansata de către utilizator, iar acest
lucru se ocupă, de asemenea de orice interacțiune cu utilizatorul. Exista in Android Studio si
diferite șabloane gata făcute ale codului de clasă de activitate, în scopul de a oferi
programatorilor un start rapid atunci când cream diferite tipuri de aplicații. Pe masura ce
incepem de la zero, opțiunea cea mai potrivită este Activity Blank.
Diagrama următoare prezintă o reprezentare a API -ului pentru Android. Putem vedea structura
codului, cu toate că vom avea cel mai probabil, doar un singur pachet pentru o aplicație. Desigur,
din cauza naturii orientate spre obiect de catre Java, vom folos i piese selective din acest API. De
asemenea, fiecare clasă are propriile sale date distincte. De obicei, în cazul în care dorim sa
facem acces la datele într -o clasă, trebuie să aibă un obiect al acelei clase
Activitatea Numele ( ‘Activity Name’) este nu mele clasei
care va conține codul nostru.
Layout -urile Android UI sunt de obicei definite într -un
fișier text XML separat, nu impreuna cu codul Java.
‘Package declaration’ contine numele pachetului care il
alegem la crearea proiectului. Fiecare fisier Java pe care
il alegem il va avea declarat deasupra codului. Unde sunt
liniile de cod care incep cu ‘import’ se fac importurile
anumitor clase. Putem importa clase si ulterior atunci
cand dorim sa imbunatatim aplicatia.
Daca ne uitam intr -unul din multitudinea de fisiere cu
extenisa’.xml’ primul lucru pe care il obeservam este
eticheta ‘RelativeLayout’, care este un element de interfata, care este utilizat pentru a incadra alte
parti ale in terfeței de utilizare. Atunci cand adaugam un nou element UI, intotdeauna incepem cu
‘<’ urmat de numele elementului. Codul care urmeaza dupa defineste proprietatile acelui element
pe care il avem. In XML putem avea proprietati ca si ‘layout_height’,
’padd ingRight’,’paddingTop’,’paddingBottom’. Proprietile pentru ‘RelativeLayout’ se vor
incheia la primul simbol ‘>’. Codul </RelativeLayout> marcheaza sfarsitul pentru
RelativeLayout. Orice intre acest simbol’>’ si </RelativeLayout > este considerat copil al ac elui
element.
În programare, aceasta este întotdeauna o idee bună a scrie comentariile din belșug printre codul
scris.
Ne putem concentra pe punctele de vedere de design pe care Android Studio ne oferă:
20
• Bara de meniu, ca si in cazul a mai multor aplicatii, putem ajunge la aproape orice
optiune de aici.
• Bara de inst rumente, de la care se poate avea acces la una dintre numeroasele pictograme
de lansare rapidă. De aici, unele dintre cele mai frecvent utilizate opțiuni pot fi accesate
cu un singur clic.
• Bara de navigare. Ea ne arată locația fișierului care este deschis în prezent în fereastra de
editare in cadrul proiectului nostru și ne permite să navigam rapid într -un fișier sau un
folder.
• Filele editor. Pot face clic pe o filă pentru a vedea conținutul său în fereastra editorului.
Există mai multe fișiere în proiectul nostru decât sunt afișate în filele editor. Putem
adăuga un fișier la filele editor făcând dublu -clic pe ele în proiect explorator.
• Editorul unde ne vom petrece cea mai mare parte a timpului nostru. Fereastra editorului
se transformă într -un mini -studio de design. Și, de asemenea, efectuează alte transformări
sensibile la context pentru alte tipuri de fișiere.
Consola este un element principal in Android Studio, care cuprinde urmatoarele tab -uri:
• Logcat: acesta este locul în care erorile, va apărea ieșire a Log, și alte informații utile.
• Logurile ADB: aceasta este ca o consolă virtuală în cazul în care putem executa din linia
de comandă.
• Memoria: se face clic această filă atunci când aplicația rulează pentru a vedea un grafic
de utilizare a memoriei aplica ției. Putem folosi această filă pentru a căuta vârfuri
neașteptate în utilizarea de memorie și de a încerca și de a face aplicațiile noastre mai
eficiente in memorie.
• CPU: Accesam această filă atunci când aplicația rulează pentru a vedea graficul de
utiliz are a procesorului aplicației. Ajuta la imbunatatirea performantei aplicațiile noastre
pentru a fi mai eficiente.
Există încă patru file in partea de jos. Dacă facem clic pe una dintre aceste file, fereastra Android
schimbă numele ferestrei sau împarte fer eastra curentă în două. Aici este ceea ce se poate face cu
cele patru file care se află sub fereastra Android:
• TODO: arată comentariile TODO răspândite pe întreg codul proiectului. Acest lucru este
cu adevărat util;
• Android: aceasta ne duce înapoi la ferea stra Android și cele patru file am mentionat
anterior.
• Terminal: puteți utiliza acest lucru pentru a naviga in sistemul de operare și de a face tot
ce se poate face dintr -o fereastră consolă (DOS).
• Mesaje: după cum sugerează și numele, putem primi mesaje d e eroare de sistem și în
această fereastră.
21
Alte elemente ale consolei sunt cele doua elemente din partea stanga jos a programului, si
anume: jurnalul de evenimente/Event Log si consola Gradle/Gradle Console
Imediat sub cele două este bara de stare. Atunci când Android Studio este ocupat de a face ceva
ne va anunța aici.
De fiecare dată când Android Studio completează un eveniment important, este conectat la
jurnalul de evenimente. In cazul in care nu ne amintim pașii pe care i -am luat până atunci sau
dacă un anumit proces a fost finalizat cu succes, putem verifica aici.
Gradle este un sistem constructiv. Android Studio a utilizat Gradle pentru a automatiza procesul
de transformare a fișierelor din proiectul nostru într -o aplicație care poate fi rulata pe u n
dispozitiv. Această consolă permite să dea instrumentului Gradle câteva comenzi și să vedem
răspunsul.
Fereastra de paleta/Pallete contine zeci de diferite elemente de design pe care le putem folosi.
Acestea sunt împărțite în categorii, si anume widget -uri și layout -uri.
Layout -urile sunt aspecte după cum sugerează și numele lor, folosite pentru aranja elementele
dintr -un cadru. Ceea ce este esențial, cu toate acestea, este modul în care diferite aspecte sunt
mai potrivite pentru anumite situații. In plus , putem utiliza aceleași widget -uri pe diferite tipuri
de layout -uri, precum și codul XML care va fi generat poate varia destul de mult. Trebuie doar să
fim conștienți de diferitele situații adaptate fiecărui tip de aspect.
Widget -urile: sunt cele mai fre cvent utilizate elemente de pe paletă. De obicei, vor exista mai
multe widget -uri conținute într -un aspect. Widget -urile sunt parte din aspectul pe care utilizatorul
il va vedea cel mai des și va interactiona, ca de exemplu buton și widget -uri PlainTextVie w.
Câmpurile text sunt ca si PlainTextView din categoria Widgets, dar sunt foarte specifice tipului
de text care sunt cele mai potrivite și care sunt cel mai des utilizate atunci când utilizatorul
interacționează efectiv sau modifică valorile. Numele eleme ntelor din categoria text Fields au
nume care fac aluzie la utilizarea lor probabilă.
Containere sunt ca machete cu un anumit scop. De exemplu, Radio Groupcontainer va
avea mai multe elemente de buton radio din categoria widget. Containerul ScrollView va
organiza o grămadă de alte elemente și permite utilizatorului pentru a defila prin ele.
VideoView este un mod rapid și ușor pentru a permite utilizatorului să aibă un player video
complet funcțional cu foarte puțină codificare.
De asemenea exista elemente p entru data si ora, care se pot folosi in aplicatie sau elemente
avansate, ca de exemplu Surface View, NumberPicker, TextureView.
Elemtele Personalizate/Custom sunt acele blocuri constructive ale elementelor de aspect
specializate. Fragment este, probabil, cel mai puternic și versatil din toate elementele de aspect.
Aspectul de previzualizare/Layout preview este locul unde facem examinarea. Putem comuta
între peisaj și portret, refresh sau zoom previzualizare, și schimbarea dispozitivului virtual.
22
Arborele de componente. Pe parcurs ce layout -ul noastru poate deveni mai complicat, cu
elemente de aspect imbricate în interiorul altor elemente de layout -uri și widget -uri peste tot,
codul XML poate deveni greu pentru navigare. Componenta Arborelui ne permite să v edem
structura, precum și elementele individuale ale design -ului nostru. Ne ofera si posibilitatea de
extindere, restrângere, glisare sau mutarea la o anumita sectiune a codului XML.
CAPITOLUL 4. Configurarea si utilizarea widget -urilor
4.1 Dimensionar ea folosind pixeli independenti
Widget -urile sunt toate elementele UI sub rubrica Widgets. Unele widget -uri au
proprietăți unice, dar există o mulțime de proprietăți care sunt comune. Widget -urile au
proprietăți pe care fie le putem seta în XML sau in fer eastra de Proprietăți.
Setarea dimensiunii widget -ului poate depinde de o serie de proprietăți și contextul în care
acestea sunt utilizate. Android utilizează o densitate de pixeli independenți sau dp ca unitate de
măsură. Modul în care funcționează este p rin calcularea mai întâi a densitatii pixelilor de pe
dispozitiv a unei aplicații care rulează. Putem calcula prin împărțirea densitatii rezoluției
orizontale a dimensiunii orizontale, în inch, a ecranului. Acest lucru se face tot on -the-fly, pe
dispozitiv ul pe care aplicația se execută. Din păcate, densitate de pixeli independenți este doar o
parte a soluției pentru ca aplicațiile sa arate foarte bine pe o gamă de diferite ecrane.
Putem schimba înălțimea și lățimea unui widget în mod direct, prin adăugarea de cod pentru
proprietățile sale inaltime si latime. În mod alternativ, putem folosi fereastra de proprietăți și
adaugam valorile in casetele de editare corespunzătoare.
4.2 Dimensionarea folosind pixeli scalabili
O altă unitate de măsură dependentă de dispozitiv, utilizat pentru dimensionarea
fonturilor Android sunt pixelii scalabili sau sp. Este utilizat pentru fonturi. Calculul extra pe care
un dispozitiv Android il va lua in considerare atunci când se decide cât de mare va fi fontul,
bazat pe valoare a de sp utilizati, fiind propriile dimensionari ale fontului de catre utilizator.
23
4.3 Folosirea padding -ului si a marginii
Padding -ul este spatiul dintre coltul widget -ului si continut.
Marginea este spatiul dintre care este lăsată între alte widget -uri, inclusiv alte widget -uri.
Padding -ul afectează numai widget -ul în sine, dar marginea poate afecta și alte widget -uri în
layout sau putem specifica valori diferite pentru margine sau paddi ng sus, jos, margine stanga,
margine dreapta. Devine evident că modul în care proiectam layou -ul noastru este extrem de
flexibil. Specificarea valorilor este optionala, și o valoare de zero, se va presupune dacă nu se
specifică nimic. Putem alege, de aseme nea mentionarea unor valori pentru padding sau margine
doar pentru anumite pozitii si nu pentru toate.
4.3 Folosirea proprietatii’ layout_weight’
Se referă la spatiul dintre elementele UI. Așa că, pentru layout_weight să fie utilă, avem
nevoie de a atribu i o valoare proprietății layout_weight pe două sau mai multe elemente. Acest
lucru este util mai ales pentru divizarea spațiului pe ecran între elementele UI în cazul în care
dorim spațiul pe care îl ocupă să rămână același, indiferent de dimensiunea ecran ului. Cu ajutorul
layout_weight împreuna cu unitățile de sp și dp putem face un aspect foarte simplu și flexibil.
Putem folosi numere întregi, procente, precum și orice alt număr pentru a da valoare proprietății
layout_ weight, și atâta timp cât acestea su nt una în raport cu cealaltă vor realiza, probabil, efectul
pe careil dorim. Layout_weight funcționează numai în anumite contexte.
Cu ajutorul gravityGravity poate fi prietenul nostru și pot fi folosite în multe feluri în layout
noastre. Ea ne ajută să afe cteze poziția unui widget prin mutarea într -o anumită direcție; așa cum
a fost a fi acționat prin gravitație. Cel mai bun mod de a vedea ce greutate poate face este de a
lua o privire la un exemplu de cod și imagini.
4.4 Folosirea proprietatii ‘gravity’
Se poate folosi in diferite moduri. Ne ajuta sa modificam pozitia a unui anumit widget intr-o
anumita directie asa cum dorim.
Alte proprietati mai des utilizate in Android Studio sunt: background, textColor, alignment,
typeface, visibility si shadowColor.
24
4.5 Fazele unei aplicatii Android
Sistemul Android are mai multe faze, in care o aplicatie se poate afla la un moment dat.
În funcție de tipul faza, sistemul Android determină modul în care aplicația este văzută de către
utilizator. Android are aceste faze, astfel încât aceasta poate decid e care aplicatie este în curs de
utilizare și pentru a putea aloca cantitatea corectă de resurse, cum ar fi memoria și puterea de
procesare. Permite, de asemenea, si dezvoltatorilor de aplicații interacționarea cu aceste faze.
Fiecare aplicatie de pe un di spozitiv Android este inrtr -una dintre urmatoarele faze: creare,
pornire, reluare, rulare, pauza.
Mai jos am descris pe scurt activitatea fiecarei metode:
• ‘onCreate’este executată atunci când se creează activitatea. Aici vom obține totul gata
pentru aplica tie, inclusiv interfața de utilizare (cum ar fi apelarea setContentView),
grafică și sunet.
• onStart este executată atunci când aplicația se află în faza de pornire.
• onResume se execută după onStart dar poate fi, de asemenea, introdusa si în cazul în care
activitatea noastră este reluată după ce a fost întreruptă anterior. Am putea reîncărca
datele utilizatorului salvate anterior din momentul în care aplicația a fost întreruptă,
probabil printr -un apel telefonic sau utilizatorul a executat o altă aplicație.
• onPause se executa atunci când aplicația este oprită temporar. Aici am putea salva datele
nesalvate care ar putea fi reîncărcate în onResume.
• onStop se referă la faza de oprire. Acest lucru este în cazul în care ne -am putea anula tot
ceea ce am făcut în o nCreate, cum ar fi eliberarea de resurse de sistem sau scrierea de
informații într -o bază de date.
• onDestroy este atunci când activitatea noastră este în cele din urmă distrusă . Nu există
nici o cale de întoarcere în această fază. Aceasta este ultima noast ră șansă de a desființa
aplicația noastră într -o manieră ordonată. Daca ajungem in aceasta faza, cand pornim
aplicatia din nou vom trece din nou prin fazele initiale.
Aceste metode pot fi suprascrise.
Numele metodelor corespund metodelor ciclului de viață și fazelelor de mai sus. Toate
declarațiile de metode sunt precedate de linia de cod @Override.Prima linie de cod în interiorul
fiecărei metode este super. on. Ceea ce se intampla este ca Android solicită metodele noastre în
diferite momente.
@Override in dică faptul că, cuvântul cheie de suprascriere a acestor metode suprascrie versiunea
originală a metodei, care este furnizata ca parte integranta a API -ului Android.
25
Sintaxa ‘ super. on ’, care este prima linie de cod în cadrul fiecăreia dintre metodele de
suprascriere, solicită apoi aceste versiuni originale ale Androidului.
In concluzie nu trecem peste aceste metode originale, în scopul de a adăuga propriul cod, noi le
numim, și de asemenea, codul lor este executat.8
CAPITOLUL 5. SQLite
5.1 Despre SQLite
SQLite este o bibliotecă care implementeaza un motor de baze de date SQL si care nu
necesita configurare sau administrare. Codul pentru SQLite este public și liber pentru a fi utilizat
în orice scop, comercial sau privat. SQLite este baza de date cel mai des folosit în lume in
aplicatii destul de variate, chiar si in aplicatii de nivel foarte inalt, avand un cod sursa comentat si
care ofera o acoperire majora prin teste.
SQLite este un motor de baze de date SQL încorporat. Spre deosebire de cele mai multe alte baze
de date SQL, SQLite nu are un proces server separat. SQLite citește și scrie în mod direct pe
fișierele de pe disc. O bază de date completă SQL cu mai multe tabele, indici, declanșatoare și
view -uri, este conținută într -un singur fișier de pe dis c. Formatul de fișier de bază de date este
cross -platform avand posibilitatea să copiem în mod liber o bază de date între sistemele pe 32 de
biți și pe 64 de biți sau între arhitecturi. Aceste caracteristici fac SQLite o alegere populară ca un
format de fi șier de tip Application. SQLite nu este un înlocuitor pentru Oracle, ci ca un înlocuitor
pentru fopen ().
SQLite este o bibliotecă compactă. Cu toate caracteristicile activate, dimensiunea bibliotecii
poate fi mai mică decât 500KiB, în funcție de setările de platforma țintă și setarile
compilatorului. În cazul în care caracteristicile opționale sunt omise, dimensiunea bibliotecii
SQLite pot fi reduse sub 300KiB. SQLite poate fi, de asemenea, făcut pentru a rula într -un spațiu
minim(4KiB) și foarte puțin hea p (100KiB), ceea ce face o alegere populara pentru SQLite ca
motor de baze de date cu memorie limitata pentru gadget -uri, cum ar fi telefoanele, playere MP3
si PDA -uri. Există un compromis între utilizarea memoriei și viteza. Cu cat are mai multa
8 http://android.rosedu.org/2015/laborator -02-structura -android -depanare
http://www.androidauthority.com/develop -apps-for-android -rather -than-ios-607219/
http://blog.venturesity.com/why -learn -android -programming -in-java
http://www.bestprogramminglanguagefor.me/why -learn -java
http://www.cnet.ro/2012/12/21/o -introducere -in-java-orientata -spre-aplicatii -pentru -android/
26
memorie S QLite se execută, în general mai rapid. Cu toate acestea, performanța este de obicei
destul de buna chiar și atunci cand, cantitatea de memorie este redusa.
SQLite este testat înainte de fiecare lansare și are reputația de a fi foarte de incredere. Cea mai
mare parte a codului sursă SQLite este dedicată exclusiv testării și verificării. O suita de teste
automate ruleaza milioane și milioane de cazuri de testare care implică sute de milioane de
declarații SQL individuale și atinge 100% acoperire pe fiecare ramura. SQLite răspunde cu grație
eșecurilor de alocare de memorie și disc I / O erori. Exista teste speciale care simuleaza
defectiuni ale sistemului, caderi de tensiune. Desigur, chiar și cu toate aceste teste, există încă
bug-uri. Dar, spre deosebire de unele proiecte similare (în special concurenți comerciali) SQLite
este deschis la toate bug -urile și oferă liste de fiecare data cand sunt efectuate modificări ale
codului.
Baza de cod SQLite este sprijinita de o echipă internațională de programatori care lucreaza la
SQLite in mod permanent. Dezvoltatorii continuă să extindă capacitățile SQLite și de a
îmbunătăți fiabilitatea și performanțele sale menținând în același timp compatibilitatea cu
versiunile anterioare, sintaxa SQL, și formatul de fișier de baze de date. Codul sursă este absolut
gratuit pentru oricine care vrea, dar sprijinul profesional este de asemenea disponibil.
5.2 Trasaturile cele mai importante ale SQLite -ului
1.Nu este necesar un server special
SQLite nu are nevoie de un server cu proce s separat sau un sistem special pentru a functiona.
Biblioteca SQLite acceseaza fisierele direct. Spre deosebire de cele mai multe produse RDBMS,
SQLite nu are o arhitectură client / server. Sistemele de baze de date la scară largă au un pachet
de server m are, care alcătuiește motorul bazei de date. De obicei serverul bazei de date consta
intr-o multitudine de procese, care gestioneaza conexiunile client, cache, optimizare interogare și
procesare de interogare.
O bază de date de exemplu în mod obișnuit cons tă dintr -un număr mare de fișiere organizate într –
un singur sau mai mulți arbori de director pe sistemul de fișiere pe server. Pentru a putea accesa
baza de date, toate fișierele trebuie să fie prezente și corecte. Acest lucru poate fi dificil.
Toate aces te componente necesită resurse și sprijin de la calculatorul gazdă. Cea mai buna
practica de asemenea, este ca sistemul gazdă să fie configurat cu un serviciu de utilizator dedicat
conturilor, scripturilor de pornire și de stocare. Din acest motiv și pentr u preocupările de
performanță, se obișnuiește să se dedice un sistem informatic gazdă exclusiv pentru software -ul
serverului bazei de date.
27
Pentru a accesa baza de date, biblioteci software client sunt de obicei furnizate de către baza de
date furnizor. Ac este biblioteci trebuie să fie integrate în orice aplicație client care dorește să
acceseze serverul de baze de date. Aceste biblioteci client oferă API -uri pentru a găsi și a se
conecta la serverul de baze de date, dar si configureaza și executa interogăr i de baze de date și
comenzi.
Figura 1 -1 prezintă modul în care totul se potrivește într -un RDBMS tipic client / server.
Mai jos este o imagine, care reprezinta arhitectura SQLite.Această simplitate face destul de
simpla portarea la SQLite pentru orice mediu, inclusiv telefoane, playere media portabile,
console de jocuri și altele.
Figura 1 -2. SQLite -server cu mai puțina arhitectura.
28
SQLite este proiectat pentru a fi integrate direct într -un executabil. Aceasta elimină necesitatea
unei biblioteci externe și simplifică distribuția și instalarea. Inlătura de asemenea, cele mai multe
probleme a versiunilor sau ca biblioteca client este versiunea compatibila cu serverul de baze de
date. Eliminând serverul impune unele restricții, cu toate acestea. SQLi te este conceput pentru a
aborda necesitățile de depozitare localizate, cum ar fi un server web care accesează o bază de
date locală. Eliminarea serverului impune anumite restrictii. SQLite este conceput pentru a
aborda necesitatile de depozitare localizat e, cum ar fi server web care accesează o bază de date
locală. Acest fapt înseamnă că nu este potrivită pentru situațiile în care mai multe masini client
au nevoie pentru acces la o bază de date centralizată.
2. Configurare zero
Din punct de vedere al util izatorului, SQLite nu necesita instalare si configurare sau anumite
setari speciale. Este destul de practic pentru proiectarea unei aplicatii astfel incat selectarea unui
fisier este singura interactiune pe care clientul o efectueaza.
SQLite impacheteaza î ntreaga bază de date într -un singur fișier. Un singur fișier conține
structura bazei de date, precum și datele reale din toate tabele și indexurile.
Formatul de fișier este cross -platform și poate fi accesat de pe orice mașină. Având întreaga bază
de date într-un singur fișier se poate a creea, copia, sau face o copie de rezervă a imaginii bazei
de date de pe disc. Baze de date întregi pot fi trimise prin email la colegi, postate sau revizuite.
Baze de date întregi pot fi mutate, modificate, și partajate cu aceeași ușurință ca și un document
de procesare de text sau foaie de calcul. Nu există nici o șansă ca o bază de date sa fie corupta
sau indisponibile prin mutarea, stergerea sau redenumirea unui fisier accidental.
3. Acoperire pe toate platformele
SQLit e oferă mai multe caracteristici care nu se găsesc în multe alte sisteme de baze de date. Cea
mai mare diferență notabilă este că SQLite folosește un sistem de tip dinamic pentru tabele.
Motorul SQLite ne permite să punem orice valoare în aproape orice col oană, indiferent de tipul
acestora. Aceasta este o abatere majoră de la sistemele de baze de date tradiționale. În multe
cazuri, sistemul de tip dinamic în SQLite este similar cu cel găsit în limbaje de scripting
populare, care au adesea un singur tip de s calare poate accepta orice de la numere întregi la siruri
de caractere. O altă caracteristică utilă este abilitatea de a manipula mai mult de o bază de date la
un moment dat. SQLite permite o singură conexiune de baze de date pentru a se asocia cu fisiere
de baze de date multiple simultan. Acest lucru permite procesarea instrucțiunilor SQL care
acceseaza mai multe baze de date. Intreaga instanta a bazei de date se afla într-un singur fișier,
care este compatibil pe toate platformele si care nu necesita admi nistrare. O singură bibliotecă
conține întregul sistem de baze de date, care se integrează în mod direct într -o aplicație gazdă.
29
4. Timpul de rulare foarte mic
Constructia implicita este mai mică decât un megabyte de cod și necesită doar câtiva megaocteți
de memorie. Cu unele ajustări, atât dimensiunea bibliotecii și utilizarea memoriei poate fi
redusa semnificativ.
Tranzactiile SQLite permit accesul in conditii de siguranta la mai multe procese sau fire oferind
un mediu de baze de date relationale foarte functional si flexibil, care consuma resurse minime si
care nu creeaza probleme dezvoltatorilor si utilizatorilor.
Dimensiunea mica a codului SQLite face sa fie potrivita si pentru sistemele de operare limitate.
Codul sursa ANSI C tinde spre un stil mai co nservator care ar trebui sa fie acceptat chiar si de
catre cele mai avansate compilatoare.
Scopul unei baze de date este de a păstra datele în siguranță și organizate. Dezvoltarea SQLite
Pentru a menține un nivel ridicat de fiabilitate, procesul biblioteci i de baza SQLite
este testat în mod agresiv, înainte de fiecare lansare.
În totalitate, suitele standard de testare SQLite sunt alcatuite din peste 10 milioane de teste
unitare. Oferă o acoperire de 100%.
Acest nivel ridicat de testare pastreaza numarul de bug-uri relativ scazut. Cele mai multe bug -uri
care scapă sunt legate de performanță. Actualizarea la o noua versiune a SQLite rareori cauzează
probleme de compatibilitate. Acest lucru permite echipei să facă modificări semnificative cu un
risc relativ mi c, redirectionand în mod constant produsul și performanța.
5.3 Tabele
Cea mai comuna comanda DDL este CREATE TABLE. Nu există valori de date care pot
fi stocate într -un bază de date până când un tabel este definit pentru stocarea datelor. La crearea
tabelului se definește numele tabelului, plus numele fiecărei coloane. De obicei se defineste un
tip pentru fiecare coloană, dar atunci cand se utilizeaza SQLite tipurile sunt opționale.
Constrângerile , condițiile și valorile implicite opționale pot fi de asem enea fi alocate fiecărei
coloane. Constrângerile la nivel de tabel pot fi, de asemenea, atribuite, în cazul în care acesta
implică mai multe coloane.
30
Fig. Crearea tabelelor
Nume clare și concise de identificare sunt importante păstrând în același timp scopul lor clar.
La fel ca și proiectarea bazei de date în sine.
Cele mai multe baze de date folosesc tipuri de coloane statice. Aceasta înseamnă că elementele
unei coloane pot stoca numai valori compatibile cu tipul definit coloanei. SQLite utilizeaza o
tehnica dinamica cunoscuta sub denumirea de ‘manifest typing’
Pentru fiecare valoare de pe fiecare rand, se salveaza valoarea cu tipul specific. Acest lucru ne
ofera optiunea sa salvam orice data de orice tip.
În cel mai strict mod, SQLite ofera doar cinci tipuri de date concrete. Acestea sunt cunoscute
ca și clase de depozitare, și reprezint ă diferitele moduri in care SQLite ar putea alege pentru a
stoca date pe disc. Fiecare valoare are una dintre aceste cinci clase de stocare native:
• NULL considerat propriul tip distinct. Un tip NULL nu deține o valoare.
Nuluri literale sunt reprezentate de cuvântul cheie NULL.
• Integer considerat un număr întreg fara semn. Valorile întregi sunt de lungime variabilă,
fiind 1, 2, 3, 4, 6, sau 8 octeți în lungime, în funcție de dimensiunea minimă necesară
pentru a menține specificul valorii.
• Float reprezinta un număr în virgulă mobilă, care stocheaza o valoare de 8 octeți în
Numerele în virgulă mobilă sunt reprezentate de orice serie de cifre care includ un punct
zecimal sau exponent.
31
• Text reprezentand un șir de lungime variabilă, stocat utilizând codificarea b azei de date
(UTF -8, UTF -16BE, sau UTF -16LE)
• BLOB care reprezinta o lungime de bytes ca șiruri de text hexazecimale precedate de un
x. De exemplu, notația x'1234ABCD 'reprezintă un BLOB de 4 octeți.
Valorile de tip text și BLOB SQLite sunt întotdeauna de lungime variabilă. Dimensiunea
maximă a unui text sau valoarea BLOB este limitată de o directivă în timpul compilării. Limita
implicită este exact un miliard de bytes, sau puțin mai mic decât un gigabyte. Valoarea maximă
pentru această directivă este de do i gigabytes.
Având în vedere că elementele coloanelor pot stoca orice tip de valoare, "tip" al unei coloane
este
un concept oarecum înșelător. Mai degrabă decât a fi un tip absolut, la fel ca în cele mai multe
baze de date, un tip coloană SQLite (așa cum e ste definit în CREATE TABLE), devine mai mult
o sugestie decât o regulă. Acest lucru este cunoscut ca un tip de afinitate, și reprezintă în esență
o categorie dorită de tip. Fiecare tip de afinitate are reguli specifice cu privire la ce tipuri de
valori po t fi stocate, și modul în care diferite valori vor fi convertite atunci când sunt depozitate
în coloană. În general, un tip de afinitate va duce la o conversie sau migrarea tipului numai dacă
se poate face fără a pierde date sau precizie.
Fiecare coloană d e tabel trebuie să aibă una dintre cele cinci tipuri de afinități:
• Text
O coloană cu o afinitate de tip text va stoca numai valori de tip NULL, text sau BLOB. Dacă
încercam să stocam o valoare de tip numeric (float sau întreg), acesta va fi convertita în tr-o
reprezentare de tip text, înainte de a fi stocate ca tip de valoare de tip text.
• Numeric.
O coloană cu o afinitate numerică va stoca oricare dintre cele cinci tipuri. Valori cu număr întreg,
float, împreună cu tipuri NULL și BLOB, stocate fără conver sie.
De fiecare dată când o valoare de tip de text este memorata, se face o încercare de a converti
valoarea la un tip numeric (întreg sau float). În cazul în care conversia eșuează, valoarea text este
stocată fără nici un fel de conversie.
• Integer
O coloa nă cu o afinitate întreagă lucrează în mod esențial aceeași cu o afinitate numerică.
Singura diferență este că orice valoare cu un tip plutitor, care nu are o componentă fracționată
vor fi convertite într -un tip întreg.
• Float
O coloană cu o virgulă flotant ă ca afinitate, de asemenea, funcționează în mod esențial la fel ca
afinitatea numerică. Singura diferență este că cele mai multe valori de tipuri de întregi sunt
convertite în valori în virgulă mobilă și stocate ca tip float.
32
• None
O coloană cu afinitate n ula nu are prioritate față de clasa de stocare. Fiecare valoare este stocata
cu tipul prevăzut, cu nici o încercare de a converti nimic.
Din moment ce aceste tipuri de afinitati nu fac parte din standardul SQL, SQLite are o serie de
reguli care încerca sa mapeze tipurile de coloane la tipul de afinitate cea mai logică. Tipul de
afinitate a unei coloane este determinat de tipul declarat al coloanei.
În cazul în care s -a definit un tip de coloană, coloanei nu ii este asociata nici o afinitate.
2. În cazul în care tipul de coloană conține subșirul "INT", coloanei i este data
afinitate întreagă.
3. În cazul în care tipul de coloană conține oricare dintre subșiruri "CHAR", "CLOB," sau
"TEXT"coloanei i este dată afinitatea textului.
4. În cazul în care tipul de c oloană conține subșirul "BLOB ”, coloanei nu i se asociaza nici o
afinitate.
5. În cazul în care tipul de coloană conține oricare dintre subșiruri "REAL", "FLOA," sau
"DOUB" atunci i este dată afinitatea float.
6. În cazul în care nu i se potriveste nici un tip, coloanei i este atribuita afinitatea numerică.
Constrângerile de coloană pot impune limite pe o coloană, cum ar fi negarea NULL (NOT
NULL) sau care necesită o valoare unică pentru fiecare rând (UNIQUE). NULL nu este
considerată o valoare, deci UNIQUE nu implică NULL.Dacă dorim sa pastram date NULL in afara
unei coloane de tip UNIQUE, atunci este nevoie de a marca în mod explicit coloana NOT NULL.În
scopul de a pune în aplicare o constrângere de coloană UNIQUE , un index unic va fi automat creat
peste a cea coloană. Un indice diferit va fi creat pentru fiecare coloană (sau un set de coloane)
marcate UNIQUE.Impunerea unei constrângeri pe o coloană unice poate avea considerente de
performanță.
5.4 Cheile primare
În plus față de aceste alte constrâng eri, o singură coloană (sau set de coloane) pot fi
desemnate
ca PRIMARY KEY. Fiecare tabel poate avea doar o singură cheie primară. În cazul în care o
coloană este marcata atât UNIQUE cat și PRIMARY KEY, va fi creat doar un singur index.
În SQLite, PRIMAR KEY nu implică NOT NULL. Acest lucru este în contradicție cu SQL
standard și este considerat un bug. Ca urmare, este întotdeauna recomandat de a marca în mod
explicit cel puțin o coloană din fiecare PRIMARY KEY ca NOT NULL.
33
SQLite trebuie să aibă o anumită coloană, care pot fi utilizata pentru indicele de stocare de bază
pentru tabel. Coloana actioneaza ca un index. La fel ca multe alte sisteme de baze de date,
SQLite va crea o coloană ROWID ascunsă. Pentru a menține compatibilitatea, SQLite va
recunoaște n umele ca ROWID, OID sau _ROWID_ ca referință pentru coloana radacina.
În cazul în care un tabel include o coloană ca si INTEGER PRIMARY KEY, atunci acea coloană
devine un alias pentru coloana automată ROWID. Avem posibilitatea de a ne referentia în
continu are la coloana respectiva prin ROWID , sau prin numele definit de utilizator. Spre
deosebire de PRIMARY KEY simpla, coloanele INTEGER PRIMARY KEY au constrangere
NOT NULL automata. De asemenea accepta numai valori întregi.
Există două avantaje semnificative ale coloanelor INTEGER PRIMARY KEY. Coloana alias
coloanei ROWID rădăcina tabelului, nu are nevoie de un index secundar. Tabelul se comportă ca
index, oferind căutări eficiente.
În al doilea rând, coloanele INTEGER PRIMARY KEY pot furniza în mod automat
valori unice implicite. Atunci cand inseram un rând fără o valoare explicită pentru RowId (sau
alias ROWID) coloană, SQLite va alege automat o valoare care este una mai mare decât cea mai
mare valoare existentă din coloana. Acest lucru oferă un mijloc ușor de a genera automat chei
unice. În cazul în care se atinge valoarea maximă, baza de date va încerca în mod aleatoriu alte
valori,
în căutarea unei chei neutilizate. Cheile primare de tip numar intreg optional pot fi marcate ca
AUTOINCREMENT. În acest caz, valorile ID generate vor creste in mod constant, impiedicand
reutilizarea unei valori ID de la un rand sters anterior. Dacă valoarea maximă este atinsă, inserții
cu valori automate INTEGER PRIMARY KEY nu mai sunt posibile. Cu toate acestea permite
aproxim ativ 1000 de insertii pe secunda.
În plus față de o cheie primară, coloanele pot fi, de asemenea, marcate ca o cheie externă
FOREIGN KEY. Pot fi folosite pentru a crea legături între rânduri în tabele diferite.
Tabele virtuale pot fi folosite pentru a cone cta orice sursă de date SQLite, inclusiv alte
baze de date. Un tabel virtual este creat cu comanda CREATE TABLE VIRTUAL. Cu toate ca
foarte similar cu CREATE TABLE, există diferențe importante. Tabelele virtuale
nu poate fi create temporar, și nici nu perm it o clauza IF NOT. Pentru a renunta la un
tabel virtual, utilizam comanda normală DROP TABLE.
34
CAPITOLUL 6. JSON
6.1 Despre JSON
Formatul de date JSON ,un acronim în limba engleză pentru JavaScript Object
Notation , este derivat din literali i limbajului de programare JavaScript. Acest lucru face din
JSON un subset limbajului de programare JavaScript. Ca subset, JSON nu posedă niciun caracter
suplimentar pe care JavaScript nu îl are deja. JSON nu este un limbaj de programare, ci, de fapt,
un format de schi mb de date. Acesta este cunoscut ca standardul de transfer de date , utilizat ca
format de date ori de câte ori are loc schimbul de date . 9
JSON, pe scurt, este o reprezentare textuală definită de un mic set de reguli despre cum se
structureaza datele. Spec ificația JSON afirmă că datele pot fi structurate în oricare dintre aceste
variante :
1. O colecție de perechi de nume / valoare
2. O listă ordonată de valori
Diagrama de sin taxă a unei colecții de perechi/ valori in JSON
După cum arată diagrama, o cole cție începe cu utilizarea parantezelor de deschidere ({), și se
termină cu utilizarea brațului de închidere (}). Conținutul colecției poate fi compus din oricare
din următoarele trei posibile căi: calea de sus ilustrează faptul că , colecția poate rămâne li psită de
orice pereche sir / valoare.Calea de mijloc ilustrează faptul că , colecția poate fi cea a unui
singure perechi . Calea de jos ilustrează faptul că după o singură pereche de șir / valoare se poate
adauga orice număr de perechi de șir / valoare, îna inte de a ajunge la sfârșit. Fiecare pereche de
șir / valoare trebuie să fie delimitat a sau separat a de cealalta prin virgulă (,).
Caracterele [ ] reprezinta un array, iar caracterele { } reprezinta un obiect. Acestea vin direct din
limbajul Javascript.
Important de retinut este faptul ca, cheia unui membru trebuie să fie cuprinsă în ghilimele duble.
Cheia unui membru și valoarea sa trebuie să fie separata de către cele doua puncte(:). Valorile
null sunt scrise ca si ‚null’.
9 Ben Smith, ‘Beginning JSON’, Appress © 2015 , p.55 – p.58
35
JSON este caracterizat de simp litate ,viteza, reprezentarea eficienta a datelor, citirea si intelegerea
usoara de catre oameni, care ajuta la transmitrea informatiilor intre limbajul de pe server si cel de
pe partea clientului.Este un instrument mai des folosit decat XML -ul. Datorita ac estui fapt
implementarea acestuia s -a facut posibila in majoriatatea limbajelor de programare, incepand de
la C ++, Java, C#, chiar si Ruby, Perl, Phyton, PHP.
Formatul JSON accepta urmatoarele tipuri de date:
• Numar – de la 0 la 9, fractii, exponent, dubla precizie in format Javascript
• String – trebuie scris intre ghilimele
Sintaxa: var json -nume -obiect = {”string”: valoare,….}
• Boolean – care poate fi adevarat sau fals
Sintaxa: var json -nume -obiect = {string:true/false,….}
• Array – o secventa de va lori cuprinsa intre paranteze drepte [] .Un array poate contine
mai multe obiecte.
Sintaxa: [valoare, ….]
• Valoare – poate fi string, numar, true/false, null etc.
• Obiect – o colectie neordonata de perechi cheie: valoare
• Spatiu liber – se poate utiliza in tre token -uri
Sintaxa: {string: ” ”,…. }
• Null – utilizat pentru stocarea valorilor nule
Deoarece formatul JSON este numai text, acesta poate fi trimis cu ușurință către și de la un
server și utilizat ca format de date de către orice limbaj de p rogramare. JavaScript are o funcție
construită pentru a converti un șir, scris în format JSON, în obiecte JavaScript native:
JSON.parse ()10
Un fișier JSON constă din mai multe componente. Ceea ce definește componentele unui fișier
JSON și descrierea acesto ra sunt: array -ul ([), intr -un fișier JSON, brațul pătrat ([) reprezintă o
10 https://www.w3schools.com/js/js_json_intro.as p
36
matrice JSON; o biecte le ({), intr -un fișier JSON suportul curl ({) reprezintă un obiect JSON ;
Cheia, u n obiect JSON conține o cheie care este doar un șir. Perechi d e cheie / valoare alcătuiesc
obiect ul JSON ; Valoarea, f iecare cheie are o valoare care ar putea fi șir, număr întreg sau dublu
e.t.c.
Pentru parsarea unui obiect JSON, vom crea un obiect de clasă JSONObject și vom specifica un
șir care conține date JSON. Ultimul pas este d e a analiza JSON -ul. Un fișier JSON este alcătuit
dintr -un obiect diferit, cu o pereche de chei / valori diferite e.t.c. JSONObject are o funcție
separată pentru parsarea fiecărei componente a fișierului JSON. Metoda getJSONObject
returnează obiectul JSON. Metoda getString returnează valoarea șirului pentru tasta specificată.
În afară de aceste metode, există alte metode furnizate de această clasă pentru o parsare mai bună
a fișierelor JSON. Aceste metode sunt :
• get (String nume) Această metodă returnează d oar valoarea, dar sub forma tipului de
obiect
• getBoolean (String nume) Această metodă returnează valoarea booleană specificată
• getDouble (String nume) Această metodă returnează valoarea dublă specificată
• getInt (String nume) Această metodă returnează val oarea întregului specificată de tastă
• getLong (String name) Această metodă returnează valoarea specificata
• length () Această metodă returnează numărul de mapări de nume / valori din obiect.
• names () Această metodă returnează o matrice care conține numele d e șir din acest
obiect.11
In org. json exista clasele JSONArray (o secvență densă indexată de valori ),
JSONObject (un set modificabil de mapări de nume / valori), JSONStringer ( implementează
toString () ), JSONTokener ( parsează un șir codificat JSON (RFC 4 627) în obiectul
corespunzător ). Clasa JSONException care indica daca este o problema cu API -ul JSON. 12
JSONArray reprezinta o secvență densă indexată de valori. Valorile pot fi orice mix de
JSONObjects, alte JSONArrays, Strings, Booleans, Integers, Long, Double, sau Null. Valorile nu
pot fi NaNs, infinități sau orice alt tip care nu l -am enumerat mai sus.
JSONArray are același tip de comportament de constrângere ca JSONObject.
JSONObject reprezinta un set modificabil de mapări de nume / valori. Numele sunt șiruri unice,
non-null. Valorile pot fi orice mix de JSONObjects, JSONArrays, Strings, Booleans, Integers,
Long, Double sau NULL.
JSONStringer oferă o modalitate rapidă și convenabilă de a produce textul JSON. Textele au fost
întocmite în conformitate cu regulile sintaxei JSON. Nu se adaugă spații albe, astfel încât
11 https://www.tutorialspoint.com/android/android_json_parser.htm
12 https://developer.android.com/reference/org/json/package -summary.html
37
rezultatele sa poate fi stocate sau trimise mai departe . Fiecare instanță a JSONStringer poate
produce un text JSON.13
Un JSONTokener ia un șir sursă și extrage caractere din acesta. Este folo sit de constructorii
JSONObject și JSONArray pentru a analiza șirurile de surse JSON.
6.2 Maparea între entitățile JSON și Java
In tabelul de mai jos sunt clasificate librariile din Java care se utilizeaza pentru conversia
obiectelor Java in obiecte de t ipuri diferite JSON , dar si in mod invers prin c lasa
org.json.simple.JSONObject.
JSON Java
string java.lang. String
number java.lang. Number
true| false java. lang. Boolean
null null
array java. util. List
object java. util. Map
14
6.3 JSON in com paratie cu XML
• Performanță – în termeni de performanță, JSON este cea mai bună opțiune. Acest lucru
este valabil atât pentru transferul real al datelor, cât și pentru parsarea datelor. Acest lucru
se datorează costurilor reduse necesare pentru formatarea JSON, care nu necesită
structura rigidă a copacilor / nodurilor XML.
• Lizibilitatea – Majoritatea browserelor (adică Chrome, Firefox) au JSON și display
XML construite și ambele sunt bine stabilite. Cu toate acestea, voi menționa că pentru
13
https://docs.oracle.com/cd/E51273_03/ToolsAndFrameworks.110/apidoc/assembler/com/endeca/serialization/js
on/JSONStri nger.html
14 Tutorials Point (I) Pvt. Ltd.,’JSON javascript object notation’, 2017, p.5 -p.15, p.29
38
structuri de da te mai complexe, XML tinde să o afișeze într -un mod mai intuitiv, ceea ce
]mă conduce la al treilea punct.
• Complexitate – în timp ce JSON este proiectat pentru structuri de date rapide și slabe,
XML este construit pentru a gestiona structuri de date de co mplexitate și adâncime
variate. Daca luam în considerare o str uctură de date care are câmpuri, iar acestea au mai
multe straturi profunde (adică un obiect al unei companii care are o listă de obiecte de
clasă care au fiecare câte o listă de obiecte Angajat , fiecare având o listă cu alte date ). In
aceasta situație , poate fi mai dificil prin JSONArray după ce JSONArray încearcă să
acceseze JSONObjectul corect. Aici, având un parser XML, în special unul care este
echipat cu limbi de tranziție, cum ar fi XPATH, poate fi un instrument extrem de puternic
pentru identificarea nod urilor precise pe care le dorim15.
15 https://thinkandroid.wordpress.com/2012/09/10/parsing -json-on-android/
39
CAPITOLUL 7
7.1 Interfata Aplicatiei
Aceasta aplicatie este create pentru testarea si imbunatatirea cunostintelor despre HTML
si CSS atat la nivel incepator, cat si la nivel avansat. HTML este tehnologia fundamental a a ceea
ce vedem intr -un browser web, folosit alaturi de alte tehnologii precum CSS si Javascript.
Nivelul incepator HTML cuprinde intrebari referitoare la structura de baza a unei pagini web ,
taguri, definire antete pentru sectiuni, stiluri de text, subliniere, modificari de text, combinare
proprietati, adaugarea de referinte catre alte pagini web. Nivelul avansat HTML cuprinde
intrebari complexe care extind ceea se ver ifica in primul n ivel
de teste cod, pe langa intrebari despre alte notiuni noi, cum ar
fi sunet, animatie, inserarea unui script, blocuri, span etc.
Capitolul CSS cuprinde intrebari atat la nivel
incepator, cat si la nivel avansat. Avand in vedere ca HTML
suporta formatarea de baza a textului, CSS -ul se utilizeaza
pentru stilizarea, prezentare si formatarea textului. Astfel ca
aceasta aplicatie ajuta la asimilarea si testarea informatiilor
invatate anterior. Nicelul incepator CSS cuprinde intrebari
referit oare la background, proprietati fonturi, pozitionare,
proprietati margini, padding, borduri, proprietati liste etc.
Urmatorul nivel cuprinde intrebari de dificultate mult mai
ridicata referitoare la aspectul paginii, animatie, tipografie,
efecte, CSS3 si a lte concepte.
La rularea aplicatiei ecranul splash se va afisa pentru
cateva secunde. Acesta afiseaza sigla aplicatiei si titlul,
asigurand o experienta placuta utilizatorului la pornirea
aplicatiei android .
Instrumentul folosit pentru construirea aceste i aplicatii mobile este platforma open -source
Android, respectiv Android Studio ca si mediu integrat de dezvoltare. Baza de date folosita este
SQLite care gestioneaza informatia la nivel local, inregistrarea utlizatorilor, intrebarilor si
raspunsurilor pen tru teste, nefiind necesarea conexiunea la un server pentru trimiterea si
preluarea datelor din baza de date. Structura interfetei este construita din mai multe layout -uri
prin intermediul limbajului de marcare XML. Layout -urile salvate in directorul de re surse, in
subdirectorul cu numele de layout efectueaza diferite roluri in cadrul aplicatiei: ecranul splash de
Figura 7.1 Ecranul Splash Logo
40
intampinare a utilizatorului, inregistrarea utlizatorului, autentificarea utilizatorului in cazul in
care are deja un cont creat, afisarea capito lelor pentru teste, afisarea timpului efectuat pentru
teste, revizuirea raspunsurilor corecte si incorecte si afisarea scorului final.
Figura 7.2 Layout Autentificare
Layout -ul pentru autentificarea utilizatorilor activity_logare.xml (figura 7.2) contin e doua casete
text editabile. Prima caseta de text “Nume” pentru introducerea numelui utilizat atunci cand s -a
inregistrat in aplicatie, iar cea de a doua caseta “Parola” este pentru introducerea parolei pentru
contul sau.
Sub cele doua casete d e text exis ta alte doua butoane pe care utilizatorul le poate folosi , respectiv
“Logare” si “Inregistrare”.
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: Specializarea : Informatică [626744] (ID: 626744)
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.
