Sunteți pe pagina 1din 15

CUPRINS

INTRODUCERE 1
CAPITOLUL 1. DESCRIEREA SISTEMULUI DE OPERARE ANDROID 2
1.1. Caracteristici ANDROID
1.2. Versiuni ANDROID

1.3. Vedere de ansamblu 3


CAPITOLUL 2. INSTRUMENTE NECESARE REALIZARII UNEI APLICATII
ANDROID 11
2.1. Eclipse IDE

11

2.2. ANDROID SDK 12


2.3. Android Development Tool 13
2.4. Google APIs Add-On 13
CONCLUZII

17

Introducere

Dispozitivele mobile cu Android au cunoscut o foarte mare dezvoltare n ultimii ani, atingnd
o cot de pia majoritar n anul 2012. O dat cu evoluia telefoanelor mobile, s-au extins i aplica iile dezvoltate
folosind sistemul de operare Android.
Ca urmare a acestei evoluii a sistemului de operare Android i a aplica iilor pe dispozitive
mobile, proiectul meu se ncadreaz n aceea i zon de interes i const n implementarea unei
aplicaii inteligente pentru controlul iluminrii i al temperaturii i pentru monitorizarea prezenei umane intr-un
sistem fizic.
Pentru exemplificarea functionalitatii aplicatiei intr-un sistem fizic, este necesara conectarea prin
intermediul protocolului Bluetooth a dispozitivului mobil pe care va fi instalata aplicatia Android cu o platforma de
dezvoltare de tip Arduino, la care vor fi conectati senzorii, releele si dispozitivele pe care dorim sa le controlam.
Lucrarea prezenta trateaza o prima etapa in realizarea aplicatiei, cuprinzand o prezentare detaliata a
sistemului de operare Android. In primul capitol se prezinta o descriere generala a caracteristicilor si versiunilor
Android, urmata de o descriere amanuntinta a elementelor componente ale sistemului. Capitolul 2 cuprinde
prezentarea instrumentelor necesare realizarii unei aplicatii Android, iar in final, in capitolul 4 se descrie structura,
comenzile si atributele aferente necesare realizarii unei interfete intr-un mod declarativ pentru o aplicatie Android.

Capitolul 1- Descrierea sistemului de operare Android


