Programul de Licență: Calculatoare si Tehnologia Informatiei [302240]
Facultatea de Automatică și Calculatoare
Programul de Licență: [anonimizat]:
S.l. dr. ing. Mihai UDRESCU
Timișoara,
2014
Cuprins
Cap. 1. Introducere 4
1.1. Context 4
1.2. Domeniul temei 5
1.3. [anonimizat] 5
Cap. 2. Fundamentare teoretică 7
2.1. Introducere 7
2.2. Structura 7
2.3. Istoria versiunilor 8
2.4. Anatomia aplicatiilor 9
2.4.1. Procese si treaduri 9
2.4.2. Aplicatiile interne 9
2.4.3. Android Manifest.xml 10
2.4.4. Activitati 10
2.4.5. Activitatiile din fundal 10
2.4.6. Starile aplicatiei si durata de viata a cestora 11
2.5. Dalvik DM 13
2.6. Cerintele 13
2.7. Optimizarea fisierelor 13
2.8. Nivelurile API 14
2.9. Testare si depanare 16
2.10. Bazele de date pentru android 16
2.10.1. Bazele de date SQLite 17
2.10.2. Arhitectura SQL 18
2.10.3 Alte baze de date 20
Cap. 3. Descrierea aplicatiei 21
3.1 Introducere…………………………………………………………………………………………………………..21
3.2.Functionalitatile aplicatiei………………………………………………………………………………………21
3.3Interfata cu utlizatorul…………………………………………………………………………………………….22
Cap. 4.Dezvoltarea aplicatiei……………………………………………………………………………………….29
4.1. Imagine generala………………………………………………………………………………………………….29
4.2. Dezvoltare detaliata………………………………………………………………………………………………29
4.2.1. Interfata grafica………………………………………………………………………………………………..29
4.2.2. Serviciul Gogle Maps…………………………………………………………………………………………31
4.2.3. Baze de date……………………………………………………………………………………………………..31
Capitolul 1: Introducere
Cap 1.1 Context
Folosirea smartphoneurilor si a tabletelor este intr-o creste si companiile si coropratiile trebuie sa se asigure ca sunt in rand cu schimbarea care o aduc aceste dispositive consumatorului.
In general este o crestere constanta a [anonimizat] 60 de ani care nu sunt tocmai fanul acestor dispositive.
In categoriile de varsta de pana in 45 de ani pentru femei si pana in 55 pentru barbati exista o pondere de peste 50% al telefoanelor smart.
[anonimizat] a 80% si o cifra de 1 miliard de dispositive annual si cu o crestere estimativa a numarului de dispositive cu pana la 40% in 2018
Figura 1.Numarul telefoanelor vandute si market share in functie de sistemul de operare
Fiecare sistem de operare pentru dispozitivele mobile vine cu propriul market de aplicatii.
Tabelul 1-[anonimizat] 1.2 [anonimizat] o multime de aplicatii impartite pe mai multe categorii, in present Google Play are in jur a 1 milion 200 de mii de aplicatii in timp ce rivalul sau App Store se situeaza tot cam la aceasi valoare.
Aplicatiile sunt impartite dupa cum spuneam pe genuri, cum ar fi :
Carti:in aceasta cartegorie o sa gasim aplicatii cum ar fi:dictionare, carti pentru gatit
Comunicare:aplicatiile folosite pentru comunicare ajuta oamenii sa comunice intre ei de la distant, exemplu de aplicatie ar fi :Whatasapp,Facebook messenger,Skype
Jocuri:Acest tip de aplicatii sunt pentru divertisment, sunt folosite in general de publicul tanar si la randul ei aceasta categorie ii impartita in mai multe categorii cum ar fi: Sports,Arcade,Familiy,Racing,etc.
Muzica:in aceasta categorie gasim aplicatii care ne ajuta sa gasim si sa ascultam melodiile dorite
Sanatate si fitness: In aceasta categorie descoperim aplicatii care ne dau informatii despre medicamente, reactiii adverse, informatii despre greutatea ideala, eplicatii pentru practicarea fitnessului.
Vreme:aplicatiile de vreme ne ajuta sa ne informam asupra prognozei meteo in diferite localitati
Shopping:aplicatiile de shoping is destinate cumparaturiloe online, exemple de aplicatii: ebay.com, olx.ro,amazon.com
Lifestyle:aplicatiille din aceasta categorie sunt in general applicatii de toate felurile si de toate categoriile,aplicatii de transport,aplicatii de moda, aplicatii de cumparaturi,aplicatii ale localurilor.
Capitolul 1.3 Tema propriu-zisa
Aplicatia creeata de mine este o aplicatie pentru ultilitate deoarece utilizatorii ei pot face o rezervare la un restaurant intr-un timp rapid incluzand alegerea preparatelor care doresc a fi comandate astfel incat sa nu mai fie nevoite sa astepte mancarea atunci cand sosesc in restaurantul cu pricina
Aplicatia este foarte utila unui restaurant dar si clientului deoarece restaurantul dar si clientul nu mai pierde un timp mort de aproximativ o ora pana mancarea clientului este servita
Aplicatia pune la dispozitie cateva facilitati in scopul unei rezervari perfecte,precum:
Clientul poate selecta ora si ziua in care acesta doreste sa rezerve o masa
Clientul poate selecta numarul de persoane pentru care se doreste a face rezervarea
Clientul este nevoit sa-si treaca numele si prenumele si un numar de contact pentru a verifica daca cumva comanda nu este falsa.
Clientul poate avea optiunea si de comanda mancarea doar cand ajunge in restaurant si chiar poate sa specifice daca doreste cva in plus
Aplicatia mai dispune si de localizare prin Google Map a restaurantului,prin aceasta restaurantul poate fi localizat foarte usor
Clientul are posibilitatea vederii intregii liste cu tot ce a dorit sa comande inainte de a trimite rezervarea.
Capitolul 2 Fundamentare Teoretica
2.1 Introducere
Cu cat telefoanele smart cat si tabletele devin tot mai populare ,la fel si sistemele de operare pentru acestea devin tot mai importante.Android este un sistem de operare pentru aparate care consuma putin current si au tot felul de aparatura hardware precum GPS,camera, sensor de proximitate,wifi,3g si touchscreen.La fel ca si celelalte sisteme de operare,Android permite aplicatiilor sa foloseasca hardware-ul dispozitivului.
Spre deosebire de celelalte sisteme de operare precum iOS sau WP, aplicatiile Android sunt scrise in Java si ruleaza in masini virutale.Android foloseste masina virtual pe nume Dalvik care executa propriul cod de octeti.Dalvik este o component de baza deoarece toate aplicatiile si toate schitele de aplicatii sunt scrise in java si executate de catre acesta.Ca si celelalte platforme ,aplicatiile Android pot fi obtiunte dintr-un loc comun tuturor numit Google Play.
Platforma o fost create de catre Android Inc., care o fost cumparata de Google si lansata ca si Android Open Source Proiect(AOSP) in 2007.Un grup de 78 de companii or format Open Handset Alliance care o fost dedicate pentru a dezvolta si distribui Android.
Dezolvtarea Androidului s-o facut in pasi rapizi,aparand cate o versiune noua la cateva luni.Aceasta o condus la o situatie in care informatiile despre platforma devin in scurt timp foarte invechite facand astfel ca articolele si cartile sa tina cu greu pasul cu dezoltarea
2.2 Structura
Arhitectura Androidului poate vi divizata pe 5 niveluri:Linux modificat si(Linux kernel) ,biblioteci native(native libraries),android runtime,framework layer si aplicatii.(Figura 2).
Obiectele verzi sunt scrise in C/C++,cele albastre sunt scrise in Java si rulate in Dalvik.Nucleul in folosinta este Nucleu de Linux 2.6 modificat pentru nevoile necersare de consum de curent, memorie si mediul de rulare.
Cum dispozitivele cu Android au un general memorie mica si un procesor cu consum scazut de curent,bibliotecile pentru procesor si taskurile pentru GPU sunt compilate pe dispozitiv folosind cod nativ.Bibiliotecile de baza cum ar fi libc sau libm au fost dezvoltate in mod special pentru consumul mic de memorie dar si pentru ca o fost o problema de licentiere cu Android.
Nivelul Android Runtime este alcătuit din mașina virtuală Dalvik ( DVM ) și din bibliotecile de nucleu, cum ar fi Java. Aceste biblioteci de nucleu furnizează majoritatea funcționalităților disponibile in Android.
Figura 2.Straturile Androidului
Nivelul Cadrul Aplicatiei este scrisa in java si face abstractie de bibliotecile ce stau la baza si de capacitatea lui Davik asupra aplicatiilor.Aplicatiile Android ruleaza in propria cutie Dalvik VM si poate contine mai multe componente precum: activitati,servicii,receptoare de transmisie si provideri de continut.Componentele pot sa interactioneze cu alte componente din aceasi sau din alta aplicatie prin intentie.
2.3 Istoria Versiunilor
Android este o platforma tanara si dezvoltarea ei este foarte rapida,versiuni majore aparand la cateva luni.Urmatoarea lista ne arata principalele versiuni de Android si schimbarile acestora.
Februarie 2009 –versiunea initiala
1.5 Cupcake –aprilie 2009-se upgradeaza interfata grafica pentru cele mai importante elemente,aplicatii bazate pe acceleorometru,soft de tastatura pe ecran,inregistrare video si redare, Bluetooth.
2.0 Eclair –Octombrie 2009,schimbari majore de interfata grafica, update la Bluetooth ,arhitecutra noua la partea media.
2.2 Froyo-Mai 2010 –optimizari de performanta,internet tehtering si crearea de spoturi WiFI,suport pentru Adobe Flash.
2.3 Gingerbread-Decembrie 2010-suport nativ pentru senzori noi, suport pentru NFC,suport nativ pentru camera frontala si camera din fata.O fost unul dintre cele mai de succes versiuni.
4.0 Ice Cream Sandwich-Ocbombrie 2011-a folosit pentru prima data nucleul Linux 3.0.1 ,inregistrare 1080 pentru versiunile stock.
4.1-4.3 Jelly Bean-Iulie 2013, interfata cu utilizatorul mult mai rapida,suporta rezolutie 4k.
2.4 Anatomia Aplicatiilor
Functionarea aplicatiilor este unul din scopurile principale ale sistemelor de operare si Android ofera cateva mijloace pe diferite niveluri pentru a compune executa si gestiona o aplicatie.Pentru acesta el, face diferenta clar intre termeniii proces,task si tread.
2.4.1 Procesese si treaduri
Contine cinci tipuri de procese distinse pentru a controla comportamentul sistemului si aplicatiile pe care acesta le executa.Diferitele tipuri de procese au un grad diferentiat de importanta in nivele acestea avand o ordine strica.Importanta ierarhica pentru aceste procese este in felul urmator:
Foreground(primul-plan)-un proces ce ruleaza o activitate,un serviciu ce furnizeaza o activitate,un serviciu ce porneste sau se opreste sau primirea transmisiei receptiei
Visible(vizibil)-daca un proces este in cursul unei pauze dar activitatea sau serviciile sunt vizibile se leaga la o activitate vizibila si nu componentelor principale,este clasificat ca un proces vizibil.
Service(serviciu)-un proces ce executa un serviciu inceput deja.
Background(fundal)-o activitate ce nu mai este vizibila, este tinuta in fundal de catre un proces.
Empty(gol)-aceste procese nu contint nici o componenta activa,exista numai in scopul cacheurilor.
Daca sistemul ruleaza putina memorie, importanta proceselor devine o parte importanta in sistem atunci cand acesta hotaraste ca un proces trebuie terminat pentru a mai elibera din memorie.Prin urmare procesele goale sunt inchisde de obicei urmate de procesele din fundal si asa mai departe.Deobicei numai procesele goale si cele din fundal sunt inchise astfel incat utilizatorul ramane neafectat.Sistemul este conceput sa lase totul neatins atat timp cat poate asocia cu componenta precuma activitatea
Procesele pot contine treaduri multiple,cum este de altfel si normal in sistemele bazate pe Linux.Majoritatea aplicatilor Android contin mai multe treaduri pentru a separata interfata grafica de manevrabilitatea de intrare si de operatiile de intrare si iesire sau de calculele de lunga durata,prin urmare procesle ce stau la baza sunt multi-treaduri.Treadurile folosite la nivelul aplicatiilor sunt treaduri standard in Java care ruleaza in Dalvik VM.
2.4.2 Aplicatiile interne
Structura unei aplicatii Android bazate pe patru componente diferite, care sunt: Acitivitate ,Serviciu,Receptorul de transmisie si furnizorul de continut.O aplicatie nu trebuie sa continta neaparat toate aceste 4 componente dar pentru a fi un grafic de interfata grafica trebuie macar sa fie o activitate.
Aplicatiile pot deschide alte aplicatii sau componente specifice altor aplicatii trimitand o intentie.Aceste intentii contin printre altele si numele actiunii pe care dorim sa o executant.IntentManager rezolva requesturile primite si incepe la propriu aplicatia sau componenta.Primirea unei intentii poate fi filtrata de catre o aplicatie.
Serviciile si transmitatorii de recepitie dau voie aplicatiilor sa-si faca treaba in fundal si sa furnizeze functionalitati aditionale si altor componente.Transmitatoriii de receptie pot fi declansati numai de catre un eveniment si pot functiona numai pentru o perioada scurta de timp in timp ce un serviciu poate functiona pentru o perioada mai lunga de timp
Codul compilat de catre componentele aplicatiei si de resursele aditionale precum biblioteci,imagini si alte date neimportante sunt impachetate intr-un singur fisier cu cu extensia .apk care formeaza executabilul aplicatiei Android.
2.4.3 Android Manifest.xml
Toate aplicatiile Android Dalvik trebuie sa aiba un documente XML in directorul de rootare al aplicatiei numit AndroidManifest.xml.Acest document este folosit de catre o gramada de facitilitate a sistemului pentru a obtine informatii administrative si de nivel organizatoric despre aplicatile.
In fisierul manifest 23 de elemente predefinite sunt permise sa specifice impreuna cu alte lucruri numele aplicatie, componentele aplicatiei ,permisiunile,bibliotecile necesare si filtrere pentru intentii si transmitere.In timpul dezvoltarii fisierul manifest tine controlul asupra informatiilor pentru suportul instrumentatiilor
2.4.4 Activities(Acitivitati)
O activitate este o singura vedere a unei aplicatii ca si o fereastra dintr-un browser sau o pagina de setari.Contine elementele vizuale care prezinta datele (ca pe o imagine) sau permit userului interactiunea(ca pe un buton).Fiecare aplicatie poate avea mutiple activitati pentru care tranzitia dintre diferitele activitati sunt incepute prin intentii
Toate activitatiile sunt subclase din android.app.Acitivity si ciclul lor de viata este controlat de catre meotdele onXYZ().Acest concept este necesar pentru ca Android sa se descurce cu comenzile multitasking si ajuta lucrul cand este memorie putina.Principalele functii sunt:
onCrate() –princiala metoda pentru a seta o acitivtate.
onDestroy()- opusul lui onCreate().
onResume()-aceasta metoda este apelata daca Activitatea este vizibila in primul plan si este gata pentru a procesa primirea userului.
onPause()-metoda trebuia sa se pregateasca sa salveze datele pana in acel moment si sa opreasca procesorul din lucru pentru a da voie Acitivitatii sa se retraga si sa mearga in fundal.
onRestart()-aceasta metoda trebuie sa returneze ultima salvare facuta a activitatii cand se cere acest lucru dupa ce o activitate o fost complet oprita si trebuie repornita din nou
2.4.5 Activitatile din fundal
Aplicatile pot cateodata sa execute niste operatii de suport in fundal.Android oferta pentru activitatile de fundal doua clase transmitrea receptiei si servicii.Daca numa o operatie scurta trebuie sa fie facuta ,transmiterea recepitie este preferata iar pentru o actiune de lunga durata sunt preferate Serviciile
Ambele clase nu implica neaparat ca, componentele din fundal sa ruleze ca si un tread sau chiar ca si un proces al sau, prin urmare Android nu aplica acest fel de comportament.Pentru ca aplicatie sa nu se blocheze in timpul rularii acesteia,serviciul si transmiterea receptiei deobicei ruleaza propriul tread,de altfel Android tinde sa inchida aplicatia daca vede ca aceasta nu raspunde.
Transmisia recptiei este activata prin metoda onRecive() si este nevalidata cand este returnata prin aceasta metoda.Asta face necesar folosirea numai de metode sincrone in receptor.Un transmitator este deobicei neordonat si este trimis tuturor recepetoarelor cu care se potriveste in acelasi timp dar poate fi si ordonat.In acest caz Android trimite transmitatorul catre receptor numai cate unu.Acest receptor functioneaza ca deobicei si poate sa trimita niste rezultatele urmatorului recetor sau chiar poate sa abandoneze intreaga transmisie.
Un serviciu permite aplicatiei sa functuoneze un task de lunga durata in fundal si ofera niste functionalitati ale aplicatiei catre alte aplicatii din sistem.Un sistem poate fi folosit in doua moduri,poate fi pornit cu o singura comanda sau este pornit si controlat de o singura conectiune primita care foloseste apeluri de procedura de la distanta.
Receptor si serviciu trebuiesc fi anuntate in fisierul manifest al aplicatiei pentru a permite Android sa determine care sunt serviciile si receptoarele acestiuia chiar daca aplicatia nu este pornita.
2.4.6 Starile aplicatiei si durata de viata a aecstora
Starea unei aplicatii Android se afla chiar in interiorul acesteia, este determinata de starea componentelor sale ,cea mai importanta fiind activitatea.Ca ,componentele unei aplicatii sa-si schimbe starile, procesele acesteia trebuie sa se modifice inca de la baza.
Aplictia porneste coponentele individuale si in caz de o activitate si in caz de activitate urmatoarele metode sunt secventiale: onCreate(),onStart(),onResume().Prima metoda este apelata o singura data pe toata durata de viata dar urmatoarele doua metode pot fi apelate mai des.Daca o activitate se opreste,metoda onPause() este apelata iar daca activitatea nu mai este vizibila deloc , metoda onStop() este apelata.Inainte de a sterge o activitate este pornita metoda onDestroy() care opreste activitatea permanent.
Fiecare metoda este apelata la un eveniment pentru a permite activitatii sa-si pastreze starea sau sa porneasca si si sa se reseteze corect.Urmatoarea lista descrier rolul fiecare metode si cum anumite evenimente schimba starea aplicatiei.
onCreate()- aceasta metoda este apelata pentru initializare.Poate fi trecuta printr-o stare mai veche pentru a reveni.Urmatoarea metoda este intodeauna onStart().
onRestart()-dupa ce o activitate este oprita si este pe cale sa fie pornita din nou,aceasta metoda este apelata dupa onStart().
onStart()-tipul procesului aplicatiei se schimba in vizibil iar acitivtatea este pe cale sa fie vazuta userului dar nu este in prim plan.
Figura 3. Ciclul de viata al unei activitati
onResume()-Activitatea trebuie sa se reporneasca si sa poata da userului o intrare.Procesul aplicatiei este setat in primul plan.
onPause()-Daca aplicatia este trecuta pe pauza or dispozitivul este inchis,aceasta metoda este apelata iar procesul este din nou setat ca vizibil.Dupa ce este executata aceasta metoda sistemul are permisiunea sa inchida aplicatia oricand.Toate operatiile de consum a procesorului ar trebui oprite si toate datele nesalvate ar trebui salvate.Activitatea poate fi repluata sau poate fi oprita.
onStop()-Activitatea nu mai este vizibila ,procesul este setat in fundal si aplicatia poate fi terminata in orice moment de catre siustem pentru a recapata din memorie.Actitivitatea va fi distrusa sau repornita.
onDestroy()-Ultima metoda care este apelata intr-o activitate fix inainte ca sistemul sa inchida aplicatia sau ca aceasta sa stearga activitatea.Procesul aplicatiei poate fi setat pe gol daca sistemul pastreaza procesul in scopul cacheuirii.
Pentru un serviciu,durata de viata este mai simpla decat pentru o activitate pentru ca metodele: onResume(),onPause() si onStop() nu exista.Pentru seviciile interactive sunt metodele onBlind(),onUnblind() si onRebind() care sunt apelate la inceput ,la sfarsit si la restartul unui serviciu.Tipul procesului se modifica intre crearea din primul plan si timpul de stergere si timpul serviciului.Receptorii de transmitere au doar metoda onRecive() care ruleaza ca importanta ca un proces de prim plan.
Daca o activitate necesita salvarea datelor,la repornirea aplicatiei acestea trebuie sa furnizeze utilizatorului aceeasi stare care se afla la momentul parasirii sale,metoda onSaveInstanceState poate fi folosita pentru acest scop.Aceasta metoda este apeleta inaintea metodei onPause() si permite salvarea datelor dinamice precum perechile de cheir primare.Starea obiectelor salvate pot fi pasate metodei onCreate() si onRestoreInstanceState() pentru a inapoia starile activitatii.
2.5 Dalvik VM
Aplicatiile android si structurile care stau la baza sunt in mare parte scrise in Java.In locul folosirii unei masinarii virutale Java, Android foloseste propria masina virtuala.Aceasta masina virtuala nu este compatibila cu standardul masinii Virtuale Java Me deoarece este specializata pentru sisteme de mici dimensiuni.Aceste mici sisteme deobicei au putini rami, un procesor incet si ca majoritatea calculatoarelor nu fac schimb de spatiu pentru a compensa lipsa memoriei.In acest moment Android se diferenteaza de celelalte sisteme de operare mobile precum iOS sau WP care folosesc o aplicatia nativa de compilat cod.Principalul limbaj folosit acolo este C ,C++ si C pe obiecte.
Codul masina care necesar interpretarii se numeste Dalvik.In loc sa foloseasca cod standard, Dalvik are propriul sau format de cod care este ajustat pentru nevoile androidului.Codul este mult mai compact decay un cod obijnuit Java si fisierele .dex generate sunt mai mici
2.6 Cerintele
Find un sistem de operare multitasking, Android permite fiecarei aplicatii sa fie multi tread si sa se separe in mai multe procese.Pentru a imbunatatii stabilitatea si securitatea,fiecare aplicatie ruleaza independet fata de alta aplicatie care functioneaza.
Dalvik este destinat deviceurilor cu un minim de memorie de 64mb ram.Sunt doua locuri majore unde se poate incerca minimizarea consumului de memorie.In primul rand aplicatia in sine sa fie micsorata cat se poate de mult si in al doilea rand alocarea memorie catre fiecare plicatie sa fie optimizata.Cu ajutorul imbunatatirii memoriei ,aplicatia se va deschide mai repede si va ocupa mai putin spatiu.
2.7 Optimizarea fisierelor
Aplicatii java pentru Dalvik sunt complilate ca oricare alt program scris in Java cu aceleasi comilatoare si cateodata chiar cu aceleasi tooluri.In loc sa se compreseze si sa se imacheteze clasele rezultatele intr-un fisier denumit .jar ,ele se impacheteaza intr-o extensie .dex facut de tool-ul dx.Aceste fisiere includ codul octet al Dalvik al tuturor claselor din java.Impreuna cu alte resurse precum imaginile ,sunetul si bibilotecile,fisierele .dex sunte impachetate in fisierele .apk.
Pentru a mai salva din spatiul de stocare, fisierele .dex contin numa date unice.Daca mai multe clase au acelasi lucru, acesta se va salva numai o singura data in .dex si multime referinte se fac catre acea clasa comuna.
Figura 4 Structura fisierelor .dex
2.8 Nivelurile API
Cum Android este intr-o continua dezvoltare, noi API sunt adaugate iar cele vechi sunt scoase din uz si pot fi chiar sterse.Fiecare versiune de Android are propriul nivel de API si fiecare aplicatie poate ave un nivel minim,maxim si preferat de nivel API.Nivelul API se schimba in functie de schimbarile majore si cele miniore care apar in Android dupa cum urmeaza:
Interfata grafica
Baza in interfata grafica in Android este View class.Toate elementele vizibile ale interfetei grafice si unele elemente care nu se vad sunt derivate din aceasta clasa.Android ofera niste elemente de interfata grafica precum butoane, text si vizionare video.Obiectele vizibile pot fi partizitinate in ViewGroup ,acesta permite aplicarea unui schite pentru obiectele vizibile din grup.
Pentru a interactiona cu interfata grafica,clasa View ofera niste metode precum: onClick(),onTouch() si onKey() care sunt apelate de catre schitele de la baza.Elementele interfetei grafice oferta si meniuri si dialoguri .Un meniu poate fi accesat printr-o cheie de meniu sau poate fi un meniu de vizualizare cu text.Pentru a informa user o aplicatie poate prezenta un dialog.Android ofera dialoguri pentru date si timpuri alese,pentru notoficari si pentru dialoguri customizate cu butoane.
Pentru notificare userilor exista trei tipuri de dialog.Cel mai intuitiv este o notificare cu dialog,unde mesajul apare in fata iar aplicatie trece pe fundal.O alta notificare este cea care iti oferta un text deasupra ecranului si dispare dupa cateva secunde.Statusul de pe bara de notificare lasa aplicatia neatinsa si pune o iconita deasupra barii de status.Amandoua tipuri de notificari pot fi utilizate de catre seriviciile de fundal.
Structura media
Structura media suporta audio,video si imagini, Androidul avand un media player si un codificator integrat.Formatele audio si video pot fi marite dar pentru un minim urmatoarele formate sunt suportante
Imagine-jpeg,png,gif,bmp
Audio-mp3,ogg vorbis,midi,wave,aac,amr
Video-H.263,H264 si MPEG-4
Reteaua
Accesul la retea si la internet este foarte important pentru dispozitivele cu Android deoarece multe aplicatii sunt dependente de accesul la internet.Majoritatea telefonaelor Android au mai multe tehnologii care le faciliteaza conectarea la internet.Telefoanele smart au acces la internet prin GPRS(2G) sau UMTS iar prin retea se pot conecta la WiFI.
ConectionManager da voie aplicatiilor sa verifice statusul diferitelor tehlogogii si informeaza aplcatiile asupra conectiunilor daca acestea s-au modificat.Pentru a folosi conectarea la retea Android foloseste mai multe pachete si clase
org.jsoup-este o librarie java care lucreaza cu html real.Oferta un API foarte convenabil pentru extragerea si manipularea datelor folosind cele mai bune DOM,CSS metode.jsoup implementeaza standardul WHATWG HTML si parcuge acelasi HTML ca si DOM precum o fac browserele moderne.
-Parcuge HTLM dintr-un URL ,fisier sau string
-gaseste si extrage date folosind DOM sau CSS
-manipuleaza elementele de HTML, atrbiute si text
-ofera un HTML ordonat.
org.apache-specializat in HTTP,contine clasele si interfetele de baza pentru interactiunea cu protocolul HTML
Bluetooth
API-urile bluetoothului de pe Android dau voie aplicatiilor sa caute dupa alte dispozitive, sa se conecteze cu acestea si sa faca schimb de date.Pentru a putea folosi capacitatiile Bluetooth, o aplicatie trebuie sa aiba permisiunea BLUETOOTH si BLUETOOTH_ADMIN in fisierul manifest.API de la Bluetooth se afla in pachetul android.bluetooth.
Google Maps API v2
Cu API de Android de laGoogle Maps poti adauga harti bazate pe Google Maps in aplicatia personala.API se ocupa automat de accesarea serverelor Google Maps,downloadarea datelor ,afisarea hartii pe display.Se poate folosi API pentru a adauga semne, poligoane unei harti si se poate schimba vederea asupra unei bucatii de harta.API te lasa sa adaugi elemente grafice pe harta precum:
Semne specifice pentru un punct de pe harta
Seturi de linii
Poligoane
Poze care pot fi afisate deasupra hartii
2.9 Testare si depanare
SDK de Android ofera o varietate mare de tooluri si de facilitati pentru dezvoltarea si depanarea aplicatiilor.Exista un plugin pentru Eclipse care integreaza in acesta niste unelte necesare dezvoltarii.Emulatorul de Android permite destarea si depanarea unei aplicatii fara a avea nevoie de un aparat la propriu.ADB(Android Debug Brige) permite logarea in emulator sau intr-un dispozitiv si sa se poata vedea intregistrarile si sa se poata controla sistemul conectat.
Pe langa tooluri mai sunt si cadre de testare.Aceste cadre de testare sunt bazate pe teste Junit si sunt facute pentru a functiona si cu infrastructura Android
Instrumente
Instrumentele din SDK includ mentenanta programelor,depanarea si testarea.Unele instrumente vor fi deschise in acest capitol in timp ce altfele precum dx or fost descrise in capitolul Dalvik.
ADB- este o unealta de depanare foarte importanta care suporta o varietate mare de comenzi pentru diferite categorii.ADB este format din trei parti, un server adb,un client asezat la un calculator pentru dezvoltare si un proces pe un sistem cu Android sau pe un emulator.Clientul poate trimite comenzi catre server si depinde de ce fel ii comanda poate fi trimisa catre proces sau poate fi exacutata local.ADB are abilitatea de a de a controla mai multe dispozitive in acelasi timp.
Comenzile sunt valabile pentru mai multe categorii si pentru mai multe scopuri precum schimbul de data, controlul sistemului, mententanta si gasirea de informatii.Unele din comenzile valbile sunt: logcat(vede conectarile la sistem),install(instaleaza o aplicatie) si bugreport(listeaza o informatie despre o eroare). Plugin de Eclipse face ca ADB sa functioneze si integreaza unele comenzi in IDE.
DDMS(Dalvik Debug Monitor Server) Pentru depanare DDMS ofera interfata grafica cea ce face sa combine o parte din functionalitatile lui ADB cu informatii detaliate despre aplicatia pe care o ruleaza Dalvik in momentul de fata.DDMS permite schimbarea starii sistemului de fata.
DDMS permite schimburi de date cu ADB ,expediere porturilor si listarea si filtrarea jurnalului de sistem.
Traceview- Unealta grafica traceview arata urmele inregistrate de aplicatie si ofera navigare catre treadurile mai multor aplicatii.Urmele acestui instrument pot fi invocate fie in DDMS,fie de aplicatia care urimizeaza metoda startMethorTracing() in clasa android.os.Debug.
2.10 Instrumentarea si testele Junit
Testele unitare sunt bazate pe teste Java Junit si pentru instrumentatie exista un cadru care permite detalierea destelor pentru activitati.Testele unitare pot sa testeze comportamentul intregii aplicatii sau sa izoleze componente precum ContentProvider.
Cu instrumentatie este posibil sa fie aplicate teste similare pentru o singura activitate.
Aceste teste pot fi gasite in pachetul android.test
Pagina principala a DDMS,aratand statistici de pe un dispozitiv ruland
2.10.1 Testele Junit
Testele unitare permit schimbarea contextului unei aplicatii intregi si astfel izoleaza o parte din aplicatie pentru a fi aplicate teste mult mai detaliate. Testele de clasa sunt derivate din clasa de baza AndroidTestCase.
AndroidTestCase-o clasa pentru testare este intreaga aplicatie intr-un mediu special.
Metoda onCreate() nu este apelata pana nu aplicatie apleaza intai metoda createApplication().Metoda tearDown() este apelata automat care va apela la randul metoda aplicatie onDestroy().Aceasta metoda ascunde Context inainte ca acesta sa fie apelate de catre createApplication().
Figura 7.Urmareirea unei aplicatii.In partea de sus este activitatea treadului iar in partea de jos este functia corespondenta apelurilor
Testele de instrumentare—testele din aceasta categorie sunt folosite pentru a testa activitatea unei aplicatii.Pentru a indeplini asta, testele trimit eveinmente de interfata grafica false si intenteaza teste aplicatiei in timp ce o monitorizeaza.Testele de clasa sunt derivate din ActivityTestClass care este o clasa copil a InstrumentationTestCase.Designul testelor de instrumentare este prezentat in figura de mai jos.
SyncBaseInstrumentation-Acesta clasa permite testarea sincronizata a ContetProvider
ActivityUnitTestCase-Clasa echivalenta a testelor unitare de clasa pentru o aplicatie.
SingleLaunchActivityTestCase-O clasa ce poate fi folosita daca este o singura activitate care acopera toate metodele ce trebuiesc testate
2.11 Baze de date pentru Android
Un sistem de baze de date este necesar pentru a stoca structurile de date,in caz caz ca aplicatia lucreaza doar cu putine date, aceasta nu este necesar.Android foloseste baze de date SQLite, acestea find baze de date SQL gratis,care sunt folosite de foarte multe aplicatii.Sqlite sunt niste semi-usoare baze de date care ocupa foarte putin spatiu si memorie.Acest lucru il face perfect pentru a crea baze de date pentru un sistem de operare mobil precum Android sau iOS.
Bazele de date care sunt create pentru o aplicatie pot fi accesate numai pentru aceasta,altfel aplicatia nu o sa le poata accesa.Odata create,bazele de date SQLite sunt stocare in folderul database de pe un sistem cu Android.
2.11.1 Baze de date Sqlite
SQLite sunt niste baze de date cu sursa deschisa care sunt incorporante in Android.SQLite suport standarde de baze de date precum SQL.Are nevoie doar de putina memorie pentru a rula,aproximativ 250Kbyte.SQLite este o biblioteca software care implementeaza o baza de date proprie SQL.SQLite este una din cele mai folosite baze de date SQL din lume.
SQLite suporta tipuri diferite tipuri de date precium :TEXT(similar cu string in Java),REAL(similar cu double in Java) si INTERGER(similar cu long in Java).Alte tipuri trebuiesc transformate in campurile de mai sus inainte de a fi salvate intr-o baza de date.SQLite in sine nu valideaza daca un tip precum interg este scris intr-o coloana de string sau un string este scris intr-un integer.
SQLite este valabil pentru orice dispovzitiv cu Android.Folosirea unei baza de date SQLite in Android nu necesita nici o setare sau administrare a bazelor de date.Cererile SQL pentru crearea si updatarea unei baze de date trebuie doar sa fie definite iar baza de date este automata facuta de catre platforma Android
Android ofera suport complet pentru bazele de date in SQLite.Orice baza de date create va fi accesibila prin nume in orice clasa a aplicatiei, dar nu in afara aplicatiei
Metoda recomandata prin care sa creezi o noua baza de date SQLite este de a crea o subclasa a clasei SQLiteOpenHelper si sa rescri metoda onCreate(),metoda in care comanda SQLite este executata pentru a crea tabele in baza de date.Un exemplu mai jos dupa cum urmeaza:
Figura 5:Exemplu de SQLite intr-o aplicatie
Se poate obtine apoi o instanta a clasei SQLiteOpenHelper implementand constructorul care este definit.Pentru a citit si a scrie din baza de date metodele getWritableDatabase() si getReadabbleDatabase() sunt apelate.Ambele returneaza un obiect SQLiteDatabase care reprezinta baza de date si oferta metode pentru operatiile SQLite.
Interogarile SQLite pot fi executate folosind metoda SQLite Database query(),care accepta o varietate de interogari parametri precum: o tabela de interogat,o proiectie,o selectie,coloane,grupare precum si altele.Pentru interogari complexe se foloseste metoda SQLiteQueryBuilder care ofera cateva metode bune pentru a construi niste interogari.
Fiecare interogare SQLite o sa returneze un cursor catre fiecare rand gasit de catre interogare.Cursorul este intodeauna un mecanism cu care poti citi de prin rezutatele unei interogari din baze de date si poate citi randuri sau coloane.
2.11.2 Arhitectura SQL
Interfata
O mare parte din interfata a bibliotecii SQL este implementata de functii gasite in codurile sursa main.c,legacy.c si vdpeai.c .Pentru a evita acelasi nume cu alte programe,toate simbolurile externe in SQLite incep cu prefixul sqlite3.Aceste simboluri sunt folosite pentru folosirea externa,incep cu sqlite3_.
Tokenizer
Cand un strig contine o declaratie SQL care trebuie executata,interfata trimite acel string la tokenizer.Treaba tokenizer este de a intrerupe stringul original pe care il preia, apoi sa il trimita pe bucati ,unul cate unu catre parser.Tokenizer este codat in C in fisierul tokenize.c.In toata aceasta arhitectura trebuie luat aminte ca tokenizer apeleaza parser.
Parser
Parserul este acea piesa care asigneaza semnificatii semenelor, bazate pe propriul context.Parsorul SQL este generat folosind generatorul de parsoare Lemon LARL.Lemon face acelasi lucru precum YACC/BISON dar foloseste o sintaxa de intrare diferita care este predispusa la mai putine erori.Lemon defineste conceptul de destructor care nu permite pierderea de memorie cand apar erori de sintaxa.Deoarece lemon este un program care in mod obijnuit nu este gasit pe masinile de dezvoltare,codul sursa complet a acestuia este inclus in distributia SQLite in subdirectorul tool.Documentatia lemon este gasita in subdirectorul distributiei.
Generatorul de cod
Dupa ce parser intruneste toate semnele, acesta apeleaza generatorul de cod pentru a produce o masina virtuala care va indeplinii cerintele dorite de SQL.Sunt multe fisiere in generatorul de cod precum : attach.c ,auth.c ,build.c, delete.c, expr.c, insert.c, pragma.c, select.c, trigger.c, update.c, vacuum.c si where.c, in aceste fisiere se intampla lucrurile cele mai importante. expr.c gestioneaza generarea de cod pentru expresii. Where.c gestioneaza generarea de cod pentru clauzele Where din declaratiile SELECT,UPDATE si DELETE. Fisierele attach.c, delete.c , insert.c ,select.c, trigger.c, update.c si vacuum.c gestioneaza generarea de cod pentru afirmatiile Sql cu acelasi nume.Celelalte afirmatii SQL sunt codate in afara fisierului build.c
Figura 6-Arhitectura SQLite
Masina virtuala
Codul executat de generatorul de cod este executat de catre masina virtuala.Aceasta implementeaza un motor abstract special destinat pentru a putea umbla cu fisierele bazei de date.Masina are o stiva care este folosita pentru sotcarile intermediare.Fiecare instructiune continand un cod operational si pana la trei operanzi aditionali.
Masina virtuala esti inclusa in intregime intr-un singur fisier sursa vbde.c.Ea are propriile fisiere header precum vdbe.h,care defineste o interfata intre masina virtuala si restul biblioteci SQLite si mai contine headerul VdbeInt.h care defineste structura privata a masinii virtuale.
Arborele B(B-Three)
O baza SQLite este mentinuta pe disc cu ajutorul implementarii arborelui B gasita codul sursa btree.c.Un arbore B este folosit pentru fiecare tabela si index din baza de date.Toti arborii de tip B sunt stocati in acelasi acelasi fisier de pe disc.Detaliile privind formatul fisierului sunt stocate intr-un comentariu largit la inceputul fisierului btree.c
Pagina de cache
Modulul Arborelui de tip B necesita informatii de pe disk in bucati de mari dimensiuni.O bucata in mod normal are 1024 bytes dar poate avea valori intre 512 si 65536 bytes.Pagina de cache ii responsabila pentru cititea ,scrierea si cachuirea acestor bucati.Pagina de cache de asemenea poate preveni revenirea si are grija de fisiere blocate din bazele de date.Arborele B solcita anumite pagini din pagina de cache si notifica pagina de cache cand aceasta doreste sa se modifice sau cand doreste sa se intoarca inapoi.Codul care implementeaza pagina de cache este se afla intr-un singur fisier sursa numit pager.c.Interfata acestei pagini cache este defininta de fisierul antent pager.h
Interfata Sistemului de operare
Pentru a oferi portabilitate intre POSIX si sistemele Win32, SQLite foloseste un nivel abstract pentru a face legatura cu Sistemul de operare.Interfata cu sistemul de operare abstract se afla in os.h.Sistemul de operare Unix foloseste propria implementare os_unix.c ,in timp ce Windows foloseste os_win.c.Fiecare din aceste impementari au propriul lor antent numit os_unix.h si os_win.h
Utilitatile
Alocarea de memorie si compararea string-urilor au loc in fisierul util.c.Tabelele cu simboului folosite de parser sunt administrate de catre trabelele hash aflate in hash.c.SQLite are propria lui implementare a metodei printf() in fisierul printf.c si propriul sau numar aleator generat de catre random.c
Testarea codului
2.11.3 Alte baze de date
Bazele de date Cellica pentru Android permit vizualizarea si updatarea datelor oricarui sistem cu Android.Iti permite sincronizarea cu Acces,Ecel si cu oricare baza de date ODBC precum Oracle sau SQL .Pachetul software contine doua software-uri:bazele de date Celica de pe calculator care ruleaza pe Windows si bazele de date Celica client care ruleaza pe un sistem cu Android.Partea cu softul de calculator este folosita pentru a creea profile pentru telefoane/tablete cu Android si ele se vor sincroniza cu acestea uin functie de setarile de pe telefon sau tableta.
Bazele de date Cellica de pe dispozitivele Android ofera sincronizarea detelor prin wirless cu dizpozitivele Android,vizualizarea si updatarea datelor,alicarea unor interogatii SQL,sortarea campurilor si protejarea parolei.
Memento este o baza de date personala care permite utilizatorilor Android sa stocheze toate datele personale intr-un singur loc.Intrarile pot fi sincronizate cu Google Drive.Memento poate controla de exemplu,colectiile,cumparaturile,lucrurile din inventar,retele si taskurile. Principalele optiuni sunt stocarea intrarilor cu campuri diferite, sortarea,gruparea si filtrarea si gruparea intrarilor de orice fel,pastrarea protectiei parolei,trimiterea intrarilor prin SMS si mail, etc
2.12Android vs Linux
Figura X ilustreaza diferentele dintre Android si sistemul de operare Linux 2.6.Nucleul Android o fost derivat din Linux dar inafara nucleului or fost schimbate mai multe lucruri.Pentru a arata asta ,Android nu a fost echipat cu o configurare de start Windows-X,nu suporta toate standardele a bibiliotecii GNU.Aceasta insemnand ca nu este prea recomandat incercarea de portare o oricarei aplicatii din Linux sau o oricarei biblioteci GNU catre Android.
Una dintre diferentele mari intre Linux si Android este in jurul stratului abstract Java intergrat in Android.Dupa cum se poate observa si in imagine, modelul Android este bazat pe o implementare mult mai adanca fata de Linux.Altfel spus o aplicatie de Android este mult mai indepartat stearsa fata de nucleul actual decat ar fi in Linux.Principalele aplicatii de Linux sunt dezvoltate in C si C++,prin urmare aceste doula limbaje reprezinta mediul predominat de aplicatii in Linux.In Linux utilizatorul aplicatiei are acces direct catre nucleu, nu la fel intamplanduse si cu sistemul de operare Android.In Android nucleu este aproape ascuns in mediul de operare al cestui sistem,in timp ce in Linux construirea aplicatiilor in C si C++ pot fi direct optimizate prin compilatoare speciale,marind performanta aplicatiilor
Configurarea Linuxului incorporeaza nativ o infrastructura bogata de librarii,depanari si unelte de dezvoltat care nu sunt accesibile sistemului de operare Android; in timp ce constructia Android este bazata pe o implementare mai adaca prin urmare aplicatile sunt mult mai greu de sters din nucleu decat se face in Linux.Datorita dezvoltariir rapide a sistemului de operare Android,necesitatea pentru aplicatiile android si pentru uneltele perfomante o sa creasca foarte mult in vitorul apropiat.
Figura X-Mediul Android vs Linux
2.13 Consumul de energie
In sectorul aparaturii mobile, consumul de energie este evident extrem de important.Ceea ce inseamna ca consumul de energie nu trebuie uitat pentru orice sistem.Prin urmare,consuml de energie din fiecare sistem IT,din fiecare sistem de operare trebuie gestionat bine deoarce consumul de curent al device este intr-o crestere continua.Pentru a face asta,Linux ofera un sistem al controlului de energie cum ar fi reducerea clock ,reducerea voltaju,dezactivarea unor memorii de cache si activarea consumui de energie
Cap. 3. Descrierea aplicației
3.1. Introducere
Aplicația dezvoltată se numeste “Restaurant Nora” și este o aplicație folosită pentru rezervarea unei mese la restaurant. Utilizatorul poate să vizualizeze meniul restaurantului si sa selecteze mancarea preferata, care va fi comandata o data cu efectuarea rezervarii.
Este o aplicație pentru dispozitive mobile, dezvoltată în limbajul de programare Java si care foloseste platforma de dezvoltare Android. Ea acceseaza internetul pentru a obtine datele necesare localizarii restaurantului pe Google Maps, cât și cu o bază de date pentru a stoca comenzile facute de utilizator.
3.2. Funcționalitățile aplicației
Aplicația dezvoltată poate fi rulata pe un dispozitiv mobil cu sistem de operare Android, începând cu versiunea 2.2. Utilizatorul poate accesa urmatoarele functionalitati:
sa vizualizeze meniul restaurantului (meniul pe categorii si subcategorii)
sa adauge portii de mancare sau bauturi in comanda
sa vizualizeze detaliile comenzii
sa completeze detaliile rezervarii (numar de persoane, data si ora rezervarii) si sa trimita rezervarea impreuna cu detaliile comenzii
utilizatorul are posibilitatea de a vedea pe harta unde este pozitionat restaurantul
utilizatorul poate initia un apel telefonic din aplicatie, pentru a contacta restaurantul
aplicatia da posibilitatea utilizatorului de a trimite un mesaj catre adresa de e-mail a restaurantului
In figura urmatoare se prezinta diagrama de utilizare a aplicatiei (use cases):
Figura 16. Diagrama de utilizare (usecase)
3.3. Interfața cu utilizatorul
Interfata acestei aplicatii este moderna si usor de utilizat. Ea se imparte pe mai multe zone:
Prima zona cuprinde bara de titlu, pe care se afiseaza numele aplicatiei (Restaurant Nora), precum si butonul Contact.
A doua zonă cuprinde imaginea reprezentativa a restaurantului.
Cea de-a treia zona reprezinta meniul de navigare, ce cuprinde trei optiuni: Menu List, Your Order si Reservation. Prin selectarea uneia dintre optiuni, se va afisa o noua sectiune prin care utilizatorul poate sa navigheze cu usurinta. Fiecare pagina are designul ei propriu, dar toate folosesc o tema comuna.
Figura 18. Bara de titlu și meniul de navigare
Secțiunea Menu List.
Prin selectarea acestei optiuni, utilizatorul acceseaza meniul restaurantului care este afisat pe categorii. Momentan exista patru categorii definite in meniu: Starters, Main Courses, Desserts si Beverages.
Figura 19. Secțiunea Category List
Atunci când utilizatorul selectează o categorie din meniu, se va deschide o noua interfata in care se afiseaza meniul corespunzator categoriei alese. Fiecare optiune din lista are o imagine asociata cu numele meniului si pretul.
Figura 20. Secțiunea Starters
Dupa ce utilizatorul selecteaza mancarea dorita, se deschide o noua pagina in care se prezinta imaginea marita a meniului selectat si o descriere a acestui meniu. In aceasta pagina utilizatorul are posibilitatea de a adauga meniul in comanda, prin apasarea butonului “Add to order”. Inainte de a adauga optiunea in comanda, utilizatorul va specifica numarul de portii dorit.
Figura 21. Secțiunea Detail
Secțiunea Your Order
Aceasta sectiune este alcatuita dintr-o lista de elemente ce reprezinta meniurile de macare sau bautura selectate anterior de catre utilizator. Butonul “Clear all orders” ofera posibilitatea de a sterge toate elementele din comanda.
Sectiunea Reservation
In aceasta sectiune utilizatorul va completa toate campurile necesare pentru a efectua o rezervare la restaurant: numele, numarul de persoane, data si ora rezervarii. Campul rezervat comenzii se completeaza automat pe baza inregistrarii din baza de date, unde se pastreaza optiunile selectate de client.
Figura 21. Secțiunea Reservation
Prin apasarea butonului “Send reservation”, se va deschide o fereastra cu toate aplicatiile de e-mail existente pe dispozitivul pe care se ruleaza aplicatia. Utilizatorul va alege clientul de e-mail preferat. si automat se va deschide fereastra de “New E-mail”. Toate campurile din pagina Reservations sunt afisate in e-mail, iar utilizatorul poate sa revizuiasca informatiile inainte de a trimite rezervarea catre restaurant.
Fig. 22 Formatul e-mailului de rezervare
O alta functionalitate oferita utilizatorilor este de a vizualiza pozitia restaurantului pe Google Maps. In pagina principala a aplicatiei, in partea dreapta a barei de titlu se afla iconita de contact, care directioneaza utilizatorul catre pagina cu informatiile de contact ale restaurantului.
Fig. 23 Pagina de contact
4. Dezvoltarea aplicației
4.1. Imagine generală
Codul Java al aplicatiei este structurat în trei pachete, iar legăturile dintre aceste pachete sunt ilustrate in Figura 24.
Fig.24 Diagrama de pachete
Pachetul com.application.restaurant.activities conține urmatoarele clase de activitati: MainActivity.java, CategoryList.java, MenuList.java, MenuDetail.java, YourOrder.java and Reservation.java. Fiecare dintre aceste clase corespunde unei sectiuni descrise in capitolul anterior. Tot in acelasi pachet sunt incluse si urmatoarele clase care extind clasa BaseAdapter: MainMenuAdapter.java,CategoryListAdapter.java,MenuListAdapte.java si YourOrderListAdapter.java. Aceste clase sunt responsabile cu afisarea elementelor din cadrul listelor de tip ListView.
Pachetul com.application.restaurant.utils conține clasa care gestioneaza operatiile cu baza de date si o clasa care verifica daca este activata conexiunea la internet.
Pachetul com.application.restaurant.contact contine clasa Contact.java care este responsabila de accesarea serviciului Google Maps si afisarea unei harti ca si fragment al unei activitati.
Dezvoltarea detaliată
4.2.1. Interfața grafică
Interfata grafica este alcatuita din mai multe activitati. MainActivity este clasa care se executa prima data cand se deschide aplicatia. Pentru aceasta am setat un filtru (<intent-filter>) cu actiunea standard android.intent.action.MAIN, care accepta doar mesaje din categoria standard android.intent.category.LAUNCHER.
<activity
android:name="com.application.restaurant.activities.MainActivity"
android:label="@string/app_name"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Mai jos este prezentata diagrama de clase pentru MainActivity si CategoryList:
Figura 28. Diagramă clase (1)
In MainActivity se seteaza elementul layout care defineste elementele vizuale ale activitatii. Layout-ul este un fisier de tip XML care este identificat printr-un id generat automat in clasa implicita R (R.layout.home). Fisierul home.xml este definit in folderul res/layout si contine o componenta de tip ListView identificata prin R.id.listMainMenu. Prin componenta ListView se afiseaza meniul principal al aplicatiei. Acestei componente i se asociaza un obiect de tip MainMenuAdapter, care este responsabil de afisarea elemetelor listei.
Figura 29. Setarea unui adaptor pentru o lista
In cadrul metodei getView() a clasei MainMenuAdapter se stabileste tipul de layout pentru elementele listei folosindu-se de fisierul cu identificatorul R.layout.main_menu_item. Acesta contine un element de tip TextView si un element de tip ImageView, care sunt afisate pe aceeasi linie in meniu.
4.2.2. Serviciul Google Maps
Aplicatia descrisa in aceasta lucrare are nevoie de conexiune la internet pentru a accesa serviciul Google Maps, si a putea include o harta in cadrul activitatii numite Contact. Afisarea unui fragment de harta se realizeaza cu ajutorul API-ului de servicii Google Play. Pentru a folosi aceste servicii am introdus in AndroidManifest.xml urmatoarele permisiuni:
<permission
android:name="com.application.restaurant.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.application.restaurant.permission.MAPS_RECEIVE"/>
In continuare am adaugat si tag-ul <meta-data> in cadrul elementului <application> :
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
4.2.3. Baza de date
Prin intermediul acestei aplicatii utilizatorul are posibilitatea de a face o comanda, in acelasi timp cu efectuarea rezervarii. Pentru a stoca informatii legate de comada s-a folosit o baza de date SQLite. Clasa DBServices.java contine metode pentru adaugarea de înregistrări, actualizarea, ștergerea sau interogarea tabelei. Aceste operații se realizează cu ajutorul unui obiect de tipul SQLiteDatabase.
Baza de date contine o singura tabela, care are urmatoarea structura:
Figura 34. Structura bazei de date
Capitolul 5 Concluzii
Cuprins Imaginilor
Bibliografie:
1
http://jsoup.org/apidocs/
http://developer.android.com/guide/topics/data/data-storage.html#db.
http://Sqlite.org/arch
http://developer.android.com/reference/android/app/Activity.html
https://developers.google.com/maps/documentation/android/intro
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: Programul de Licență: Calculatoare si Tehnologia Informatiei [302240] (ID: 302240)
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.