Android un produs open source creat de Google iar de dezvoltarea sa continu ocupandu-se Open Handset
Alliance i const ntr-o colecie de componente software ce cuprinde un sistem de operare, middleware i aplica ii
cheie, destinat dispozitivelor mobile, printre care i smartphone-uri, cu scopul de a putea folosi eficient resursele
acestora n oferirea diverselor funcionalit i utilizatorilor.
1.1. Caracteristici Android
Principalele elemente caracteristice ale sistemului Android sunt:
Platform open-source. Android este un produs open source, distribuit sub licena Apache License versiunea 2 (cu
excepia nucleului de Linux care se afl sub licen GPL versiunea 2), o licen a destul de permisiv ce ofera
libertatea de a copia, distribui i modifica continuul n mod liber fr nici un cost de licen iere, rmnnd la
alegerea dezvoltatorilor dac distribuie sursele modificate sub aceea i licen a sau nu. Singurul element din Android
care face excepie de la aceasta regula este nucleul de Linux care se afla sub licen GPL versiunea 2 ce presupune
c orice modificare a surselor trebuie sa fie fcut public i distribuit n continuare gratuit sub licenta GPL
versiunea 2.
Portabilitatea rulrii pe o gam larg de hardware curente i viitoare. Toate programele sunt scrise n Java i
executate pe maina virtual Dalvik, exist nd posibilitatea portrii codului pe ARM, x86 i alte arhitecturi.
Interfeele utilizator pot fi adaptate la orice rezolu ie pe care o pot avea dispozitivele.
Arhitectur bazat pe componente ce permite reutilizarea componentelor n diverse aplica ii precum i nlocuirea
acestora.
Ofera suport pentru grafic 2D i 3D utilizand OpenGL ES 1.0
Posibilitatea de a stoca datele sub forma unor baze de date de tip SQLite.
Suport pentru formate media uzuale audio, video, i imagini (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
De asemenea Android-ul pune la dispoziia devoltatorilor o serie de unelte utile pentru dezvoltarea aplica iilor
precum un emulator, unelte pentru debugging, pentru msurarea performan elor aplica iilor, i posibilitatea de
intregrare cu Eclipse IDE Android este dezvoltat continuu, fiecare versiune lansat aduce mbunt iri la diverse
componente deja existente precum i elemente i functionalit i noi care sa utilizeze ct mai bine resursele fizice ale
dispozitivelor.
1.2. Versiuni
Fiecare versiune de Android lansat reprezint un nivel API (API level) i este un criteriu important de care
trebuie inut cont n procesul de proiectare a aplica iilor pentru aceast platform. Astfel, dac o aplica ie este
proiectat pentru un nivel API mare corespunzatoare unei versiuni recente de Android atunci aceasta nu va putea
funciona pe dispozitive ce ruleaz versiuni anterioare iar dac o aplica ie este proiectat pentru un nivel API mic,
aceasta va putea rula pe mai multe dispozitive ce au instalate versiuni superioare de Android ns nu vor beneficia
de toate facilitile oferite de versiunile superioare.
Versiunea 4, precum i versiunile superioare, de Android face disponibile aplicaiilor pentru smartphone-uri o
serie de elemente ce nainte se regseau doar n versiunea 3 (o versiune destinat strict tabletelor), elemente ce
permit realizarea unor interfee grafice flexibile i performante i care mbunt esc experien a utilizatorului precum
i alte elemente care mbunataesc performana aplica iilor. Pe baza acestui criteriu s-a ales Android 4.03 Ice
Cream Sandwich corespunzator nivelului API 15 ca i platform int.
n tabelul de mai jos sunt enumerate toate versiunile de Android precum i rspndirea n rndul dispozitivelor
ce ruleaz pe aceast platform:

Grafic distributie versiuni Android


Versiuni de Android
Platforma
1.5
1.6
2.1
2.2
2.3-2.3.2

Denumire
Cupcake
Donut
clair
Froyo

API Level
3
4
7
8
9

Raspandire
0.2%
0.4%
3.7%
14%
0.3%

10
12

57.2%
0.5%

13

1.6%

14
15

0.1%
20.8%

Gingerbread
2.3.3-2.3.7
3.1

Honeycomb

3.2
4.0-4.0.2
4.0.3 -4.0.4

Ice Cream
Sandwich

1.3. Vedere de ansamblu


Android este structurat, conform figurii urmatoare, pe mai multe nivele, fiecare nivel depinznd de
functionalitile oferite de nivelul inferior acestuia.

1.3.1.

Nucleu de linux (linux kernel)

La baza arhitecturii Android se afl un nucleu de Linux 2.6 care asigur functionalit i de baz ale sistemului
precum gestionarea sistemului de fiiere, gestionarea proceselor, a memoriei, a elementelor ce in de re elistic i a
driverelor.
1.3.2.

Librrii

Al doilea nivel al arhitecturii const ntr-un set de librrii C/C++ ce stau la baza func ionrii diverselor
componente ale sistemului Android. Printre aceste librarii se numara:
- Un subset al librariei standard C (libc) special adaptat pentru dispozitive mobile pe care ruleaz Linux.
- O serie de librrii media ce ofer suport pentru formate audio i video uzuale precum MPEG4, H.264, MP3,
AAC, AMR, JPG i PNG
- Suport pentru grafica 2D (funcionaliti oferite de ctre motorul grafic SGL) i 3D (func ionalit i oferite de
libraria OpenGL ES 1.0)
- FreeType -o librrie ce asigur redarea fonturilor vectoriale sau de tip bitmap
- SQLite-Baza de date cu ajutorul creia se pot stoca datele persistente.
SQLite
SQLite este o bibliotec, scris n ANSI-C, n cadrul creia se gse te implementarea unui motor de baze
de date (database engine) tranzacional, de sine-stttor, care nu necesit server sau configurri speciale pentru a
rula. n SQLite citirea, respectiv scrierea datelor se face direct pe disk. O baz de date complet SQL cu mai multe
tabele, indexi, triggere i vederi, va fi stocat pe disk sub forma unui singur fi ier. Formatul fi ierelor n care este
stocat o baza de date SQLite este conceput astfel ncat s fie cross-platform facilitnd portarea bazei de date ntre
sistemele 32-bit i 64-bii sau ntre arhitecturi big-endian si little-endian.
SQLite este o bibliotec compact. Avnd toate caracteristicile activate, dimensiunea bibliotecii poate fi mai
mic de 350KiB, (depinznd de de platforma int i setrile de optimizarea compilatorului). n cazul n care
funcile opionale sunt omise, dimensiunea bibliotecii SQLite poate fi mai mic de200KiB. Astfel SQLite devine
motor SQL ideal pentru dispozitive cu memorie limitat, precum telefoane mobile, PDA-uri, playere MP3.
Proiectul SQLite este administrat de o echip internaional de dezvoltatori care continu s extind
capacitile SQLite cu scopul de a spori spori fiabilitatea i performanele acestuia meninnd n acelai timp
compatibilitate cu interfaa public, sintaxa SQL, baze de date i formatul de fiier.
Tipurile de date ce pot fi folosite in SQLite sunt TEXT (echivalentul tipului de date String din Java),
INTEGER (echivalentul tipului de date long din Java) i REAL (echivalentul tipului de date double din Java) nsa
nu se face validarea automat a tipurilor de date nainte ca acestea s fie introduse n baza de date. n Android se
regsete SQLite versiune 3, fiecare baza de date SQLite fiind salvat n memoria dispozitivului n directorul
DATA/data/NUMELE_APLICATIEI/databases/NUMELE_BAZEI_DE_DATE. SDK-ul de Android pune la
dispoziia devoltatorilor o serie de clase java prin intermediul crora pot fi acesat SQLite i efectuate diverse
operaii asupra bazelor de date. Aceste clase se regsesc n pachetele android.database i android.database.sqlite
Din punct de vedere legal SQLite este ncadrat n domeniului public fcnd astfel posibil utilizarea
codulului n orice scop (att comercial ct i privat) fr nici o constrngere din punct de vedere legal.
Android runtime
Android include un set de librrii care susin o mare parte din funcionalitatea pus la dispoziie de limbajul
de programare Java. Mai exact pune la dispoziie un set restrns de functionaliti oferite de Java SE 1.4 din care au
fost excluse elementele ce in de swing i awt.

Elementele .class sunt convertite de systemul Android in fieisere .dex (Dalvik executable,un tip special de
bytecode optimizat pentru a rula pe dispozitive mobile necesitnd pu ine resurse i consum mic de energie).
Fisierele .dex sunt rulate de ctre maina virtuala Dalvik. Fiecrei aplicaii fiindu-i alocate o instana a ma inii
virtuale Dalvik.
1.3.3.

Application Framework

Acest nivel ofera dezvoltatorilor toate func ionalit ile necesare utilizrii resurselor oferite de sistem precum
i dezvoltarea de aplicaii care s le foloseasc. Este organizat pe componente astfel ncat s permit ca
functionalitile unei aplicaii s poat fi utilizate de ctre alte aplica ii cu condi ia de a respecta constrngerile de
securitate impuse de framework. Tot n cadrul acestui nivel al ierarhiei sistemului se pot gasi o serie de servicii i
mecanisme ce stau la baza funcionrii tuturor aplica iilor precum:
un set bogat de componente UI ce pot fi folosite de ctre dezvoltator n proiectarea interfe elor grafice pentru
aplicaii.
Activity Manager : controleaz ciclul de via al aplicaiilor, modul de comunicare dintre acestea, precum i
navigarea ntre aplicaii.
Resource Manager : controleaz accesul la resursele non-cod, cum ar fi: string-uri, layout-uri, imagini etc.
Content providers : Aceste componente permit ca datele unei aplicaii s fie folosite de ctre alte aplica ii
Notification Manager : permite diferite modaliti de notificare a utilizatorilor.
1.3.4.

Applications

Ultimul nivel este reprezentat de aplica iile propriuzise, create de ctre dezvoltatori i care pot fi folosite de
ctre utilizatorii finali. Androidul vine implicit cu o serie de aplica ii pre-instalate nsa alte aplica ii pot fi descrcate
de pe Android Market sau alte surse online. O aplica ie const ntr-un fi ier . apk (android package) i conine, de
obicei, 3 componente :
Fisierul executabil Dalvik reprezint codul surs Java compilat pentru a ob ine executabilul si care e rulat de
masina virtuala Dalvik
Resurse orice nu este cod surs este o resurs. Aplicaia poate s con in imagini, fi iere audio/video i
numeroase fiiere XML care descriu layout-ul, etc.
Librrii native Opional, aplicaia poate contine librrii native, C/C++, care sunt incluse n fi ierul .apk
Aplicaiile Android sunt scrise n limbajul de programare Java. Codul compilat mpreun cu resursele statice
(imagini, texte etc.) sunt stocate cu ajutorul unui instrument numit appt ntr-un pachet Android cu extensia .apk.
(android package).
Android este un sistem multi utilizator n care fiecare aplica ie e vazut ca un utilizator (fiecrei aplica ii
fiindu-i atribuit un ID de utilizator unic de ctre sistem), astfel fiecare aplica ie instalat ruleaza ntr-un proces
Linux separat. Fiecare proces are propria ruleaz o instant a mainii virtuale Dalvik, astfel c aplicaiile Android
ruleaz izolat una fa de cealalt.
Un alt avantaj al aplicaiilor Android este acela c o aplicaie poate folosi elemente ce apar in altor aplicaii.
Aplicaiile Android sunt formate din componente slab cuplate, legate printr-un fisier manifest.xml n care sunt
descrise fiecare component i modul n care acestea interacioneaz.
Elemente componente
Exist ase componente de baz care care sunt folosite pentru construirea unei aplicaii, componente ce vor fi
discutate individual n paragrafele urmatoare:

Activity
Componentele de tip Activity sunt componentele responsabile cu partea de prezentare a aplica iilor
Android. Aceste tip de component este responsabil de furnizarea unei interfe e grafice utilizatorului precum i de
captarea, respectiv procesarea comenzilor provenite de la utilizator prin intermediul interfe ei grafice. O aplica ie
poate avea n componena ei una sau mai multe componente de tip Activity n func ie de design, una dintre acestea
fiind marcat ca i Activitatea principala a aplica iei, aceasta fiind primul obiect de tip Activity care va fi lansat n
execuie dup pornirea aplicaiei.
Fiecare obiect de tip Activity are un ciclu de viaa compus din mai multe stri. Datele privind strile
diferitelor componente sunt reinute ntr-o structur de date denumit stiv de activiti (back-stack) i este
gestionat de sistem. Aceast structur de date este o structura de tip FIFO, n capul stivei situndu-se obiectul de
tip Activity activ la un moment dat. Cnd utilizatorul interacioneaz cu un alt obiect de tip Activity,acesta ajunge
n capul stivei, benefiind de resursele sistemului iar obiectul precedent trece la un nivel inferior pe stiv, devenind
inactiv i neconsumnd resurse.
Cnd utilizatorul dorete s revin la componenta Activity precedent, componenta pe care era centrat
utilizatorul va fi scoas din stiva i distrus iar componenta precedent va reveni n capul stivei. Un obiect de tip
Activity se poate afla n una din cele 3 stri:
- starea activa: componenta de tip Activity se afl n prim plan (se situeaza n capul stivei de activiti) utilizatorul
interacionand direct cu aceasta.
- stare de ateptare: componentele aflate in aceasta stare nu interactioneaza cu utilizatorul insa sunt vizibile acestuia,
fiind n continuare ataat manager-ului de ferestre. Toate datele legate de starea acestor obiecte sunt pstrate n
memorie. ns n cazul n care sistemul are nevoie de resurse acestea vor fi distruse pentru a elibera resurse.
- stare oprit: componentele aflate n aceast stare nu interac ioneaza cu utilizatorul i nici nu sunt vizibile acestuia.
Toate datele legate de starea activitii sunt pstrate n memorie. ns n cazul n care sistemul are nevoie de
mai multe resurse activitile din aceast stare pot fi distruse pentru a elibera resurse.
Se pot specifica operaiile care s se execute la tranzi ia dintre diversele stri prin implementarea unor metode
de callback furnizate de clasa Activity i care sunt apelate de sistem n momentul tranzi iei.
Elemente de interfata grafic
View si ViewGroup
Interfeele grafice sunt alctuite dintr-o serie de obiecte de tip View si Viewgroup organizate sub forma unei
structuri ierarhice conform figurii de mai jos.
Un obiect de tip View este un obiect care are o reprezentare grafic i cu care utilizatorul poate interac iona.
Un obiect de tip ViewGroup este un obiect ce grupeaza mai multe elemente de tip View si le poate afi a simultan.
Android pune la dispoziie o gam variat de subclase ce extind View i ViewGroup i care pot fi folosite n
construirea interfeelor grafice. De asemenea dezvoltatorii au posibilitatea de a i creea propriile elemente grafice
personalizate extinzand clasele View respectiv ViewGroup.

Exist un obiect central de tip ViewGroup care ine referine ctre restul elementelor de tip View sau
ViewGroup. Exist un element de tip ViewGroup cu rol de printe iar fii acestuia pot fi obiecte de tip View sau
chiar ViewGroup, care la rndul lor pot avea fii de tip View sau ViewGroup.
Dimensiunea arborelui poate crete n func ie de cat de complex este proiectat interfe a grafic, nsa este
recomandat s se pstreze ct mai simpl posibil deoarece mrimea arborelui afecteaz performan a. Interfa a
grafic a unei aplicaii Android poate fi realizat fie programatic din cod fie definit n cadrul unui fi ier XML care
este ncrcat de ctre o component de tip Activity.
Action Bar
Action Bar sau bara de aciuni este un element vizual introdus n Android versiunea 3.0 (API level 11) cu
scopul de a mbunti experiena utilizatorului. Acest element ia forma unei bare orizontale a crui con inut se
schimb n funcie de poziia utilizatorului n cadrul aplica iei. Printre facilit ile oferite de Action Bar se numr:
informarea vizual a utilizatorului n legatur cu pozi ia acestuia n cadrul aplica iei la un moment dat
pune la dispoziia utilizatorului o serie de opiuni n func ie de pozi ia acestuia de n aplica e, op iuni care n
versiuni de Android anterioare 3.0, ar fi localizate ntr-un meniu de op iuni.
Pune la dispoziia utilizatorului diverse modaliti de navigare prin con inutul aplica iei.
Componenta de tip ActionBar furnizeaz un API prin intermediul cruia pot fi controla diverse aspecte ale
acesteia n cadrul aplicaiei din care face parte .
App widget
O componente de tip App Widget poate fi privit ca o aplicaie n miniatur ce ofer posibilitatea
utilizatorului de a vizualiza sau interaciona cu anumite elemente ce in de con inutul aplica ie. O astfel de
component poate fi folosit de componente de tip App Widget Host printre care se numr i Home Screen-ul de
Android
Fragment
n scopul crerii unor interfee grafice mai dinamica i flexibile, odata cu Android 3.0 (nivel API 11) a fost
introdus o nou component denumit Fragment. Un obiect de tip Fragment poate fi privit ca o component ce
modeleaz o anumit parte din comportamentul aplica iei la nivelul interfe ei utilizator oferite de un obiect al clasei
Activity, fiecare Fragment avnd definit propriul comportament fa de interac iunea cu utilizatorul.
Un obiect de tip Activity poate avea n componena interfeei sale grafice mai multe obiecte de tip Fragment
iar un obiect de tip Fragment poate fi proiectat astfel ncat s poat fi refolosit ca i parte componenta a interfe ei
grafice n mai multe obiecte de tip Activity.
Un obiect de tip Fragment are propriul ciclul de viaa, similar cu cel al unui obiect de tip Activity, ns acesta
e strans legat de ciclul de viaa a obiectului de tip Activity n care este ncorporat, astfel dac acesta e n starea de
ateptare atunci i toate componentele sale de tip Fragment vor fi n aceeai stare, dac aceasta este distrus atunci
i toate componentele sale de tip Fragment vor fi distruse.
Orice operaii efectuare asupra obiectelor de tip Fragment (adaugare, tergere,modificare)sunt vzute ca
nite tranzacii denumite Fragment Transactions iar fiecare tranzacie poate fi trecut n stiva de opera ii ale
Activitii (back-stack) ceea le permite utilizatorilor s acceseze diferite stri anterioare ale ciclului de via a ale
Fragmentelor.
Un Fragment poate avea propria interfa grafic definit ntr-un fisier . xml. Interfaa grafic a
fragmentului va fi nserat n ierarhia de View-uri ale activitii din care face parte. Un Fragment poate fi adaugat la

interfata grafica a unui obiect de tip Activity fie folosind tag-ul <fragment> n cadrul fiierului layout.xml al
acestuia fie adaugandu-l din cod la un ViewGroup.
O component de tip Fragment este foarte similar cu una de tip Activity ca i structur,n cadrul lor
regsind aceleai metode onCreate,onStart().onPause(),onStop(), ns au i cteva metode specifice. Fragmentele au
fost concepute astfel nc s ofere suport n realizarea unor interfe e grafice dinamice i flexibile care pot fi
modificate n timpul rulrii, fr a necesita multe modificri la nivelul ierarhiilor de vederi ale activit iilor
Gestionarea fragmentelor se face cu ajutorul unei entitti denumire FragmenteManager care permite urmatoarele
operaii:
-Gsirea anumitor fragmente pe baza de ID
- Gsirea anumitor fragmente pe baz de tag
- Executarea operaiilor de tip fragmente Tranzaction
Un avantaj pe care l au fragmentele este cel c pot fi cu usurin adugate, eliminate, modificate ca rspuns
la aciunile utilizatorului. Aceste aciuni se pot realiza sub forma unor tranzac ii prin folosirea api-ului de fragment
transaction Tranzactiile de tip fragmente tranzaction se pot folosi prin intermediul obiectului de tip
FragmentManager
Servicii
Un serviciu (o component de tip Service) este o component lipsit de interfa grafic i care execut
operaii pe fundal i a crui ciclu de via este independent de cel al altor componente. O component de tip Service
poate fi pornit de ctre alte component i odata pornit, serviciul respectiv i execut independent sarcinile pe care
le are de fcut, chiar daca componenta care l-a pornit ini ial este distrus.
Un serviciu odat pornit ruleaz n mod implicit n cadrul firului de execu ie principal al aplica iei,
executnd operaiile pe care le are de executat, dupa aceea distrugndu-se. Serviciile au un ciclu de via,
simplificat ce este controlat n cea mai mare parte de ctre dezvoltator i nu de ctre sistem.
Content provider (furnizor de coninut)
O componenta de tip Content Provider este un obiect din cadrul unei aplicaii Android care face ca anumite
date, din cadrul aplicaiei,s fie disponibile altor aplica ii. Datele partajate pot fi: fi iere audio, video,imagini, alte
tipuri de fiiere precum i date stocate ntr-o baza de date SQLite.
Pentru a crea o astfel de component, trebuie extins clasa ContentProvider. Aceast clas ofer un set de
metode pentru expunerea i prelucrarea datelor, similare cu cele utilizate pentru baze de date. O parte din
elementele native ale sistemului Android conin componente de tip ContentProvider fcnd disponibile altor
aplicaii date precum, datele gestionare de manager-ul de contacte a dispozitivului i altele.
Pentru a putea accesa datele, oferite de un anumit furnizor de con inut, trebuie folosit un obiect de tip
ContentResolver. Un ContentResolver este un obiect client ce furnizeaz operaii CRUD (create, read, update i
delete) asupra datelor oferite de ctre un ContentProvider dintr-o anumita aplicaie. Toate elementele ce in de
comunicarea dintre procese (procesul aplica iei ce con ine ContentProvider-ul i procesul aplicaiei ce solicit
datele) sunt gestionate automat de ctre sistem.
Receptori de anunuri (Broadcast Receivers)
Un obiect de tip Broadcast Receiver este o component care rspunde la mesaje de tip broadcast.
Mesajele de tip broadcast pot fi transmise de ctre sistem, pentru a notifica aplica iile despre anumite modificari ale
parametrilor sistemului (precum nivelul memoriei, bateria disponibil), sau de ctre aplica ii pentru a notifica alte
aplicaii despre anumite evenimente precum terminarea descrcrii unui fi ier .

n funcie de coninutul mesajelor de broadcast anumite aplicaii pot reaciona la evenimentele anun ate.
Pentru a putea implementa o astfel de componenta trebuie extins clasa BroadcastReceiver iar mesajele de
broadcast sunt de obicei obiecte de tip Inten (intenii). Acest tip de component nu posed o interfa grafic
proprie, nsa pot comunica cu utilizatorul prin trimiterea de notificari ctre bara de stare (satus bar). Acest sistem de
mesaje de broadcast i receptori de broadcast poate fi vazut ca un mecanism de tip publish-subscribe sau o
implementare a ablonului Observer.
Intent (Intenii)
O intenie, sau un obiect de tip Intent, conine informaii despre operaiile pe care ar trebui s le fac o
anumit component destinaie pe un anumit set de date. Cu ajutorul obiectelor de tip Intent este posibil
comunicarea, n timpul rulrii, cu diverse componente aflate fie n interiorul aceleia i aplica ii fie sunt localizate n
alte aplicaii. Printre componentele ce pot fi activate prin intermediul obiectelor de tip Intent se numar obiecte de
tip Activity, Service i BroadcastReceiver.
Exist 2 tipuri principale de intenii: intenii implicite i intenii explicite. In cadrul inteniilor explicite este
specificat obiectul distinaie care s realizeze prelucrrile cerute (fie ca e de tip Activity, Service sau
BroadcastReceiver). In cazul inteniilor explicite, rmane pe seama sistemului sarcina de a selecta aplica ia
corespunzatoare care s raspund la solicitatea din cadrul Intent-ului.
Elementele din Intent care sunt analizate sunt cele din categoriile action, data, i category. In acest caz
sistemul ine cont de filtrele de intenie declarate n fiierul manifest a fiecarei aplicaii. Un filtru de intenii (intent
filter)specifica tipul de intenii pe care le poate prelucra o anumita aplica ie.
Fisierul manifest Android
Fiecare proiect Android include un fiier xml denumit AndroidManifest.xml, stocat n directorul rdcin
al proiectului. In acest fiier sunt descrise componentele folosite n aplicaie i alte informaii referitoare la
permisiuni sau librrii ce trebuie legate de aplicaia curent. Se poate defini versiunea de Android folosit de
aplicaie, resursele i drepturile de care are nevoie aplica ia pentru a putea rula. Structura acestui fiier impune
prezena unui tag rdacin <manifest> urmat de tag-ul <application> n interiorul cruia vor fi descrise
componentele care alctuiesc aplicaia.
Procese si fire de executie in Android
Atunci cnd e necesar pornirea unei aplica ii, sau a unei anumite componente dintr-o aplica ie Android
pornete automat un nou proces Linux cu un singur fir de execuie pentru componenta respectiv. Acest proces este
cunoscut i sub numele procesul principal (procesul main) al aplica iei. n cazul n care a fost pornit un proces
pentru o component aparinnd unei aplicaii anume, atunci orice cerere ulterioar de a rula alte componente
apartinnd aceleai aplicaii vor fi executate n acela i process nefiind creat unul nou.
Procese
Android ncearc s menin procesele n stare de funcionare pe ct de mult posibil, acestea fiind oprite
doar n cazul n care sistemul are nevoie s recupereze resurse pentru a executa opera iile importante, ns n cazul
n care sistemul are nevoie de resurse, vor fi oprite procesele mai pu in importante n favoarea celor importante In
funcie de importana acestora exista 5 tipuri de procese:
Procese de tip foreground. Acest nivel de importa este asociat proceselor n care ruleaz componentele ce se afl
n prim plan i cu care utilizatorul interacioneaz direct la un moment dat.Exista un numar mic de astfel de procese
la un moment dat i sunt oprite doar n ultim instan atunci cnd starea resurselor e critic.
Procese vizibile.Acest tip de procese gzduiesc componente care nu sunt n prim plan dar care ns sunt vizibile
pentru utilizator.
Procese de tip service. Acest tip de procese conin componente de tip Service care ruleaza n fundal efectund
diverse operaii

Procese de fundal. Acest tip de procese conin componente care nu mai sunt vizibile utilizatorului. La un moment
dat pot exista multe astfel de procese, evidena acestora fiind pstrat ntr-o lista ordonat n func ie de ct de recent
au fost accesate componentele acestora. Astfel c un proces ce con ine un obiect de tip Activity care a fost folosit
recent va fi oprit ultimul process de tip background oprit n cazul n care sistemul are nevoie s recupereze resurse.E
indicat s fie implementate corect metodele de callback ce in de ciclul de viaa din cadrul fiecrei componente,
pentru a preveni o eventual pierdere a datelor n cazul n care procesul acestora este oprit.
Procese goale. Acest tip de procese nu conin nicio componenta activ, avnd doar rol de caching. Rolul lor fiind
cel de a mbunti timpul de lansare a unei noi component far a carea un nou proces.
Importana unui proces este de dat de gradul de importan a componentelor ce ruleaz n acesta. Importan a
proceselor mai este data i de interdependena dintre ele. Astfel c dac, de un anumit proces depinde un alt proces
cu un grad rididat de importan atunci procesului respectiv I se va asocia cel pu in acela i grad de importan .
Fire de executie
Implicit fiecrei aplicaii i este asociat un singur fir de executie cunoscut ca i firul principal de execu ie
(main thread). Toate instanierile de obiecte respectiv prelucrri de date sunt executate pe acest fir de execu ie. Tot
n cadrul acestui fir de execuie au lor operaiile ce vizeaz interac iunile dintre elementele de Android UI toolkit
(components ce apartin pachetelor android.widget si android.view i aplica ia propriu-zis, de aceea acest fir de
execuie mai este supranumit i UI thread.
Exist o problem n acest cazul operaiilor solicitante deoarece ar afecta performan a aplica iei i ar putea
duce la blocarea ei. In cazul operaiilor mai complicate se poate implementa un obiect de tip Handler care apoi s
fie asociat unui nou fir de execuie sau se pot folosi obiecte de tip AsyncTask.
Asynctask
Obiecte de tip AsyncTask pot fi folosite pentru a efectua prelucrri asincrone asupra obiectelor apartinnd
interfeei grafice. Operaiile sunt executate n cadrul unor fire de execu ie care ruleaz pe fundal iar rezultatul
operaiilor este publicat n elementele corespunzatoare situate n UI Thread. Pentru a folosi un astfel de obiect
trebuie extins clasa AsyncTask i implementat metoda doInBackground(). Operaiile specificate n aceasta
metod vor fi executate n cadrul unor fire de execuie ce ruleaz n fundal.
Loader(incarcator)
Un obiect de tip Loader este un obiect ce faciliteaz ncrcarea asincrona a datelor n cadrul unui obiect de
tip Activity sau Fragment. Acest tip de obiect este disponibil odata cu versiune 3.0 de Android i este special
conceptul pentru obiecte de tip Activity i Fragment pentru a putea ncarca date din diverse surse de date n mod
asincron fr ca aceast operaie s fie executate pe UI thread i afecteze performan a aplica iei. Un obiect de tip
Loader odat creat monitorizeaz sursa de date actualiznd automat interfa a grafic n cazul modificrii datelor.

Capitolul 2 - Instrumente necesare realizarii unei aplicatii Android


2.1. Eclipse IDE
Eclipse este un mediu de dezvoltare software scris n Java care poate fi folosit pentru dezvoltarea
aplicaiilor software n diverse limbaje de programare, printre care se numr i Java. Eclipse este structurat sub
forma unei ierarhii de plugin-uri ce asigur diferite func ionalit i.
Aceste funcionaliti fiind asigurate fie de ctre plugin-uri individuale sau de ctre combina ii de pluginuri, fiecare plugin fiind activat n mod dinamic doar n momentul n care func ionalitatea respectiv este apelat.
Infrastructura de baz din Eclipse este asigurat de catre plugin-urile furnizate de Eclipse RCP.
Platform Runtime

Resource management (workspace)

Component, implementat folosind framework-ul


OSGi, responsabil de descoperirea dinamic a pluginurilor i meninerea unei evidene a acestora n registul
platformei. Asigur c plugin-urile sunt ncrcate i
lansate n execuie atunci cnd e nevoie de ele.
Component ce definete API-urile necesare crerii
repsectiv gestionrii resurselor (precum proiecte, fi iere
i directoare) care sunt produse de ctre tool-uri i
salvate n sistemul de fiiere.

Eclipse UI Workbench

Asigur interfaa grafic prin intermediul creia


utilizatorul poate accesa functionalitile oferile de toolurile instalate, punnd la dispoziia acestuia diverse
modaliti de vizualizare, meniuri i alte elemente prin
intermediul crora utilizatorul poate manipula diverse
resurse.

Help system

Component ce permite vizualizarea documentaiilor


oferite de plugin-uri

Team support
Component ce faciliteaz lucrul n echip n cadrul
proiectelor, oferind functionaliti precum gestionarea i
versionarea resurselor
Debug support

Component ce pune la dispoziie un model de debugger


independent de limbaj precum i diverse clase cu
ajutorul crora se pot proiecta tool-uri de debugging.

Other utilities

Alte tipuri de plugin-uri care opereaza asupra resurselor,


precum execuia operaiilor de build n funcie de
specificaiile menionate ntr-un fiier de configurare
XML.

De asemenea este posibil extinderea functionalit ilor oferite de Eclipse prin adaugarea de noi pluginuri. In
prezent exist mai multe versiuni de Eclipse iar pentru realizarea proiectului a fost folosit Eclipse 3.6 Helios
deoarece este versiunea minim compatibil cu plugin-ul de ADT .

2.2. Android SDK


Android SDK reprezint pachetul de componente software i unelte cu ajutorul crora se pot dezvolta
aplicaii pentru dispozitive mobile ce ruleaz pe Android. SDK-ul de Android este compus dintr-o colec ie modular
de pachete care pot fi descrcate separat prin intermediul componentei SDK manager. n tabelul de mai jos sunt
menionate pachetele importante.
Pachet

Localizare n cadrul SDK-ului


Descriere

SDK Tools

SDK Platform-tools

Cuprinde unelte necesare depanrii


i testrii aplicaiilor alturi de alte
utilitare necesare dezvoltrii
aplicaiilor.
Conine unelte specifice anumitor
platforme de Android necesare
proiectrii respectiv depanrii
aplicaiilor specifice platformei
respective.

<sdk>/tools/

<sdk>/platform-tools/

Documentation

O copie offline actualizat a


documentaiei API-urilor diverselor
platforme de Android.

<sdk>/docs/

SDK Platform

Exist o platfoma SDK pentru


fiecare versiune de Android lansat,
care poate fi alesa ca i platforma
int pentru aplicaii

<sdk>/platforms/<androidversion>/

Fiecare platform ofer una sau mai


multe imagini sistem pentru (ARM
sau x86). Aceste imagini sistem sunt
necesare emulatorului de Android
pentru a putea rula.

<sdk>/platforms/<androidversion>/

Sources for Android SDK

O copie a codului surs pentru


componentele diverselor platforme
de Android.

<sdk>/sources/

Samples for SDK

Exemple care ilustreaz


funcionalittile diverselor API-uri
de Android

<sdk>/platforms/<androidversion>/samples/

Google APIs

Pachet special ce permite unei


aplicaii s apeleze servicile oferite
de Google prin intermediul Google
API. Ofer i o imagine system cu
ajutorul creia pot fi testate ce
folosesc Google API

<sdk>/add-ons/

Android Support

Librrie suport care poate fi inclus


n aplicaii pentru a putea oferi
acestora functionaliti disponibile
unui nivel API superior n cazul n

<sdk>/extras/android/support/

System Images

care acestea trebuie s ruleze pe o


versiune de Android.
Google Play Billing

Librrie static care permite


integrarea unui serviciu de taxare n
aplicaii cu google Play

<sdk>/extras/google/

Google Play Licensing

Librrie ce ofer functionaliti de


verificare a licenelor pentru aplicaii
atunci cnd acestea sunt distribuite
prin intermediul serviciului Google
Play

<sdk>/extras/google/

2.3. ADT (Android Development Tool)


SDK-ul de Android poate fi integrat cu mediul de dezvoltare Eclipse prin intermediul unui plugin denumit
Android Development Tool. ADT este un tip special de plugin conceput pentru Eclipse menit sa faciliteze
devolzarea aplicaiilor destinate pentru Android. Acesta extinde capabilitile IDE-ului oferind posibilit i precum
crearea de proiecte, proiectarea de interfe e grafice, compilare i generare de APK-uri , instalarea aplica iilor pe
dispozitive sau pe emulator.
Acest tool ofer o serie de perspective prin intermediul crora devoltatorii pot, n mod vizual accesa diverse
tool-uri oferite de SDK , monitoriza resurse, seta i controla instane ale emulatorului, depana i testa aplica ii.
2.4. Google APIs Add-On
Google API add-on este o extensie a SDK-ului de Android ce ofer dezvoltatorilor posibilitatea de a integra n
aplicaiile lor servicii oferite de Google. In cadrul acestui add-on este inclus o librrie pentru GoogleMaps i alte
componente necesare accesrii serviciilor oferite de Google. Acest Add-on cuprinde i o imagine sistem cu librriile
necesare rulrii,testrii i depanrii aplicaiilor cu ajutorul Emulatorului. Pachetul Google APIs add-on cuprinde:
- Librria extern pentru GoogleMaps
- Libraria USB Open Accessory (compatibila doar cu API Levels 10 i 12+)
- Imagine sistem Android (cu diverse componente sistem integrate)
- Aplicaie demo n care e folosit librria GoogleMaps denumit MapsDemo
- Documentaia aferent librriei pentru GoogleMaps.

S-ar putea să vă placă și