Aplicatii Mobile. Info Mobile

Aplicații mobile. Info-mobile

CUPRINS

INTRODUCERE

CAPITOLUL 1. OBIECTIVELE ȘI SPECIFICAȚIILE LUCRĂRII

CAPITOLUL 2. TEHNOLOGII SOFTWARE FOLOSITE ÎN REALIZAREA SISTEMULUI INFORMATIC

2.1. SCURTĂ ISTORIE A SISTEMULUI DE OPERARE ANDROID

2.1.1. INTRODUCERE ÎN PLATFORMA ANDROID

2.1.2. ARHITECTURA ANDROID

2.1.3. ARHITECTURA APLICAȚIILOR ANDROID

2.1.4. COMPONENTELE UNEI APLICAȚII

2.2. SDK-UL ANDROID

2.3. ECLIPSE

2.4. EMULATORUL ANDROID

2.5. TRATAREA EXCEPȚIILOR

2.6. UTILIZAREA LAYOUT-URILOR XML

2.7. SQLITE

2.8. LOCALIZARE ȘI GOOGLE MAPS ÎN ANDROID

2.8.1. GOOGLE MAPS API

2.8.2. LOCALIZARE PE ANDROID(LOCATION MANAGER)

CAPITOLUL 3. PREZENTAREA SISTEMULUI INFORMATIC

3.1. ANALIZA SISTEMULUI

3.1.1. MOTIVAȚIA

3.1.2. CONTEXTUL SISTEMULUI

3.1.3. ACTIVITĂȚI ȘI PROCESE

3.1.4. DEZVOLTAREA CERINȚELOR ȘI SPECIFICAȚIILOR APLICAȚIEI

3.2. PROIECTAREA SISTEMULUI INFORMATIC

3.2.1 ORGANIZAREA BAZEI DE DATE

3.2.2. PROIECTAREA INTERFEȚEI GRAFICE CU UTILIZATORUL

3.3. IMPLEMENTAREA ȘI TESTAREA SISTEMULUI INFORMATIC

CAPITOLUL 4. CONCLUZII

GLOSAR

BIBLIOGRAFIE

LISTA FIGURI

Figura 1. Arhitectura Android 8

Figura 2. Arhitectura mașinii virtuale Dalvik 10

Figura 3. Ciclul de viață al unei activități 14

Figura 4. Ciclul de viață al unui serviciu 15

Figura 5. Diagrama Fish-Bone 30

Figura 6. Structura tabelelor și relațiile dintre acestea 31

Figura 7. Diagrama Activități/Procese 35

Figura 8. Diagrama actori și activități 40

Figura 9. Tabelele bazei de date 44

Figura 10. Ecranul de pornire al aplicației ”InfoMob” 48

Figura 11. Meniul principal al aplicației 48

Figura 12. Alegerea unui modul din meniu 49

Figura 13. Layout Linii RATUC 49

Figura 14. Layout-ul-Orarul liniilor de RATUC 50

Figura 15. Alegerea modulului Statii 50

Figura 16. Alegerea unei stații 51

Figura 17. Liniile care trec printr-o stație 51

Figura 18. Modulul Bilete si Abonamente 52

Figura 19. Programul tonetelor de bilete și abonamente 52

Figura 20. Modulul Harta 53

Figura 21. Localizare pe harta 53

Figura 22. Fereastra ”Pick an option” 54

Figura 23. Pinpoint pe hartă 54

Figura 24. Alegerea opțiunii ”Toggle View” 55

Figura 25. Alegerea opțiunii ”Get adress” 55

Figura 26. Icon-ul aplicației 59

LISTA TABELE

Tabelul 1. Comparație între Google Maps și Google Maps Android 26

Tabelul 2. Ferestrele aplicației 42

INTRODUCERE

SCOPUL ȘI OBIECTIVELE LUCRĂRII

Telefonul este „mijloc de telecomunicație care asigură convorbiri la distanță prin fire electroconductoare”[14]. Scopul utilizării lui este de a putea transmite vocea umană, dar și a altor sunete. Evoluția tehnologiei și-a pus amprenta și în domeniul telefoniei, astfel apărând telefonul mobil.

Telefonul mobil este un dipozitiv electric, portabil care funcționează fară fir, pe baza rețelei GSM, folosit pentru a facilita comunicarea cu persoanele aflate la distanță mare.

În ziua de azi are loc o evoluție rapidă a telefoniei mobile. Telefoanele mobile nu au fost mai populare ca acum, smartphone-urile devenind cea mai bună alegere a cumpărătorilor. Acestea dispun de caracteristici hardware folositoare precum GPS(Global Positioning System), accelerometre și ecrane tactile. Împreuna formează o platformă ispititoare pentru tinerii dezvoltatori de aplicații mobile.

Acum pe piață sunt multe platforme mobile ca de exemplu: Symbian, iPhone, Windows Mobile, BlackBerry, Java Mobile Edition și multe altele. Cea mai revoluționară dintre toate este Android. Aceasta este o platformă software și un sistem de operare pentru dispozitivele și telefoanele mobile bazată pe nucleul Linux. Dezvoltatorii de aplicații au facilitatea de a scrie cod Java controlând dispozitivul prin intermediul bibliotecilor Java. Adevăratul câștig pentru cei pasionați este dezvoltarea aplicațiilor mobile Android deoarece sunt liberi să scrie aplicații profitând din plin de hardware-ul mobil care este din ce în ce mai puternic și posibilitatea de a le distribui pe o piață deschisă. Ca urmare, interesul în dezvoltarea pe dispozitivele Android a explodat, iar vânzarile sunt într-o continuă creștere. În general un dispozitiv Android este disponibil în peste 26 de țări.

Android este un software open-source care include sistemul de operare, middleware și aplicații mobil cheie încorporate cu un set de librării API(Application Programming Interface) care pot modela aspectul, simțul și funcția de telefon mobil. Mici, cu stil și versatile, dispozitivele moderne mobile au devenit instrumente importante care încorporează cameră, player media, sisteme GPS și touchscreen-uri. Ca și tehnologie au evoluat, telefoanele mobile devenind mai mult decât simple sisteme de comunicat la distanță, astfel software-ul lor cât și platformele de dezvoltare au luptat să țină pasul.

În Android, toate aplicațiile au statut egal. Cele native cât și cele de la terțe părți sunt scrise cu aceleași API-uri și sunt executate în același timp. Utilizatorii pot scoate și/sau înlocui orice aplicație nativă, cu o alternativă a dezvoltatorilor terțe părți.

Aplicațiile Android sunt scrise în limbajul Java, dar nu rulează ca o mașină virtuală Java ME(Java Platform, Micro Edition), iar clasele Java compilate și execuatibilele nu rulează nativ în Android. Această platformă include un design de referință pentru producătorii de telefoane mobile, dar nu există un singur ”telefon Android”. În schimb, Android a fost conceput pentru a sprijini mai multe dispozitive alternative hardware.

În consecință, Andorid este o combinație de trei elemente:

Un sistem de operare open-source gratis pentru dispozitivele mobile

O platformă de dezvoltare open-source pentru a putea crea aplicații mobile

Dispozitive, telefoane mobile care rulează sistemul de operare Android și aplicațiile care au fost create pentru el

Telefoanele Android vin în mod normal cu o multitudine de aplicații preinstalate care sunt părți ale Proiectului Android Open Source(Android Open Source Project-AOSP). Datele stocate și utilizate de către multe dintre aceste aplicații native- cum ar fi datele de contact- sunt deasemenea disponibile pentru aplicațiile dezvoltate de terțe persoane. Acestea pot trata și evenimente, cum ar fi apeluri sau mesaje noi SMS (Short Message Service).

Evoluția tehnologiei a revoluționat și în cadrul telefoanelor mobile, primul telefon portabil apărând în 1942. A trebuit să treacă 35 de ani până când oamenii au început să folosească telefone mobile la o scară mult mai mare. În 1983 Motorola a prezentat primul telefon mobil comercial. Pe lângă Internet care nici el nu mai este considerat un simplu mod de a obține cu ușurință informații variate, telefonul mobil devine și el parte importantă a vieții umane.

În plus telefonul mobil ne oferă un cadru în care ne putem gestiona e-mail-urile, pozele, conturile pe diferite platforme de socializare și nu numai. Toate acestea putând să le realizezi fie că ești acasă, pe stradă, la facultate sau în orice alt loc, fară a mai lua cu noi laptopul.

În cadrul lucrării de licență ”Aplicații mobile. InfoMobile” se prezintă o modalitate de gestiune și redare eficientă a informațiilor cu privire la mersul mijloacelor de transport în comun.

Lucrarea de față urmărește realizarea unei aplicații ”InfoMobile” care va fi folosită la nivelul orașului Cluj-Napoca. Ea vine în ajutorul utilizatorilor oferindu-le informațiile necesare cu privire la mijloacele de transport în comun din oraș. În linii mari, prin intermediul acestei aplicații, utilizatorii vor avea acces mai ușor și rapid la toate informațiile cu privire la mijloace de transport indiferent de locul în care se află.

PREZENTAREA PE SCURT A CAPITOLELOR

Capitolul 1 prezintă în detaliu scopurile și obiectivele aplicației realizate și totodată funcționalitățile oferite de aceasta.

Capitolul 2 abordează conceptele de bază a instrumentelor și metologiilor software utilizate pentru dezvoltarea aplicației ”InfoMobile”. Acesta reprezintă doar o introducere în tehnologiile folosite.

Capitolul 3 descrie cerințele și specificațiile aplicației. Deasemenea prezintă și arhitectura și proiectarea bazei de date folosite, precum și cea propriu-zisă a aplicației, interfața cu utilizatorul, implementarea, testarea și utilizarea sistemului.

Capitolul 4 prezintă dezvoltarea aplicației și beneficiile aduse de implementarea și utilizarea acesteia. Totodată, în acest capitol sunt enumerate și posibilitățile de dezvoltare și îmbunătățire a sistemului în viitor.

CAPITOLUL 1. OBIECTIVELE ȘI SPECIFICAȚIILE LUCRĂRII

În cadrul acestui capitol vor fi prezentate obiectivele și specificațiile proiectului de față, dar și funcționalitățile oferite de aplicația dezvoltată.

Prezenta lucrare își propune să faciliteze procesul de consultare al sistemului liniilor de RATUC(Regia Autonomă de Transport de Călători)din orașul Cluj-Napoca. Pentru aceasta voi dezvolta o aplicație care va cuprinde atât informații cu privire la liniile de transport cu orarul aferent, stațiile prin care trec acestea, cât și orarul tonetelor de bilete și abonamente.

Grupul țintă căruia se adresează această aplicație este împărțit în două categorii. Prima categorie este cea a persoanelor care circulă frecvent cu mijloacele de transport în comun, iar cea de-a doua categorie este reprezentată de acele persoane care folosesc rar acest tip de mijloc de transport.

Am ales să dezvolt această aplicație pentru acest segment țintă din varii motive. Primul motiv este că, în momentul de față mijloacele de transport în comun sunt cele mai ieftine dintre toate celelalte alternative. Un al doilea motiv este faptul că dacă ești student/elev la o instituție de stat în acest oraș ai, pe de o parte reduceri la abonament pentru mijloacele de transport în comun, iar pe de altă parte dacă ești și la buget dispui de linii gratuite, motiv pentru care mulți dintre tineri circulă cu autobuzul, troleibuzul sau tramvaiul. Un alt motiv este acela de a le ajuta pe acele persoane care nu sunt obișnuite cu aceste mijloace de transport.

Aceasta va fi destinată tuturor utilizatorilor, indiferent de vârstă, etnie, etc., cu singura condiție de a deține un smartphone încorporat cu un sistem de operare Android versiuni până în 2.2. Cu ajutorul acestei aplicații se vor desfășura următoarele activități: căutarea și aflarea programului unui traseu oarecare, căutarea destinției, afișarea liniilor de autobuz corespunzătoare acesteia și stațiile prin care acesta trece(dus, întors), aflarea programului tonetelor RATUC de cumpărare a biletelor sau/și a abonametelor și localizarea pe harta orașului.

Aplicația dezvoltată va avea patru module: unul care va oferi informații despre liniile mijloacelor de transport( autobuz, troleibuz, tramvai) cu programul respectiv, cel de al doilea va permite utilizatorului să caute stațiile și autobuzele care trec prin acestea, precum și programul fiecărei linii, cel de-al treilea modul va oferi informații cu privire la programul tonetelelor de bilete și abonamente, precum și tipul lor, iar ultimul va localiza utilizatorul pe harta orașului. Pentru toate acestea se vor folosi tehnologiile disponibile de dezvoltare a aplicației.

Sistemul va putea fi folosit atât offline cât și online. Pentru realizarea acestuia este nevoie de o bază de date în care vor fi stocate într-un mod organizat informații referitoare la liniile de RATUC, orarul fiecăreia, stațiile prin care acestea trec și orarul ghișeelor de bilete și abonamente.

Aplicația trebuie să respecte anumite reguli :

Să aibă o interfață prietenoasă cu utilizatorul, să fie pe înțelesul tuturor utilizatorilor.

Utilizatorul va putea să caute doar informațiile de care el are nevoie fără a avea posibilitatea de a modifica baza de date.

Aplicația trebuie să fie eficientă (raportul dintre nivelul de performanță și resursele utilizate să fie unul optim), portabilă (se va implementa doar pe smartpohne-uri care dețin un sistem de operare Android), utilizabilă ( trebuie să existe un echilibru între caracteristicile care fac aplicația ușor dlelor de bilete și abonamente, precum și tipul lor, iar ultimul va localiza utilizatorul pe harta orașului. Pentru toate acestea se vor folosi tehnologiile disponibile de dezvoltare a aplicației.

Sistemul va putea fi folosit atât offline cât și online. Pentru realizarea acestuia este nevoie de o bază de date în care vor fi stocate într-un mod organizat informații referitoare la liniile de RATUC, orarul fiecăreia, stațiile prin care acestea trec și orarul ghișeelor de bilete și abonamente.

Aplicația trebuie să respecte anumite reguli :

Să aibă o interfață prietenoasă cu utilizatorul, să fie pe înțelesul tuturor utilizatorilor.

Utilizatorul va putea să caute doar informațiile de care el are nevoie fără a avea posibilitatea de a modifica baza de date.

Aplicația trebuie să fie eficientă (raportul dintre nivelul de performanță și resursele utilizate să fie unul optim), portabilă (se va implementa doar pe smartpohne-uri care dețin un sistem de operare Android), utilizabilă ( trebuie să existe un echilibru între caracteristicile care fac aplicația ușor de utilizat și cele care asigură siguranța – în cazul în care utilizatorul încearcă să modifice ora de plecare/sosire a unui autobuz/troleibuz/tramvai textboxul respective să fie blocat), fiabilă (aplicația trebuie să fie suficient de bine testată astfel încat să fie eliminate toate situațiile în care se produc întreruperi accidentale ale execuției).

În realizarea sistemului trebuie să se țină cont de faptul că resursele umane sunt limitate, și anume un singur programator, care va fi responsabil de realizarea întregii aplicații.

Funcționalitățile oferite de modulul ”Linii” sunt următoarele:

Posibilitatea de căutare într-o listă derulantă a unei linii

Vizualizarea programului respectivei linii introduse anterior

Posibilitatea întoarcerii la meniul inițial

Funcționalitățile modulului ”Stații” sunt:

Posibilitatea alegerii dintr-o listă derulantă a unei stații

După căutarea stației dorite, se oferă posibilitatea aflării(vizualizării) mijloacelor de transport care trec prin acea stație

Posibilitatea aflării orarului liniilor care trec prin acea stație

Posibilitatea întoarcerii la meniul inițial

Funcționalitățile puse la dipoziție de modulul ”Bilete_si_Abonamente” sunt:

Posibilitatea aflării tipului de tonetă( abonamente și bilete / bilete)

Posibilitatea aflării orarului zilnic(de luni până vineri)

Posibilitatea aflării orarului zilelor de sâmbătă

Posibilitatea aflării orarului zilelor de duminică

Posibilitatea întoarcerii la meniul inițial

Funcționalitățile puse la dipoziție de modulul ”Localizare” sunt:

Posibilitatea localizării pe hartă a utilizatorului

Posobilitatea punerii de pinpoint-uri

Posibilitatea schimbării dintr-o hartă cu vedere satelit într-o stradă cu vedere a străzilor

Posibilitatea de a da zoom sau de micșorare a hărții

Posibilitatea întoarcerii la meniul inițial

CAPITOLUL 2. TEHNOLOGII SOFTWARE FOLOSITE ÎN REALIZAREA SISTEMULUI INFORMATIC

Acest capitol prezintă conceptele teoretice și instrumentele necesare pentru dezvoltarea unei aplicații mobile Android. Pentru realizarea proiectului dorit s-au folosit următoarele instrumente software:

Microsoft Windows(XP, 7, Vista)

Sistemul de operare Android

SDK-ul Android

Kit-ul de dezvoltare Eclipse(JDK) 5 sau 6

Emulatorul Android

Conceptele teoretice folosite sunt următoarele:

De programare obiectuală Java

Comenzi SQLite

Tratarea excepțiilor

Conectarea la o bază de date SQLite

Utilizarea layout-urilor XML(eXtensible Markup Language)

Localizare și Google Maps în Android

2.1. SCURTĂ ISTORIE A SISTEMULUI DE OPERARE ANDROID

Contrar celor spuse, Android nu a fost creat de Google. Istoria acestui sistem de operare începe în luna octombrie a anului 2003 în California, Statele Unite ale Americii, când patru tineri, Andy Rubin, Rich Miner, Nick Sears și Chris White, au înființat corporația Android. În luna august a anului 2005, Google a văzut potențialul firmei pe care a și cumpărat-o. Cofondatorii companiei Android au continuat să munceasca la Google. De aici seria Android a început să ia o formă și să devină o tehnologie de ultimă oră.[17]

La început era o companie care dezvolta software pentru dispozitive mobile, departe de ceea ce este în prezent. Acum Android este sistemul de operare mobil din top și uitându-ne la istoria acestuia rămâi uimit când vezi cât de mult a progresat în ultimii ani, acesta învingând domnia de 10 ani a sistemului de operare Symbian.[20]

Pe 5 noiembrie 2007 a fost făcut public Open Handset Alliance, un consorțiu care includea Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, Sprint Nextel și Nvidia. Scopul acestuia era de a dezvolta standardele deschise pentru dispozitive mobile. O dată cu acest lucru a fost lansat Android, o platformă pentru dispozitivele mobile bazată pe nucleul Linux, versiunea 2.6.[19]

În 2008, pe 9 decembrie încă 14 membri s-au unit la proiectul Android: Sony Ericsson, Vodafone Group Plc, ARM Holdings Plc, Asustek Computer Inc, Toshiba Corp și Garmin Ltd. La 21 octombrie 2008, Android a fost declarat Open Source, Google deschizând întregul cod sursă care înainte era sub licența Apache.[18]

Obiectivul alianței era de a innova rapid și de a răspunde mai bine la nevoile consumatorilor, și primul rezultat cheie a fost platforma Andoird. Android a fost conceput pentru a servi nevoile operatorilor de telefoane mobile, producătorilor de telefoane și dezvoltatorilor de aplicații. SDK-ul Android a fost emis pentru prima dată în noiembrie 2007. În septembrie 2008, T-Mobile a anunțat lansarea primului smartphone bazat pe platforma Android, T-Mobile G1.

Când Android a fost realizat, unul dintre scopurile cheie ale acestei arhitecturi a fost de a permite aplicațiilor de a interacționa între ele și de a refolosi componente între ele. Această refolosire nu se aplică doar pentru servicii, ci și deasemenea la date și interfața cu utilizatorul(UI). Android a atras o folosire devreme datorită caracteristicilor sale pe deplin dezvoltate pentru a exploata modelul cloud-computing oferit de resursele web.

În 2010 s-a declarat că sistemul de operare Android este cea mai vândută platformă smartphone de pe piață. Adevărata putere din spatele Android este piața Android unde ai acces la peste 150.000 de aplicații, permițând utilizatorilor să caute și să descarce aplicațiile direct pe propriile telefoane.

Încă de la varianta originală, Android a suferit multe îmbunătățiri și transformări. Fiecare versiune(ultima mai nouă decât cea de dinaintea ei) primind un nume de cod ordonat alfabetic: ”Cupcake”,”Donut”,”Eclair”,”Froyo”,”Gingerbread”și cea mai recentă ”Honeycomb”.

Prima versiune ”Cupcake” a fost bazată pe kernelul Linux și a fost realizată pe 30 Aprilie 2009. Unele dintre caracteristicile sale au fost tastatura virtuală care a venit cu sugestii de text și dicționar, camera care poate și înregistra, widgets, reda video, Bluetooth, browser pentru mobile, dialer și tranziții ale ecranului animate.

”Donut” a fost realizat la 5 luni după, în 2009. A fost o variantă imbunătățită a versiunii anterioare. Este echipat cu recunoaștere vocală, piața Android, o cameră foto și o galerie care procesează mai repede și suport pentru WVGA(Wide Video Graphics Array) rezoluții ale ecranului.[20]

Versiunea ”Eclair” a fost realizată la o lună după ”Donut”, pe 26 Octombrie 2009. Îmbunătățirile au fost aduse la nivelul funcției de sync unde multiple conturi pot fi puse împreună pentru a fi sincronizare ca și alte informații despre contacte. A fost permis schimbul de sprijin în e-mailuri, precum și suportul Bluetooth 2.1. De exemplu: când apeși pe o persoana din lista de contacte, tot ceea ce este de facut să apeși pe poză și vei avea opțiunea de a o suna sau de ai trimite mesaje. Camera a fost și ea îmbunătățită permițând zoom digital, balansul de alb, modul de scenă și de suport Flash.

”Froyo” a fost realizat un an mai târziu, pe 20 mai 2010. Acest sistem a fost mai rapid având o memorie mai mare. Apelarea vocală, precum și schimbul de date prin Bluetooth au fost posibile, precum și suportul de Adobe Flash. DPI-ul (Dots per inch) ecranului pentru această versiune este de 720p.

În decembrie 2010 , ”Gingerbread”, predecesorul versiunii Android 3.0 a fost realizat. Interfața sistemului a fost actualizată fiind mai simplă și tot o dată mai rapidă. Ecranul noii versiuni este mai larg având o rezoluție mai mare ca cele anterioare.

Ultima versiune este ”Honeycomb Android 3.0”. Viteza, aplicațiile precum și widget-urile sunt bine gândit făcute pentru a ușura folosirea lor. Nu este de mirare de ce utilizatorii sunt impresionați. Este primul sistem Android dezvoltat pentru tabletă PC.

”Ice Cream Sandwich” va apărea în scurt timp și va integra atât tehnologiile folosite în cadrul versiunii mobile ”Gingerbread” cât și cele folosite pentru dezvoltarea tabletei ”Honeycomb”.[20]

2.1.1. INTRODUCERE ÎN PLATFORMA ANDROID

Android este un software pentru dispozitive mobile care include un sistem de operare, un middleware și aplicații. SDK-ul Android prevede uneltele și API-urile necesare pentru începerea dezvoltării aplicațiilor pe platforma Android folosind limbajul de programare Java.[2]

Caracteristici

Framework-ul aplicațiilor-care să permită refolosirea și înlocuirea componentelor

Dalvik- mașină virtuală optimizată pentru dispozitivele mobile

Browser-ul integrat-bazat pe motorul open-source WebKit

Grafice optimizate-grafică 2D, grafică 3D, bazate pe specificații OpenGL ES 1.0 (standardul de realizarea a graficii 3D)

SQLite-pentru stocarea de date structurate

Suport media-audio, video și formaturi statice pentru imagini(MPEG4-Moving Picture Exports Group, H.264, MP3-Music/video file- MPEG-1 Audio Layer 3, AAC-Advanced Audio Coding, AMR-Adaptive Multi-Rate, JPG-Joint Photographic Group, PNG-Portal Network Graphics, GIF-Graphic Interchange Format)

GSM(Global Sistem for Mobile communications)-hardware dependent

Bluetooth, EDGE(Enhanced Data GSM Enviroment), 3G(third generation of mobile telephony) și WiFi(Wireless Fidelity)- hardware dependent

Cameră foto, GPS, busolă, accelerometru-hardware independent

Mediu de dezvoltare bogat inclusiv dispozitiv emulator, instrumente de depănare și plugin pentru Eclipse IDE(Integrated Development Enviroment)

2.1.2. ARHITECTURA ANDROID

Diagrama de mai jos prezintă componentele importante ale sistemului de operare Android.[3]

Figura 1. Arhitectura Android

(Sursa: Professional Android 2 Application Development, Reto Meier, 2010)

Pur și simplu, un nucleu Linux și o colecșie C/C++ de biblioteci sunt expuse printr-un cadru de aplicare, care oferă servicii de management, timp de funcționare și aplicații.

Linux kernel Serviciile de bază(inclusiv drivere de hardware, de proces și de gestionare a memoriei, de securitate, de rețea și de gestionare a energiei) sunt gestionate de un sistem Linux kernel 2.6. Kernel-ul oferă, de asemenea, un strat de abtsractizare între hardware-ul și restul de stivă.

Librării Rulând în fruntea kernel-ului, Android include diverse C/C++ biblioteci de bază ca și libc și SSL(Secure Sockets Layer), precum:

bibliotecă media pentru redarea audio și video media

un manager de suprafață pentru a oferi un management de afișare

biblioteci grafice care includ SGL(Standard General Ledger) și OpenGL pentru 2D și grafică 3D

SQLite baza de date pentru suport nativ

SSL și WebKit pentru browser-ul web integrat și pentru securitatea la internet[3]

Timpul de funcționare Android Acesta este motorul care alimentează aplicațiile și împreuna cu bibliotecile, constituie baza pentru cadrul de aplicare.

librăriile În timp ce dezvoltarea pe Android se realizază în Java, Dalvik nu este o aplicație Java. Bibliotecile de bază Android oferă mult mai multe funcționalități disponibile în librăriile Java precum și cele specifice Android.

mașina virtuală Dalvik Dalvik este o mșină virtuală care a fost optimizată pentru a se asigura că un dispozitiv poate rula mai multe instanțe eficient. Se bazează pe kernel-ul Linux pentru gestionarea memoriei.

framework-ul aplicației Acesta oferă clasele utile pentru crearea de aplicații Android. De asemenea, mai oferă o abstracție generică pentru accesul hardware și gestionează interfața cu utilizatorul și a resurselor.

Layer-ul aplicației Toate cererile, atât native cât și a treia parte, sunt construite pe layer-ul aplicației prin intermediul bibliotecilor API. Acesta se execută la run time, folosind clasele și serviciile puse la dispoziție de framework-ul aplicației.[2]

2.1.2.1. MAȘINA VIRTUALĂ DALVIK

Una din cheile principale Android este mașina virtuală Dalvik. Android folosește VM(Virtual Machine) personalizată concepută pentru a asigura faptul că mai multe instanțe rulează eficient pe un singur dispozitiv.

VM Dalvik fosolește dispozitivul kernel-ului Linux de bază pentru a manipula nivelul scăzut de funcționalitate inluzând securitatea, threading, procesele și gestionarea memoriei. Este, de asemenea, posibil să se scrie aplicații C/C++ care rulează direct pe suportul sistemului de operare Linux. În cazul în care viteza si eficiența limbajului C/C++ este necesară pentru aplicație, Android oferă un kit de dezvoltare nativ(NDK). NDK este proiectat pentru a permite crearea de biblioteci C++ folosind libc și libm, împreună cu accesul nativ la OpenGL.[4]

Tot hardware-ul Android și sistemul de acces de serviciu este gestionat cu ajutorul Dalvik ca un nivel de mijloc.

Figura 2. Arhitectura mașinii virtuale Dalvik[5]

Figura de mai sus descrie arhitectura unei mașini virtuale Dalvik.

2.1.2.2. BIBLIOTECILE ANDROID

Android oferă un număr de API-uri pentru dezvoltarea de aplicații. Pentru documentare următorul link http://developer.android.com/reference/packages.html, oferă o listă completă de pachete incluse în SDK-ul Android.

2.1.2.3. FRAMEWORK-UL APLICAȚIILOR ANDROID

Pentru a demonstra că această platformă este deschisă(open), Android oferă abilitatea de a construi aplicații bogate și innovative. Dezvoltatorii sunt liberi să profite de avantajul hardware-ului dispozitivului, accesului informației de localizare, servicii de rulare de fundal, setarea alarmelor, adăugarea notificărilor în bara de status și multe altele.

Dezvoltatorii au acces nelimitat la același framework al API-urilor folosit în aplicațiile importante. Arhitectura aplicației este proiectată pentru a simplifica refolosirea componentelor; fiecare aplicație poate publica capacitățile sale și orice aplicație le-ar putea folosi(sub rezerva unor constrângeri de securitate impuse de framework). Același mecanism permite componentelor să fie înlocuite de către utilizator.[6]

Toate aplicațiile sunt un set de servicii și sisteme, incluzând:

Un bogat și un extensibil set de Views care poate fi folosite în construirea de aplicații incluzând liste, griduri, cutii text, butoane și un browser web încoporat

Content Providers permite aplicațiilor sa acceseze date din alte aplicații sau să împartă propriile date cu altele.

Un Resource Manager(manager de resurse) asigurarea accesului la resurse non-cod, cum ar fi șiruri de caractere localizate, grafice și aspecte de fișiere

Notification Manager(manager de notificări) permite tuturor aplicațiilor să afișeze alerte personalizate în bara de stare

Activity Manager(manager de activități) acesta gestioneză ciclul de viață al aplicațiilor și permite navigarea

2.1.3. ARHITECTURA APLICAȚIILOR ANDROID

Arhitectura Android încurajează conceptul refolosirii componentelor, permițând să se publice și să împărtășească Activități, Servicii și date cu alte aplicații, cu acces gestionat de restricțiile securizate pe care le pune în loc.

Același mecanism care permite să producă o înlocuire a managerului de contact sau de apelare a telefonului poate să expună componente de aplicație pentru a permite celorlalți dezvoltatori să creeze interfețe noi și extensii de funcționalitate sau posibilitatea de a construi pe ele.

Aplicațiile Android sunt scrise în limbajul de programare Java. Uneltele SDK-ului Android compileză codul împreună cu orice date și fișiere de resurse într-un pachet Android( Android package), un fișier arhivă cu sufixul .apk. Tot codul dintr-un singur fișier .apk este considerat ca o singură aplicație și este fișierul pe care Android permite dispozitivelor să îl folosească la instalarea aplicației.[7]

O dată instalată pe un dispozitiv, orice aplicație trăiește în propriul sendbox de securitate:

Sistemul de operare Android este un multi-utilizator de sistem Linux în care fiecare aplicație este un diferit utilizator.

În mod implicit, sistemul atribuie fiecărei aplicații un ID unic de utilizator Linux(ID-ul este folosit numai de sistem și nu este cunoscut de aplicație). Sistemul setează permisiuni pentru fiecare fișier din aplicație, deci doar ID utilizator atribuit aplicației respective le poate accesa.

Fiecare proces are propria mașină virtuală(VM), deci fiecare cod de aplicație este rulat izolat de alte aplicații.

În mod implicit, fiecare aplicație rulează în propriile procese Linux. Android începe procesele când fiecare componentă de aplicație prezintă nevoia de a fi executată, atunci închide procesele de care nu mai are nevoie, sau când sistemul are nevoie de recuperare de momorie pentru alte aplicații.

În concluzie, sistemul Android implementează ultimului privilegiat. Aceasta însemnând că fiecare aplicație, în mod implicit, are acces numai la componentele de care are nevoie să își realizeze munca și nu mai mult.

2.1.4. COMPONENTELE UNEI APLICAȚII

Componentele unei aplicații sunt blocuri de construire esențiale pentru o aplicație Android. Fiecare componentă este un diferit punct prin care sistemul poate accesa aplicația. Nu fiecare componetă este un punct de acces pentru utilizatori, dar fiecare există ca o singură entitate jucând un rol important- acestea ajutând să definească aplicației comportamentul.

Sunt patru tipuri diferite de componente de aplicație. Fiecare dintre acestea servește unui scop diferit și au un ciclu de viță diferit, definind cum este creată componeta și implicit distrusă.

Cele patru tipuri de componente ale unei aplicații sunt:

Activities(activități)

O activitate reprezintă un singur ecran cu o interfață utilizator. De exemplu o aplicație e-mail trebuie să aibă o activitate care să afișeze o listă cu noile emailuri, o altă activitate pentru compunerea unui email și o alta activitate pentru citirea email-urilor. Deși activitățile lucrează împreună pentru a forma o interfață utilizator coezivă în aplicația e-mail, fiecare este independenta una față de cealaltă.

O activitate este implementată ca o subclasă a clasei de bază Activity.

Figura 3. Ciclul de viață al unei activități[2]

Services

Un serviciu este componenta care rulează în fundal pentru a efectua operațiuni de lungă durată sau de a efectua munca pentru procese de la distanță. Un serviciu nu dispune de o interfață utilizator. De exemplu un serviciu poate reda muzică pe fundal în timp ce utilizatorul este într-o altă aplicație. O altă componentă, cum ar fi o activitate, poate începe serviciul și-l poate lăsa să ruleze sau se poate lega de acesta pentru a putea intreacționa cu el.

Un serviciu este implementat ca o subclasa a clasei de bază Service.

Figura 4. Ciclul de viață al unui serviciu[2]

Content providers

Un content provider poate gestiona un set de date de afișare al aplicației. Se poate stoca date într-un fișier sistem, într-o bază de date SQLite, pe web, sau într-o altă locație de stocare persistentă pe care aplicația o poate accesa. Cu ajutorul acestei componente, alte aplicații pot interoga sau modifica datele(dacă content provider-ul permite). De exemplu sistemul Android dispune de o astfel de componetă care gestionează informațiile despre contactele utilizatorului. Ca atare, orice aplicație cu permisiuni adecvate poate interoga o parte din content provider(cum ar fi ContactsContract.Data) pentru a citi și scrie informații despre o anumită persoană.

Acestă compontă este, de asemenea, folositoare pentru a citi și scrie date care sunt private pentru aplicație și care să nu fie distribuite cu alte aplicații.

Un content provider este implementat ca o subclasă a clasei de bază ContentProvider și trebuie sa aibe un set standard de API-uri care permite altor aplicații să realizeze tranzacțiile.

Broadcast receivers

Această componentă răspunde la anunțurile de difuzare la nivel sistem. Multe emisiuni provin din sistem, de exemplu cea care anunță că ecranul s-a oprit, bateria este descărcată, sau o imagine a fost capturată. Deși acestea nu dispun de o interfață utlizator, ele pot crea o notificare a bării de status care să informeze utilizatorul când are loc un eveniment.

Un broadcast receiver este implementat ca o subclasă a clasei de bază BroadcastReceiver și fiecare este expediat ca un obiect Intent.

O aplicație Android, împreună cu un fișier numit AndroidManifest.xml este implementat de un dispozitiv. AndroidManifest.xml conține informațiile de configurare necesare pentru a instala corect pe dispozitiv. Aceasta include numele necesare de clase și tipuri de evenimente pentru care aplicația este capabilă să proceseze, și permisiunile necesare care sunt necesare pentru a rula aplicația. De exemplu în cazul în care aplicația necesită acces la rețea- pentru a descărca un fișier acestă permisiune trebuie să fie precizată explicit în fișierul manifest. [3]

2.2. SDK-UL ANDROID

SDK-ul Android este un kit software de dezvoltare care permite dezvoltatorilor să creeze aplicații pentru platforma Android. Acesta include proiecte simple cu cod sursă, instrumente de dezvoltare, un emulator și librării necesare pentru a realiza aplicații Android. Înclude o multitudine de unelte și utilități care ajută să creeze, să testeze și pentru depănare a proiectelor.

Cel mai important instrument SDK include Android SDK Manager( android sdk), AVD Manager (android avd), emulatorul și serverul de monitorizare a depanării Dalvik(ddms).

Acesta este complet deschis. Poți descărca ultima versiune de ADK pentru a dezvolta pe platforma de pe pagina oficială Android: http://developer.android.com/sdk/index.html. Înainte de a începe dezvoltarea trebuie să se adauge platforma SDK.[15]

2.3. ECLIPSE

Folosind Eclipse cu plug-in ADT(Android Development Tools) pentru dezvoltarea pe platform Android oferă avantaje semnificative.

Eclipse este un open-source IDE deosebit de popular pentru dezvoltare Java. Este disponibil pentru descărcare pentru fiecare platformă suportată de Android(Windows, MacOS, Linux) pe pagina principală Eclipse: www.eclipse.org/downloads/.

Sunte mai multe variante disponibile, însă cea recomandată pentru Android este:

Eclipse 3.4 sau 3.5

Eclipse JDT plug-in

WST(Workshop on Refactoring Tools)

Atât WST cât și JDT plug-in sunt incluse în cele mai multe pachete Ecplise IDE.

Folosind plug-in-ul Eclipse

Plug-in-ul ADT pentru Eclipse simplifică dezvoltarea pe platforma Android integrând unelte de dezvoltare, emulatorul și convertorul .class-to-.dex, direct în IDE.

Acesta integrează în Eclipse următoarele:

Un wizard de proiecte Android, care simplifică crearea de noi proiecte și include o aplicație de bază șablon

Editori de formulare, layout-uri și resurse pentru a ajuta la crearea, editarea și validarea reurselor XML(Extensible Markup Language)

Construirea automată a proiectelor Android, executabilelor de conversie Android (.dex), împachetării tuturor fișierelor package(.apk) și instalarea de pachete de mașini virtuale Dalvik

Manager de dispozitive virtuale Android, care să permită crearea și gestionarea dispozitivelor virtuale de găzduire a emulatoarelor care rulează o versiune specifică a sistemului de operare Android și cu constrângeri de seturi de memorie.

Emulator Android, inluzând controlul aspectului emulatorului și setările de conectare la rețea, precum și capacitatea de a simula apeluri și mesaje SMS

Serviciu de monitorizare de depănare Dalvik(DDMS)

Accesul la dispozitiv sau la fișierele de sistem ale emulatorului, premițând navigarea în arborele de foldere și fișiere de transfer

Depănarea Runtime, astfel încât să se poată seta puncte de întrerupere și să se poată vizualiza stivele de apel

Toate ieșirile jurnal și consolă Android/Dalvik

Pe lângă cele de mai sus, mai poate fi și SQLite3, un intrument de tip bază de date care ajută la acesarea fișierelor bazei de date SQLite create.

2.4. EMULATORUL ANDROID

Simulatorul este un instrument perfect pentru testarea și depănarea aplicațiilor.

Acesta este o implementare a mașinii virtuale Dalvik, facând disponibilă o platformă de rulare a aplicațiilor Android ca orice telefon cu Android. Pentru că este decuplat de la orice hardware special, este o bază excelentă de a îl utiliza pentru trestarea aplicațiilor.

Conectivitatea completă la rețea este prevăzută cu capacitatea de a optimiza viteza de conectare la Internet și latență, în timpul depănarii aplicațiilor. Se poate simula, deasemenea, introducerea și primirea de apeluri vocale și mesaje SMS.

Plug-in-ul ADT integrează emulatorul în Eclipse, astfel încât acesta este lansat automat în cadrul AVD-ului ales atunci când se rulează proiectul.

Pentru a executa simulatorul mai întâi trebuie să se creeze un dispozitiv virtual. Simulatorul va lansa acest dipozitiv și va rula o instanță Dalvik. Acesta nu implementează toate caracteristicile hardware mobile suportat de Android. Nu implementează camera, vibrațiile, LED-urile, apelurile telefonice actuale, conectări USB, capturi audio sau nivelul de încarcare al bateriei.[2]

2.5. TRATAREA EXCEPȚIILOR

Acest concept descrie gestionarea tuturor situațiilor excepționale ce pot aparea pe parcursul rulării unei aplicații. De aceea pentru a ne da seama ce fel de situații pot aparea trebuie sa simulăm în totalitate comportamentul utilizatorului. Acest lucru poate fi realizat, de cele mai multe ori, după multe teste.

În general sistemul aruncă excepții atunci când apar erori. Prinderea și tratarea acestor erori este utilă pentru ca aplicația să nu se întrerupă brusc când utilizatorul dorește să o folosească.

Tratarea excepțiilor se realizează cu ajutorul blocului try-catch. Acestea sunt prinse în secvența try și trimise în blocul catch pentru rezolvare.

În realizarea acestei aplicații am încercat să tratez toate situațiile care pot aparea gândindu-mă din perspectiva unui utilizator oarecare. Datorită faptului că, grupul țintă nu vizează în mod special pesoane cu cunoștințe informatice sau de programare, acest proiect trebuie construit astfel încât să evite generarea de erori. Lucru necesar de a nu pune utilizatorul în dificultate. Scopul acestei aplicații este ca utilizarea sa să fie cât mai interactivă și concisă, pentru a fi ușor manipulată.

2.6. UTILIZAREA LAYOUT-URILOR XML

Layout-ul este arhitectura pentru interfața cu utilizatorul într-o activitate. El definește structura și deține toate elementele care apar utilizatorului. Putem declara layout-ul în două moduri:

Declararea elementelor UI(User Interface) în XML. Android oferă un vocabular simplu XML, care corespunde claselelor și subclaselelor View, cum ar fi cele pentru layout-uri și widget-uri.

Instanțierea elementelor layout-urilor la runtime. Aplicația poate crea View și obiecte ViewGroup programatic.

Framework-ul Android oferă flexibilitatea de a utiliza una sau ambele dintre metodele de mai sus pentru declararea și gestionarea interfeței aplicației. De exemplu putem declara layout-uri implicite pentru aplicație în XML, inclusiv elementele ecranului care vor apărea pe acestea, cu proprietățile lor. Apoi putem adăuga cod în aplicație care să modifice starea obiectelor ecranului, inclusiv cele declarate în XML, la momentul execuției.

Avantajul de a declara UI în XML este acela, că permite să separarea aplicației de codul care controlează comportamentul ei. Descrierile interfeței sunt externe de codul aplicației, ceea ce înseamnă că o poți modifica sau adapta fară să modifici codul sursă. De exemplu poți crea layout-uri XML pentru diferite orientări, dimensiuni ale ecranului dispozitivului, și chiar limbi diferite. În plus, declararea aspectului în XML face mai ușor vizualizarea structurii interfeței, așa că este mai ușor pentru a depăna(debug) problemele.

În general, vocabularul XML pentru declararea elementelor interfețelor cu utilizatorul urmărește îndeaproape structura și denumirea claselor și metodelor. De fapt, corespondența este atât de des întalnită, încât putem ghici ce atribut XML corespunde la o metodă de clasă, sau ce clasă corespunde la un element XML dat. Totuși, nu tot vocabularul este identic.

Folosind vocabularul Android XML, putem creea repede layout-urile inferfeței și elementele ecranului, în aceeași manieră în care creem pagini web în HTML(HyperText Markup Language).

Fiecare dosar-layout trebuie să conțină exact un element rădăcină, care trebuie să fie un View sau obiect de tipul ViewGroup. După ce ați definit elementul rădăcină, puteți adăuga obiecte suplimentare de tip layout sau widget-uri(elemente copil) pentru a construi gradat o ierarhie View care să definească layout-ul. De exemplu următorul layout XML folosește un LinearLayout vertical care deține un TextView și un buton(Button):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

După ce declarăm un layout în XML, trebuie să îl salvăm cu extensia .xml, în cadrul proiectului Android în directorul res/layout/, ca să fie compilat adecvat.[3]

2.7. SQLITE

SQLite oferă o puternică bază de date SQL care prevede un layer robust pe care avem un control total.

Baza de date SQLite-atunci când sunt gestionate, datele structurate sunt cea mai bună abordare, Android oferă biblioteca de baze de date relaționale SQLite. Fiecare aplicație poate crea baze de date proprii pe care le au sub control complet.

Folosind SQLite pot crea baze de date relaționale independente de aplicație. Scopul utilizării este de a stoca și administra aplicații de date structurate.

Bazele de date Android sunt stocate în dosarul(folder-ul) /data/data/<package_name>/databases pe propriup dispozitiv(sau emulator). În mod implicit toate bazele de date sunt private și pot fi acesate de aplicația care le-a creat.[16]

Am ales să folosesc SQLite deoarece este open-source(glosar). Acesta mai prezintă și următoarele caracteristici:

Este pe un singur nivel

Conform cu standardele

Ușor

A fost implementat ca o librărie compactă C care este inclusă ca parte a software-ului Android. Fiecare bază de date SQLite este o parte integrată a aplicației care a creat-o. Acest lucru reduce dependențele externe, reduce latența și simplifică blocarea tranzacțiilor și sincronizarea. Ușor și puternic, SQLite diferă de multe motoare de baze de date conveționale prin tastarea vagă a fiecărei coloane, ceea ce înseamnă că valorile coloanelor nu sunt necesare să se conformeze unui singur tip. În schimb fiecare valoare este tastată individual pentru fiecare rând. Ca rezultat, tipul de verificare nu este necesar când atribuim sau extragem valoarea din fiecare coloană într-un rând.[11]

SQLite nu permite definirea constrângerilor de chei străine, tranzacții imbricate, RIGHT OUTER JOIN și FULL OUTER JOIN și unele tipuri de ALTER TABLE.

Pentru a creea baza de date am folosit metoda createDatabase(). Aceasta are patru parametri: unul indicând numele bazei de date-orice clasă din aplicație poate accesa baza de date sub acest nume, o variabilă care indică versiunea bazei de date, modul de securitate pentru a accesa baza de date- acesta fiind 0 și opțional o instanță a subclasei CursorFactory. Rezultatul acestei metode este o instanță a SQLiteDatabase pe care o putem folosi la crearea tabelelor bazei de date și la apelul metodei openDatabase()- ne deschide baza de date pe care deja am creat-o. După ce am terminat cu baza de date trebuie să o închidem, de aceea folosim metoda close().[12]

Pentru a crea o tabelă și indecși trebuie să apelăm metoda execSQL(). De exemplu:

db.execSQL("CREATE TABLE widgets "+

"(ID INTEGER PRIMARY KEY AUTOINCREMENT, "+

"name TEXT, inventory INTEGER)");

db.execSQL("CREATE INDEX widgetsByNameIdx "+

"ON widgets (name)");

Prima linie de cod creează o tabelă numită ”widgets” cu o cheie primară numită ID care se autoincrementează de tipul integer și încă două coloane: name de tip text și inventory de tip integer. A doua linie de comandă adaugă un index la tabelă după nume.

Pentru a insera date în baza de date folosim tot metoda execSQL(). Acestă metodă este folosită și în cazul altor comenzi SQL: insert, update, delete, etc.

db.execSQL("INSERT INTO widgets (name, inventory)"+

"VALUES ('Sprocket', 5)");

Linia de cod de mai sus inserează în baza de date, în tabela widgets o nouă înregistrare cu numele Sprocket.

Ca și în cazul metodelor insert, update și delete, avem două modalități de extragere a datelor din baza de date SQLite folosind comanda SELECT:

Putem folosi metoda rowQuery() invocând comanda SELECT direct sau,

Putem folosi metoda query() pentru a construi o interogare din părțile sale componente.

Metoda query() preia părți din comanda SELECT cu care construiește interogarea. Aceste părți sunt:

Numele tabelei asupra căreia realizăm interogarea

Lista coloanelor pe care dorim să le afișăm

Clausa WHERE

Listă de valori pentru a substitui parametrii poziționali

Clauza GROUP BY, în cazul în care este nevoie

Clauza ORDER BY, în cazul în care este nevoie

2.8. LOCALIZARE ȘI GOOGLE MAPS ÎN ANDROID

2.8.1. GOOGLE MAPS API

Platforma Android oferă integrare ușoară și strânsă între aplicațiile Android și Google Maps. Google Maps API este folosit pentru a aduce un plus aplicațiilor Android.

Google Maps(formal Google Local) este o aplicație de serviciu web și o tehnologie pusă la dispoziție de Google, gratis (pentru uz noncomercial), distribuind multe servicii de hărți de bază, incluzând hărți de pe site-uri terțe prin intermediul Google Maps API. Acesta oferă hărți stradale , un planificator de trasee pentru o călătorie pe jos, cu mașina sau cu mijloacele de transport. Imaginile Google Maps din satelit nu sunt redate din timpu real, ele fiind mai vechi.

Google Maps Add-On este o extensie la mediul de dezvoltare al SDK-ului Android, care permite de aplicații pentru dispozitivele care includ setări specifice Google, librării și srevicii.[21]

2.8.1.1. GENERAREA UNEI CHEI GOOGLE MAPS API

Primul pas pe care trebuie făcut în generarea acestei chei este calcularea unei amprente digtale MD5 al certificatului, care o să fie folosit pentru semnarea proiectului. Această amprentă va trebui sa furnizeze serviciul Google Maps API, astfel încât să poată asocia cheia cu cererea. Cheia Java și instrumentul de getionare a certificatului numit ”keytool” este folosit pentru generarea amprentei.

Executabilul acestui keytool este localizat în directorul %JAVA_HOME%/BIN (pentru Windows) sau $JAVA_HOME/bin (pentru Linux/OS X).

Pentru a genera amprenta MD5 a certificatului de depănare trebuie mai întâi localizarea kestore-ului de depănare. Locul de amplasare a acestuia variază în funcție de platformă:

Windows Vista: C:\Users\\.android\debug.keystore

Windows XP: C:\Documents and Settings\\.android\debug.keystore

OS X and Linux: ~/.android/debug.keystore

Pentru a lua amprenta MD5 a certificatului de depănare folosim următoarea comandă: keytool -list -alias androiddebugkey \
-keystore .keystore \
-storepass android -keypass android

Aceasta generează: androiddebugkey, Apr 2, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): 72:BF:25:C1:AF:4C:C1:2F:34:D9:B1:90:35:XX:XX:XX

Această amprentă trebuie să furnizeze serviciul Google Maps. Cu aceasta obținem o cheie cu ajutorul căreia putem dezvolta aplicații Google Maps.

Android integrează cu ușurință Google Maps. Important pentru dezvoltatori fiind MapView și MapActivity, care le permite să integreze hărți în aplicații. Nu numai că pot afișa hărți, controla nivelul zoom-ului și că permit oamenilor să se plaseze, dar se pot lega în serviciul de locații de bază Android pentru a arăta unde este dispozitivul și pe unde merge. Acest serviciu și cel de cartografiere folosesc latitudinea și longitudinea pentru a indica locațiile geografice.[22]

Android oferă Geocoder care sprijină geocodarea înainte și înversă. Folosind Geocoder dezvoltatorii de aplicații pot converti înainte și înapoi între latitudine/longitudine valori și adresele reale.

Pentru a face mai ușor pentru dezvoltatori și pentru a îmbunătăți capabilitatea de cartografiere a aplicației, API-urle Google add-on includ o librărie externă, com.google.android.maps. Clasele librăriei Maps oferă descărcare built-in, redare, precum și o varietate de opțiuni de afișare și control.

Clasa cheie a librăriei Maps sunt MapView, o subclasă a clasei ViewGroup din librăria standard Android. O astfel de clasă afișează o hartă cu date obținută de la serviciul de cartografiere Google.

Pentru a folosi clase din librăria externă Maps în aplicație trebuie:

Instalat Google APIs add-on

Creat un proiect nou-sau reconfigurat cel existent- conform Google APIs add-on

Setat un nou emulator care să foloseasca Google APIs add-on

Adaugat un element în manifest-ul aplicației care să fie referință către librăria Maps-uses-library

Folosită clasele Maps

Luarea unei chei a API-ului de mapare, pentru ca aplicația să poată afișa date de la serviciul de Google Maps

Semnarea adecvată a aplicației folosind certificatul care se potrivește cu cheia API.[21]

Pentru a folosi Google Maps în aplicație trebuie modificată fila AndroidManifest.xml adăugând elementul <uses-library> și permisiunea la INTERNET. Harta va putea fi afișată doar dacă, în aplicația Android, va fi modificată fila main.xml localizată în folder-ul res/layout. Pentru aceasta trebuie folosit elementul <com.google.android.maps.MapView>.

Google Maps este o bibliotecă extrenă pentru SDK-ul Android.

Tabelul 1. Comparație între Google Maps și Google Maps Android[22]

Google Maps în Android pune la dispoziție:

GeoPoint: longitudine/latitudine stocate ca micrograde( integer) – acestea se tranformă din grade folosind formula-> grade*1E6

Overlay: clasa de bază care poate fi afișată în partea de sus a hărții

OverlayItem: componenta de bază pentru fiecare ItemizedOverlay

ItemizedOverlay: clasa de bază pentru Overlay fiind alcătuită dintr-o listă de OverlayItems

MapActivity: clasa de bază care gestionează necesitățile fiecărui activity care afișează harta(MapView)

MapView: o vedere care afișează o hartă(cu date obținute de la serviciul Google Maps)

MapController: o clasă utilă pentru a gestiona zoomul și micșorarea unei hărți

MyLocationOverlay: un OverLay pentru a desena locația curentă a utilizatorului pe hartă, și/sau o busolă

Cu Google Maps, în Android, putem pune pe hartă marcatori informativi pe diferite locuri de pe hartă.[21]

2.8.2. LOCALIZARE PE ANDROID(LOCATION MANAGER)

Android furnizează un framework de localizare cu ajutorul căruia aplicația poate determina:

Localizarea dispozitivului

Actualizări

Folosind LocationManager se poate:

Interoga lista de LocationProviders pentru aflarea ultimei localizări

Înregistra pentru actualizarea localizării curente a utilizatorului

2.8.2.1. OBȚINEREA LOCAȚIEI UTILIZATORULUI

Locația poate fi determinată cu ajutorul GPS-ului și/sau semnalelor WiFi

GPS reda cu acuratețe informațiile, dar necesită multe resurse folosind multă baterie deoarece este încet

Pentru a identifica locația se folosește clasa LocationManager

Pentru a putea accesa aceste servicii trebuiesc adăugate in AndroidManifest.xml permisiuni pentru localizare: GPS ACCESS_FINE_LOCATION și pentru locul de amplasare de rețea: ACCESS_COARSE_LOCATION.

CAPITOLUL 3. PREZENTAREA SISTEMULUI INFORMATIC

În acest capitol am descris pe larg specificațiile și cerințele aplicației, arhitectura, proiectarea interfeței cu utilizatorul, a bazei de date, implementarea, testarea și utilizarea sistemului.

3.1. ANALIZA SISTEMULUI

3.1.1. MOTIVAȚIA

În prezenta lucrare mi-am propus realizarea unui sistem de gestionare mai eficientă a informațiilor cu privire la mijloacele de transport din Cluj-Napoca. Acesta este destinat tuturor persoanelor și este realizat ca o aplicație Android.

După mai multe căutări a unor produse similare, am ajuns la concluzia că un astfel de sistem nu a fost încă dezvoltat. Pot spune că o formă asemănătoare, ca scop – informarea utilizatorilor cu privire la mijloacele de transport în comun, dar diferită ca și tip este site-ul oficial RATUC. Acesta furnizează toate informațiile surprinse și în aplicația dezvoltată, însă din punct de vedere al utilității, eficienței și al economisirii timpului, sistemul realizat în această lucrare prezintă mai multe avantaje.

Aplicația de față-”InfoMobile”- va putea fi folosită la nivelul orașului Cluj-Napoca. Prin intermendiul acestui sistem, doresc să vin în ajutorul tuturor persoanelor care au nevoie de astfel de informații indiferent de locul în care se află.

Am împarțit grupul țintă- posibili utilizatori ai sistemului- în două categorii. Prima categorie este cea a persoanelor care circulă frecvent cu astfel de mijloace de transport, iar cea de-a doua categorie este reprezentată de acele persoane care folosesc ocazional sau chiar deloc(turiști) aceste mijloace de transport.

În urma unei analize realizate, am ajuns la concluzia că mijloacele de transport în comun, în momentul de față sunt cele mai ieftine dintre toate celelalte alternative. Acest lucru fiind unul din motivele principale pentru care am ales să dezvolt această aplicație.

Un al doilea motiv important sunt reducerile de care dispun călătorii. Acestea duc la creșterea numărului de persoane care circulă cu astfel de mijloace de transport. Simplu statut de student sau de elev la o instituție de stat din acest oraș îți oferă posibilitatea obținerii acestor reduceri. Pe deasupra dacă ești și la buget dispui de o linie sau două gratis(în funcție de Universitate), motiv pentru care mulți studenți preferă acest mod de transport.

Ținând cont că orașul Cluj-Napoca, este un centru cultral cu atracții turistice importante, m-am gandit că un alt motiv de a realiza aplicația este de a furniza turiștilor toate informațiile necesare într-un mod mai interactiv, mai rapid și mai eficient din punct de vedere al timpului.

Un alt motiv este de a veni în ajutorul persoanelor care nu folosesc frecvent unele linii de transport, dar și a celora care încă nu au avut ocazia de a folosi mijloacele de transport în comun, oferindu-le toate informațiile necesare.

Cel din urmă motiv este că tot mai multe persoane dețin smartphone-uri cu sistem Android, iar datorită utilității aplicației, aceasta ar putea fi folosită de foarte multe persoane.

Pornind de la o nevoie personală, mi-a fost ușor să determin necesitățile utilizatorilor unei astfel de aplicații și care ar fi cerințele unui astfel de sistem informatic. Cele mai importante ar fi următoarele:

Utilizatorii să poată cunoaște toate liniile de transport în comun.

Utilizatorii să poată avea acces la programul liniilor RATUC.

Utilizatorii să poată ști care sunt toate stațiile RATUC.

Utilizatorii să poată ști ce autobuze trec printr-o anumită stație.

Utilizatorii să poată ști programul tonetelor de bilete și abonamente, de ce tip sunt( bilete/bilete și abonamente).

Utilizatorii să se poată localiza pe harta orașului.

Figura 5. Diagrama Fish-Bone

3.1.2. CONTEXTUL SISTEMULUI

Prezentul sistem informatic va fi distribuit la nivelul orașului Cluj-Napoca. Utilitatea lui constă în a facilita procesul de consultare al informațiilor sistemului mijloacelor de transport în comun RATUC.

Aplicația va fi destinată tuturor persoanelor, cu singura condiție de a deține un smartphone dotat cu un sistem de operare Android, orice versiune până în 2.2(inclusiv).

Ghidarea activității sa realizat după cele patru fațete:

Fațeta subiect

Fațeta utilizare

Fațeta IT

Fațeta dezvoltare

Fațeta subiect- stakeholders

Subiectul central ai sistemului este bazat pe programul liniilor de RATUC. Alte subiecte care sunt relevante pentru sistem sunt: toatalitatea stațiior de mijloace de transport în comun, programul tonetelor de bilete/bilete și abonamente și posibilitatea localizării pe harta orașului.

Diagrama ERD(Entity Relationship Diagrams)

Figura de mai jos ilustrează diagrama entitate-relație importantă în creea bazei de date. Diagrama entitate-relație (denumită și ERD) concentrează modelul de date a sistemului informatic. În acest sens ilustrează entitățile existente și relațiile dintre acestea.

Am creat aceasta diagrama ERD, prin care am identificat entitățile din cadrul modelului de date și relațiile dintre acestea. De asemenea, am prezentat principalele entități și atribute ale cestora. Pe baza acestei diagrame ERD voi implementa baza de date.

Sistemul stochează informații despre mijloacele de transport în comun și tot ceea ce ține de buna loc funcționare. Am optat pentru un sistem care nu impune logarea utilizatorilor. Am ales această variantă pentru a permite un acces ușor și pentru a face procesul de consultare eficient din punct de vedere al timpului utilizatorului. De aici deducem și principalele procese folosite de utilizator navigare și informare, accesând baza de date.

Fațeta utilizare

Grupul țintă care vizează această aplicație este pe de o parte limitat datorită faptului că doar posesorii de smartphone-uri pot avea acces la această aplicație. O altă limitare ar fi și faptul că nu pe toate tipurile de astfel de telefoane va fi disponibilă, ci doar pe cele care utilizează sistemul de operare Android, inclusiv cele cu versiunea 2.2.

Însă, acestea nu ar fi un impediment major care stă în limitarea numărului de utilizatori. Gândindu-mă pe de altă parte, grupul țintă vizat se extinde datorită faptului că utilizarea mijloacelor de transport în comun este calea cea mai ieftină în momentul de față în Cluj Napoca față de alte alternative.

Un alt motiv care face ca aplicația să fie utilizată cât mai frecvent ar fi și faptul că studenții din cadrul Universităților dispun de reduceri și/sau gratuități pe mijloacele de transport în comun.

Motivul proiectării acestui sistem pornește de la nevoia personală de a avea cât mai la îndemână informațiile pe care aplicația le va pune la dispoziție.

Grupul de utilizatori este format doar din deținătorii unui smartphone care are ca sistem de operare Android 2.2 și toate versiunile mai noi ca aceasta.

Utilizatorul va putea să caute doar informațiile de care el are nevoie fără a avea posibilitatea de a modifica baza de date.

Aplicația trebuie să fie eficientă (raportul dintre nivelul de performanță și resursele utilizate să fie unul optim), utilizabilă ( trebuie să existe un echilibru între caracteristicile care fac aplicația ușor de utilizat și cele care asigură siguranța – în cazul în care utilizatorul încearcă să modifice ora de plecare/sosire a unui autobuz/troleibuz/tramvai textboxul respective să fie blocat), fiabilă (aplicația trebuie să fie suficient de bine testată astfel încat să fie eliminate toate situațiile în care se produc întreruperi accidentale ale execuției).

Aplicația va fi instalată pe dispozitivul fiecărui utilizator.

Sistemul informatic dezvoltat va avea patru module:

Funcționalitățile oferite de modulul ”Linii” sunt următoarele:

Posibilitatea de căutare într-o listă derulantă a unei linii

Vizualizarea programului respectivei linii introduse anterior

Posibilitatea întoarcerii la meniul inițial

Funcționalitățile modulului ”Stații” sunt:

Posibilitatea alegerii dintr-o listă derulantă a unei stații

După căutarea stației dorite, se oferă posibilitatea aflării(vizualizării) mijloacelor de transport care trec prin acea stație

Posibilitatea aflării orarului liniilor care trec prin acea stație

Posibilitatea întoarcerii la meniul inițial

Funcționalitățile puse la dipoziție de modulul ”Bilete_si_Abonamente” sunt:

Posibilitatea aflării tipului de tonetă( abonamente și bilete / bilete)

Posibilitatea aflării orarului zilnic(de luni până vineri)

Posibilitatea aflării orarului zilelor de sâmbătă

Posibilitatea aflării orarului zilelor de duminică

Posibilitatea întoarcerii la meniul inițial

Funcționalitățile puse la dipoziție de modulul ”Localizare” sunt:

Posibilitatea localizării pe hartă a utilizatorului

Posobilitatea punerii de pinpoint-uri

Posibilitatea schimbării dintr-o hartă cu vedere satelit într-o stradă cu vedere a străzilor

Posibilitatea de a da zoom sau de micșorare a hărții

Posibilitatea întoarcerii la meniul inițial

Fațeta dezvoltare

Pentru dezvoltarea aplicației trebuiesc folosite tehnologii specifice. De aceea și utilizatorul trebuie să țină seama de unele specificații precum:

aplicația va fi folosită de persoanele deținătoare de smartphone-uri;

acestea trebuie să fie încorporate cu sistemul de operare Android;

versiunea minimă a sistemului de operare să fie 2.2;

Sistemul trebuie să aibă o interfață prietenoasă cu utilizatorul, fiind ușor de accesat, fără a fi nevoie ca utilizatorul să dețină cunoștințe informatice pentru a o putea folosi.

În realizarea acestuia trebuie să se țină cont de faptul că resursele umane sunt limitate, și anume un singur programator, care va fi responsabil de dezvoltarea întregii aplicații, de testarea și de mentenanța sistemului.

Fațeta IT

Pentru realizarea proiectului dorit am folosit următoarele instrumente software:

Microsoft Windows(XP, 7, Vista)

Sistemul de operare Android

SDK-ul Android

Kit-ul de dezvoltare Eclipse(JDK) 5 sau 6

Emulatorul Android

Sistemul informatic va putea fi instalat pe versiunea de Android 2.2 sau pe cele mai noi ca aceasta.

Tehnologiile utilizate sunt:

SQLite- pentru crearea bazei de date

XML- pentru crearea interfeței cu utilizatorul

Concepte de programare obiectuala –JAVA

Concepte de Google Maps API

3.1.3. ACTIVITĂȚI ȘI PROCESE

În realizarea acestei aplicații a trebuit să realizăm următorii pași:

Descărcarea și instalarea Java Development Kit(JDK),cel mai recent fiind versiunea 7, însă orice vesiune începând cu JDK 6.0 este recomandată.

Instalarea mediului de dezvoltare Eclipse IDE.

Descărcarea și instalarea Android SDK Starter Package.

Pentru pasul următor utilizând Adroid SDK Manager,descărcăm Android

SDK Components, care includ diferite instrumente de dezvoltare, documentație, diferite tipuri de platforme Android.

Pentru ca să putem folosi mediul de dezvoltare este necesar instalarea și configurarea unui Plugin pentru Eclipse numit Android Development Toolkit.

3.1.4. DEZVOLTAREA CERINȚELOR ȘI SPECIFICAȚIILOR APLICAȚIEI

3.1.4.1. ELICITAȚIA(EXTRAGEREA) CERINȚELOR

Etapa de extragere a cerințelor este una foarte importantă în realizarea aplicațiilor pentru a se clarifica ce se vrea de la viitorul sistem, dacă sistemul se pliază pe nevoile utilizatorului și pentru a-l ajuta pe dezvoltator în realizarea sistemului.

După cum am mai specificat, până în momentul de față nu există o astfel de aplicație mobile la nivel de oraș, de accea consider important dezvoltarea ei după cerințe bine stabilite.

Principalele cerințe au venit din propia nevoie de a avea cât mai la îndemână și tot timpul acces la aceste informații. Consider că acest lucru se regăsește și în nevoia persoanelor care circulă cu mijloacele de transport în comun și care totodată dețin un smartphone cu Android.

3.1.4.2. PROCESUL DE ELICITAȚIE A CERINȚELOR

Identificarea stakeholderilor

Aceștia sunt:

Administrator/Dezvoltatorul software: acesta revine cu viitoare îmbunătățiri ale codului cât și cu modificări asupra bazei de date.

Utilizatorii: în această categorie intră un cerc destul de strâns de persone cum ar fi persoanele care circulă cu mijloacele de transport în comun și care dețin smartphone-uri cu sistem de operare Android(versiunea minimă de 2.2).

Utilizatorul are posibilitatea alegerii, încă de la deschiderea aplicației, a tipului de informații de care are nevoie(ex: programul liniilor, stațiile de RATUC, programul tonetelor de abonamente și bilete/bilete sau localizarea pe har’tă).

Specificațiile sistemului informatic:

La deschiderea aplicației, primul screen va oferi opțiunile de a alege informațiile de care are nevoie utilizatorul

La apăsarea modulului Linii se va deschide un alt screen unde utilizatorul poate naviga între toate liniile de RATUC. La apăsarea pe una dintre liniile din acea listă utilizatorul are posibilitatea vizualizării pogramului.

La apăsarea modulului Stații se va deschide un alt screen cu o listă populată cu toate stațiile de RATUC. Aici utilizatorul are posibilitatea de a alege o stație. Apăsând pe una dintre ele, acesta va putea afla ce autobuze trece prin acea stație. Apăsând pe textview-ul respectiv, utilizatorul va avea posibilitatea alegerii liniilor corespunzătoare. Apăsând pe respectiva linie, pe ecran îi este afișat programul corespunzător.

Dacă utilizatorul dă click pe modulul Bilete_si_Abonamente, se va deschide fereastra Programul tonetelor de bilete și abonamente care va conține informații cu privire la programul de lucru al acestora, precum și tipul lor( bilete/ bilete și abonamente).

La apăsarea pe ultimul modul Harta, utilizatorul se poate localiza pe harta orașului.

Funcția 1: Sistemul va avea o funcție de creare a bazei de date goale prin intermediul unui DatabaseAdapter.

Funcția 2: Sistemul va avea o funcție de deschidere a bazei de date

Funcția 3: Sistemul va implementa funcții de creare a fiecărui tabel în parte

Funcția 4: Sistemul va avea o funcție de verificare a existenței bazei de date pentru a evita recopierea filei de fiecare dată când deschidem aplicația.

Funcția 5: Sistemul va implementa o funcție de copiere a bazei de date din folderul assets(unde a fost pusă baza de date) în cea goală, de unde să poată fi accesată.

Funcția 6: Sistemul va avea o funcție de update a bazei de date.

Funcția 7: Sistemul va avea câte o funcție de regăsire a informațiilor solicitate de utilizator prin intermediul cursorilor.

Funcția 8: Pentru fiecare modul în parte, sistemul va implementa o funcție de creare a screen-ului respectiv în care se va deschide baza de date pentru a putea fi accesată.

Funcția 9: Sistemul va implementa, pentru fiecare modul în parte, câte o funcție de afișare a datelor.

Funcția 10: Aplicația va avea câte o funcție, pentru fiecare modul, de afișare a datelor la apăsarea unui item din lista afișată anterior.

Funcția 11: Sistemul va avea o funcție de ”distrugere” a bazei de date- de închidere.

Funcția 12: Sistemul implementează o funcție de încorporare a unei hărți Google Maps.

Funcția 13: Sistemul va implementa funcții de desenare a marcatorilor pe hartă.

Funcția 14: Sistemul va avea o funcție de inserare a unui marcator pe hartă.

Funcția 15: Sistemul va avea o funcție de afișare mesajului cu adresa locației curente.

Funcția 16: Sistemul va avea o funcție care la atingere(ținând 3 secunde apăsat) va afișa un mesaj.

Funcția 17: Sistemul va implementa o funcție care va afișa noua adresă, dacă utilizatorul se va mișca.

Cazuri de utilizare(prezentate în Figura 8.):

Start aplicație- permite atât utilizatorului, cât și administratorului intrarea efectivă în aplicație.

Crearea baza de date- permite administratorului/dezvoltatorului de crearea unei baze de date goale, în care vor fi introduse datele din cea importată.

Modificare baza de date- permite administartorului adaugarea/ștergere/corectarea datelor aplicației.

Accesare modul Linii- permite atât utilizatorului, cât și administratorului aflarea tuturor liniilor RATUC.

Aflare program linii- permite atât administratorului, cât și utilizatorului de a afla programul tuturor liniilor de luni până duminică.

Accesare modul Statii- permite atât utilizatorului, cât și administratorului aflarea tuturor stațiilor RATUC.

Aflare linii st.- permite aflarea tuturor liniilor care trec printr-o anumită stație

Accesare modul bilete si abonamente- oferă posibilitatea utilizatorului, dar și a administratorului de a naviga în acest modul

Aflare program tonete de bilete si abonamente- oferă posibilitatea utilizatorului și a administratorului de a afla programul ghișeelor de bilete și abonamente, în urma acesării modulului corespunzător.

Localizare hartă- permite utilizatorului, dar și administratorului să se localizeze pe harta orașului, acesta putând pune si pushpoint-uri.

Modificare localizare- permite administratorului de a modifica(îmbunătăți) modul de localizare adăugând/ștergând comportamente.

Figura 8. Diagrama actori și activități

3.1.4.3. CERINȚE SOFTWARE

TRĂSATURI DE SISTEM

Interfața ușor de utilizat de către deținătorii aplicației.

Sistem eficient din punct de vedere al timpului utilizatorului, permițând număr minim de pași de la intrarea în aplicație și până la aflarea informațiilor necesare.

Sistem care ușurează găsirea informațiilor cu privire la mijloacele de transport din Cluj-Napoca.

Sistem care lărgește aria de documentare (oriunde te-ai afla poți utiliza aplicația).

Sistem care necesită conectare la internet doar pentru modulul de localizare, însă poate fi folosit și offline.

Viteza de navigare între pagini este realizată într-un timp cât mai scurt.

Cerințe funcționale

Crearea unei baze de date în care să fie stocate toate liniile, programul aferent acestora, stațiile,tonetele, etc.

Conține un meniu static pentru a permite navigarea ușoară în interiorul aplicației.

În cadrul meniului se regăseasc toate functionalitățile importante ale aplicației.

Să permită realizarea procesului de scroll-down/up pentru căutare unei anumite linii dintr-o listă.

Să permită procesului de scroll-down/up pentru căutare unei anumite stații dintr-o listă.

Să nu pretindă cont de logare pentru utilizator, deoarece e nevoie să fie ușor și rapid de utilizat.

Să nu permită utilizatorului să facă modificări în baza de date.

Să permită întoarcerea la meniu

Să afișeze informațiile necesare utilizatorului.

Utilizatorul să dețină smartphone.

Smartphone-ul să aibă sistem de operare Android cu o versiune minimă de 2.2.

Constrângeri(limitări)

Pentru început aplicația este disponibilă doar persoanelor din Cluj-Napoca care circulă cu mijloace de transport în comun

Utilizatorul să dețină smartphone

Smartphone-ul să aibă sistem de operare Android cu o versiune minimă 2.2.

Pentru ca utilizatorul să se poată localiza pe hartă trebuie să aibă activat internetul.

3.2. PROIECTAREA SISTEMULUI INFORMATIC

Sistemul informatic dezvoltat este compus din patru module:

Primul modul- accesându-l utilizatorul va putea afla toate liniile RATUC( de autobuze, tramvaie și trolee).

Modulul Statii- navigând în acest modul utilizatorul. dacă dorește să știe ce autobuze trec printr-o anumită stație, va putea afla acest lucru și în plus va avea posibilitate aflării și a programului aferent liniei căutate.

Modulul trei-oferă utilizatorul informații cu privire la tonetele de bilete și abonamente (programul de funcționare, tipul- bilete/ bilete și abonamente)

Ultimul modul-Localizare- prin conexiune la internet oferă utilizatorului posibilitatea localizării.

Tabelul 2. Ferestrele aplicației

Rolul aplicației este de a :

Avea o interfață grafică utilizator.

Oferi informații utile utilizatorului cu privire la mijloacele de transport în comun din Cluj-Napoca

Oferi posibilitatea utilizatorului de a se localiza pe harta orașului

Sistemul este format din trei componente:

Sistemul de gestiune a bazei de date

Codul sursă al aplicației, procesele care au loc.

Interfața cu utilizatorul realizată cu ajutorul layout-urilor XML

Arhitectura sistemului va fi pe un nivel, aplicația fiind instalată pe dispozitivul utilizatorului fără a mai fi nevoie de servere pentru stocarea informațiilor. Baza de date aferentă aplicației va fi locala- pe fiecare dispozitiv pe care aceasta va fi instalată.

3.2.1 ORGANIZAREA BAZEI DE DATE

Scopul acestui sistem informatic este de a fi un mod de informare a utilizatorului. Prin mod de informare se înțelege nu numai accesul la informație, ci și modul de realizare a acestui lucru. Este important ca accesul la informații să se realizez într-un timp foarte scurt, într-un mod ușor- fară a fi nevoie de cunoștințe sumplimentare și eficient. Informarea nu definește numai modul de prin care un utilizator are acces la date, ci și faptul că informațiile primite trebuie să fie corecte, de calitate și să satisfacă nevoile utilizatorului. Accesarea datelor în cadrul acestui sistem informatic făcându-se din orice loc. Pentru a îndeplini toate aceste specificații este nevoie de proiectarea unei baze de date.

Baza de date este unul din instrumentele fundamentale de organizare a informației. Ea reprezintă o colecție de date sau infoamții organizate pentru a facilita căutarea și regăsirea rapidă a informațiilor necesare. Bazele de date sunt structurate astfel încât să faciliteze memorarea, regăsirea, modificarea și ștergerea datelor, prin diferite operații specifice. Bazele de date se pot memora pe disc sau bandă magnetică, pe disc optic sau pe orice alt fel de tip de memorare secundară.

Primul pas care trebuie făcut în proiectarea bazei de date este culegerea informațiilor ce vor fi stocate în baza de date. Acestea le extragem analizând specificațiile, scopul și cerințele sistemului informatic. Fiind un sistem bazat pe mijloacele de transport în comun, am considerat utile următoarele informații: totalitatea liniilor RATUC, programul aferent fiecărei linii cu plecare din cele doua capete de funcționare, totalitatea stațiilor și liniile care trec prin acestea, totalitatea tonetelor de bilete și abonamente cu programul de funcționare.

Baza de date a sistemului informatic dezvoltat va avea patru tabele(reprezentate în Figura 9. ):

Linie

Orar

Toneta

Statii

Figura 9. Tabelele bazei de date

În continuare voi prezenta structura tabelelor dupa cum se vede și în Figura 6 atașată mai sus.

Tabela Linie

Această tabelă a fost creată pentru gestionarea tuturor liniilor de autobuze, troleibuze și tramvaie.

Câmpurile tabelei și scopurile acestora:

_Id: un câmp de tip numeric autoincrementat reprezentând cheia primară a tabelei-reprezentând id-ul liniei

Nume: câmp de tip text sugerând denumirea fiecărei linii

Capat1: câmp de tip text semnificând denumirea capătului 1-din care pleacă la începutul programului

Capat2: atribut de tip text semnificând denumirea capătului 2-din care pleacă la începutul programului

Atunci când utilizatorul va alege modulul Linii, se va deschide un screen în care vor fi afișate toate liniile din baza de date, cu denumirea capetelor de plecare. Acceași tabelă este interogată și când utilizatorul navigând în modulul Statii dorește să afle ce linii de autobuze trec printr-o anumită stație, și apoi programul aferent liniei dorite.

Tabela Statii

Aceasta gestioneză toate stațiile de RATUC din oraș, astfel utilizatorul va ști ce autobuze trec prin stația căutată.

Descrierea câmpurilor tabelei:

_id- câmp de tip numeric autoincrementat reprezentând cheia primară a entității, pentru o gestiune mai sigură a datelor.

Nume- câmp de tip text reprezentând denumirea stațiilor.

Linii- un câmp de tip text care stochează informații cu privire la toate liniile care trec printr-o stație.

Această tabelă este interogată atunci când utilizatorul accesează modulul Statii pentru a afla daca trece sau nu un anume autobuz prin stația respectivă, sau pur și simplu pentru a afla ce autobuze trec printr-o stație. Nu este legată de nici un tabel fiind utilizată doar la afișarea stațiilor și respectiv a liniilor stocate în câmpul linii.

Tabela Orar

Programul de funcționare a liniilor RATUC este stocat în această tabelă.

Câmpurile tabelei și scopul acestora sunt prezentate în continuare:

_id-câmp de tip numeric autotincrementat-indică cheia primară a tabelei

idLinie- câmp de tip text reprezentând id-ul fiecărei linii din tabela Linie

orarLVcapat1- atribut de tip text care indică programul de funcționare de luni până vineri a liniilor cu pornire din capătul 1.

orarLVcapat2- atribut de tip text care indică programul de funcționare de luni până vineri a liniilor cu pornire din capătul 2.

orarScapat1- atribut de tip text care indică programul de funcționare pentru ziua de sâmbătă a liniilor cu pornire din capătul 1.

orarScapat2- atribut de tip text care indică programul de funcționare pentru ziua de sâmbătă a liniilor cu pornire din capătul 2.

orarDcapat1- atribut de tip text care indică programul de funcționare pentru ziua de duminică a liniilor cu pornire din capătul 1.

orarDcapat2- atribut de tip text care indică programul de funcționare pentru ziua de duminică a liniilor cu pornire din capătul 2.

Tabela Orar este legată de tabela Linie prin atributul _idLinie, respectiv _id în tabela Linie în care este cheie primară, și cheie străină în tabela Orar. Relația dintre cele două tabele este de 1:1.

Utilizatorul poate vizualiza informațiile cu privire la orarul liniilor atât prin alegerea modulului Linii, cât și cel de Statii.

Tabela Toneta

Această tabelă a fost creată pentru afișarea informațiilor cu privire la ghișeele de bilete/ bilete și abonamente din oraș. Informațiile necesare sunt: denumirea și orele de lucru pentru zilele luni-vineri, sâmbătă și duminică.

Câmpurile tabelei Toneta și scopul acestora sunt prezentate mai jos:

_id- un câmp de tip numeric, autoincrementat, care reprezintă cheia primară a tabelei

Denumire – câmp de tip text, care reprezintă denumirea fiecărei tonete

Tip- câmp de tip text, care reprezintă tipul tonetelor, adică dacă sunt de bilete sau de bilete și de abonamente.

O_zilnic- câmp de tip text, cu ajutorul căruia este gestionat orarul de luni până vineri a tonetelor

O_sambata- câmp de tip text, în care este stocat programul pentru ziua de sâmbătă

O_duminica- câmp de tip text, în care este stocat programul de funcționare a tonetelor în ziua de duminică.

Aceasta este interogată și afișează datele corespunzătoare atunci când utilizatorul accesează modulul Bilete_si_Abonamente. Nu este legată de nici un tabel.

3.2.2. PROIECTAREA INTERFEȚEI GRAFICE CU UTILIZATORUL

Sistemul informatic a fost proiectat utilizând Eclipse. Acesta deține un plug-in ADT pentru dezvoltarea pe platforma Android care oferă avantaje semnificative.

Am ales să dezvolt aplicația cu Eclipse deoarece este un sistem open-source IDE deosebit de popular pentru dezvoltare Java. Acesta este disponibil pentru descărcare pentru fiecare platformă suportată de Android(Windows, MacOS, Linux) chiar de pe pagina principală Eclipse. Acest plug-in permite dezvoltatorilor proiectarea interfețelor atât grafic cât și programatic cu ajutorul layout-urilor XML.

Elementele interfeței cu utilizatorul ale aplicației sunt următoarele: textview, tabels, linearlayout , mapview, butoane și obiecte de tip AlertDialog.

Primul ecran al aplicației este reprezentat de o imagine cu tematica subiectului.

Al doilea ecran al sistemului informatic reprezintă meniul principal compus din cele patru module: Linii, Statii, Bile_si_Abonamente și Harta.

După alegerea modulului Linii se va afișa pe ecran toate liniile RATUC.

Următorul ecran va fi afișat doar dacă din lista de linii se va selecta una pentru aflare programului.

La alegerea modulului Statii reprezentat de următoare figură, se vrea afișarea tuturor stațiilor de RATUC din Cluj-Napoca.

Prin selectarea unei anumite stații, pe screen-ul următor vor apărea informații suplimentare despre stația respectivă și anume vor fi afișate toate liniile care trec prin acea stație.

Dacă utilizatorul este interesat și de programul aferent acestor linii, va avea posibilitatea selectării liniilor respective, iar ecranul următor va fi corespunzător figurii de mai sus(Figura 14).

La selectare modulului Bilete_si_Abonamente, utilizatorul va avea posibilitatea aflării programului și tipului de tonetă, conform ecranului din Figura 18.

Pentru ca utilizatorul să se poată localiza pe hartă, acesta trebuie sa acceseze modulul Hartă.

Următorul screen ce va apărea va fi reprezentat de harta orașului Cluj-Napoca.

Dacă utilizatorul ține apăsat degetul pe ecranul dispozitivului mai mult de 3 secunde îi va apărea un ecran ca în figura de mai jos:

Utilizatorul alege să pună un pinpoint pe hartă. Ecranul care va fi afișat pe dispozitiv este ca cel din figura următoare:

Daca utilizatorul alege să apese pe butonul Toggle View, acest schimbă harta din una cu vedere satelit, în una în care se văd străzile(StreetView) sau invers.

Ultimul buton afișează printr-un Toast pe ecran adresa curentă a utilizatorului.

3.3. IMPLEMENTAREA ȘI TESTAREA SISTEMULUI INFORMATIC

Inițial am creat baza de date în SQLite browser pe care am pus-o în folderul assets. Am creat o clasă DBAdapter în care am creat o bază de date goală, pe care am populat-o cu date din baza de date din assets.

Pentru crearea bazei de date goale am folosit următorul algoritm:

Am declarat toate variabilele corespondente cu câmpurile tabelelor din baza de date.

O variabilă DB_PATH de tip String care ia valoarea căii unde este salvată baza noastră de date.

O variabilă de tip String cu ajutorul căreia creem tabelele.

O variabila de tip boolean care să verifice dacă baza de date există sau nu.

O metodă care să deschidă baza de date.

Un obiect de tip SQLiteDatabase care să îi permită bazei de date posibilitatea de suprascriere.

O metodă cu ajutorul căreia să copiem baza de date.

În cadrul metodei de copiere deschidem cu ajutorul unui obiect de tip InputStream baza noatră de date din folder-ul assets.

O variabilă de tipul String cu ajutorul căreia întroducem baza de date goală.

O variabilă de tipul Outputstream cu ajutorul căreia să deschidem baza de date goală.

O metoda de închidere a bazei de date.

O metodă de creare a tabelelor aferente bazei de date.

O metodă de upgrade a bazei de date.

Pentru fiecare screen al aplicației a fost necesar să construim câte o clasă care să implementeze clasa de bază Activity. În cadrul acestor clase am deschis baza de date și am afișat pe dispozitiv datele rezultate în urma unei interogari asupra bazei de date.

Pentru a afișa pe ecranul dispozitivului am folosit un layout XML în care am integrat elemente speciale pentru afișare: textview, table, linearlayout, viewmaps,etc.

La modulul Harta a fost necesară încorporarea unei hărți a orașului Cluj-Napoca de pe Google Maps. Acest lucru l-am realizat în urma adăugării unor permisiuni:

<uses-library android:name="com.google.android.maps" /> -este necesară deoarece permite cosntruirea de instrumente pentru a lega cererea de biblioteca extrenă Maps. De asemenea, asigură faptul că sistemul Android nu instalează aplicația pe dispozitiv, numai atunci când biblioteca necesară este disponibilă.

<uses-permission android:name="android.permission.INTERNET" /> -este necesară pentru a putea afișa harta pe dispozitiv.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>- pentru a primi permisiunea user-ului.

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> -necesară pentru localizarea utilizatorului

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>- necesară pentru localizarea utilizatorului

Pentru afișarea hărții am implementat următorul algoritm:

O funcție de încorporare a unei hărți Google Maps.

Funcții de desenare a marcatorilor pe hartă.

O funcție de inserare a unui marcator pe hartă.

O funcție de afișare mesajului cu adresa locației curente.

O funcție care la atingere(ținând 3 secunde apăsat) va afișa un mesaj.

O funcție care va afișa noua adresă, dacă utilizatorul se va mișca.

Exemplu de cod de creare a bazei de date:

public void createDataBase() throws IOException {

boolean dbExist = checkDataBase();

SQLiteDatabase db_Read = null;

if (dbExist) {

} else {

db_Read = this.getReadableDatabase();

db_Read.close();

try {

copyDataBase();

this.close();

} catch (IOException e) {

throw new Error("Error copying database");

}

}

}

Exemplu de cod de copiere a bazei de date:

private void copyDataBase() throws IOException {

// Open your local db as the input stream

InputStream myInput = myContext.getAssets().open(DB_NAME);

// Path to the just created empty db

String outFileName = DB_PATH + DB_NAME;

// Open the empty db as the output stream

OutputStream myOutput = new FileOutputStream(outFileName);

// transfer bytes from the inputfile to the outputfile

byte[] buffer = new byte[1024];

int length;

while ((length = myInput.read(buffer)) > 0) {

myOutput.write(buffer, 0, length);

}

// Close the streams

myOutput.flush();

myOutput.close();

myInput.close();

}

Testarea specificațiilor- testarea statică Black Box

În definierea cerințelor există ambiguități, neprecizându-se caracteristici precum viteză, număr de erori permise, etc.

Cerințele sistemului informatic au fost întocmai respectate.

Testarea codului-White Box

Testarea aplicației a avut loc pe parcursul dezvoltării. Am testat de fiecare dată când am avut de afișat ceva pe ecranul dispozitivului cu ajutorul emulatorului, dar și a dispozitivului personal, pentru a vedea dacă informațiile redate corespund cu cele din cerințe. Dacă apăreau unele erori le-am corectat sau am refăcut codul ca la final aplicația să funcționeze corect conform specificațiilor.

UTILIZAREA APLICAȚIEI

Pentru a rula aplicația mai întai trebuie instalat .apk-ul aferent pe dispozitiv.

Pașii în rularea sistemului informatic dezvoltat:

Dublu-click pe icon-ul aplicației(ca în figura ), cu denimirea Licența.

Pe primul ecran al aplicației va apărea meniul principal.

Se va alege modulul Linii printr-un click.

Click pe una din liniile redate în lista de pe ecran.

Aflarea programului pentru linia aleasă.

Apăsare buton back al dispozitivului o singură dată. Se revine la lista de linii de mijloace de transport dând posibilitatea alegerii unei alte linii.

Apăsare buton back al dispozitivului până la revenirea la meniul principal.

Clik pe modulul Statii.

Click pe una din stațiile afișate în listă pentru aflarea mijloacelor de transport care trec prin ea.

Click pe linii.

Click pe linia căutată și vom afla programul respectivei linii, care trece prin stația dorită.

Apăsare buton back al dispozitivului până la revenirea la meniul principal.

Alegerea modulului Bilete_si_Abonamente, pentru aflarea programului aferent tonetelor de bilete și abonamente.

Apăsare buton back al dispozitivului până la revenirea la meniul principal.

Click pe modulul Harta pentru localizare.

Ținem apăsat mai mult de 3 secunde pe harta de pe dispozitiv. Atunci pe ecran va apărea o fereastră în care avem 3 opțiuni.

Click pe prima opțiune-”Put a pinpoint”- și utilizatorul va avea posibilitatea punerii unui pinpoint într-o locație dorită.

Ținem apăsat mai mult de 3 secunde pe harta de pe dispozitiv.

Click pe cea de-a doua opțiune- ”Get adrees”- pe ecran va apărea o fereastră în care va fi afișată adresa curentă.

Ținem apăsat mai mult de 3 secunde pe harta de pe dispozitiv.

Click pe cea de-a treia opțiune-”Toggle View”-dă posibilitatea utilizatorului de a schimba harta, din una în format de vedere satelit, într-o hartă în care se pot vizualiza străzile.

Pentru ieșirea din aplicație se apasă pe butonul de home al dispozitivului.

CAPITOLUL 4. CONCLUZII

Am creat această aplicație după un model din Anglia, din dorința de a integra și în sistemul românesc, clujean, o astfel de aplicație care vine în ajutorul călătorilor cu informații utile și într-un timp cât mai scurt.

Scopul acestei aplicații este de a informa persoanele cu privire la sistemul de mijloace de transport în comun din Cluj-Napoca.

Nevoia de aplicații crește pe zi ce trece datorită progresului rapid în tehnologie. Acest lucru își pune amprenta și în domeniul telefoniei mobile. Telefoanele mobile nu au fost mai populare ca acum, smartphone-urile devenind cea mai bună alegere a cumpărătorilor. Acestea dispun de caracteristici hardware folositoare precum GPS(Global Positioning System), accelerometre și ecrane tactile. Împreuna formează o platformă ispititoare atât pentru utilizatori, cât și pentru tinerii dezvoltatori de aplicații mobile.

În ziua de azi telefonul mobil a devenit un accesoriu indispensabil societății, tinerii întreprinzând marea majoritate a activiăților: de căutare de informații, ascultare de muzica, jocuri, socializare, etc. cu ajutotul acestor dispozitive. Toate acestea fiind posibile datorită progresului tehnologic. Analizând aceste lucruri, am considerat că realizarea unei aplicații de informare a utilizatorilor pe telefonul mobil ar fi o idee bună. O variantă asemănătoare acestei aplicații este site-ul oficial RATUC.

Scopul acestei aplicații este de a oferi utilizatorului toate informațiile de care are nevoie, cu un minim de efort și de timp, trebuind doar instalarea pe telefonul personal al aplicației și pentru localizare- de o conexiune la internet, aplicația rulând și offline pentru restul de module prezentate. Din acest motiv consider ca această aplicație este mai utilă decât pagina web RATUC.

Ceea ce aduce nou această aplicație este faptul că reunește toate informațiile necesare pentru a putea călători cu mijloacele de transport în comun, într-o singură aplicație care poate fi folosită indiferent de locul în care se găsește utilizatorul(pe stradă, la facultate, în cafenea, etc.).

Dacă luăm varianta clasică-siteul oficial RATUC- utiliztorul trebuie să descarce programele aferente liniilor și asta numai cu acces la internet și la un calculator. Din acest motiv consider că aplicația prezentată, pune la dispoziția utilizatorului informații direct de pe telefon- singurul accesoriu pe care îl avem cu toții la noi oră de oră. Acest lucru constituie un avantaj major al sistemului informatic dezvoltat. Este mult mai ușor și util un astfel de sistem pe care să îl poți accesa oricând și oriunde.

Pentru a fi eficienți trebuie să învățăm să ne gestionăm timpul. Societatea de azi se caracterizează prin viteză. În acest caz, timpul devine o resură limitată, iar gestionarea corectă și eficientă a lui devine unul din principalele obiective ale societății, de aceea omul găsește diverse soluții de a câștiga timp. În aceste condiții, sistemul prezentat oferă o modalitate eficientă de satisfacere a necesităților utilizatorilor săi cu un consum minim din resursa cea mai dorită, timpul.

Un alt avantaj al aplicației este și platforma pe care este realizată. Android fiind cea mai revoluționară dintre toate cele existente la momentul actual pe piață. Ca urmare, interesul în dezvoltarea pe dispozitivele Android a explodat, iar vânzarile sunt într-o continuă creștere. În general un dispozitiv Android este disponibil în peste 26 de țări. Însă acest lucru poate fi privit și ca dezavantaj, deoarece persoanele deținătoare de smartphone-uri nu mai preferă mijloacele de transport în comun, ele circulând cu mașina personală.

Sistemul poate fi folosit și offline atâta timp cât utilizatorul dorește să afle informații cu privire la mijloacele de transport, lucru care devine un avantaj major al aplicației spre deosebire de site-ul web care implica o conexiune permanentă la internet. Însă dacă utilizatorul dorește să afle și locația în care se găsește, acesta trebuie să își activeze conexiunea la internet, resursă de care are nevoie și în cazul site-ului web.

Sistemul informatic poate fi îmbunătățit pe viitor prin adăugarea de noi funcționalități sau îmbunătățirea și eficientizarea celor deja existente.

În ceea ce privește îmbunătățirile care s-ar putea aduce aplicației în etapele de dezvoltare ulterioară se pot enumera:

Adăugarea de informații cu privire la modul de achiziționare al biletelor și tariful acestora.

Update la baza de date automat.

Adăugarea unor butoane de căutare prin lista de linii, stații și tonete de bilete și abonamente.

Adăugarea unor module de alegere a limbii aplicației pentru persoanele care vin din alte țări și doresc să circule cu astfel de mijloace de transport. De exemplu a modulului engleză și a celui de maghiară.

Realizarea unui algoritm de aflare a celei mai apropiate stații de locul în care utilizatorul se găsește la momentul utilizării aplicației și tot o dată de căutare a destinației. Aplicația ar trebui să îi sugereze utilizatorului ce autobuze trebuie să ia până la destinație.

Adăugarea unui modul care să informeze utilizatorul cu privire la ordinea stațiilor prin care trece o linie.

Numărul de îmbunătățiri care pot fi aduse sistemului informatic poate crește în funcție de feedback-ul primit de utilizatori, de inovațiile făcute în tehnologie, de instrumentele software și hardware folosite atât de dezvoltatorii/administratorii sistemului ,cât și de utilizatori.

GLOSAR

Bluetooth, 6

browser, 6

built-in, 25

cloud-computing, 5

drivere, 8

Flash, 6

foldere, 18

kestore, 24

layer, 21

middleware, 6

open-source, 7

plugin, 8

scroll-down/up, 41

sendbox, 12

smartphone, 1

threading, 10

touchscreen-uri, 6

upgrade, 56

widgets,, 6

BIBLIOGRAFIE

Bruce Eckel(fourth edition 2006), Thinking in Java, Ed.President, MindView, Inc.

Reto Meier(2009), Professional Android Application Development, edi. Wiley Publishing,Inc.

Reto Meier(2010), Professional Android 2 Application Development, editura Wiley Publishing,Inc.

Mark L. Murphy(2008), The Busy Coder’s Guide to Android Development, ed. CommonsWare.

The Pragmatic Programmers(2009), Hello, Android Introducing Google’s Mobile Development Platforme, ed.Burnette.

Jerome(J.F)DiMarzio(2008), AndroidTM A Programmer’s Guide, ed McGrawHill.

Donn Felker(2010), Android Application Development For Dummies, Ed. Paperback.

Wei-Meng Lee(2011), Beginning Android Application Develpoment

Lauren Darcey(2010), Sams Teach Yourself Android Application Development in 24 Hours, Ed. SAMS

Rick Rogers, John Lombardo(2010), Android Application Development, Ed. O’Reilly Media

Jonathan Gennick(second edition 2006), SQL Pocket Guide, O’Reilly Media

Mike Ownes(2006), The Definitive Guide to SQLite, Apress, Berkely, CA.

Brian Goetz(2006), Java Concurrency in Practice, Addison-Wesley, Reading, MA.

http://dexonline.ro/ , Telefon, ultima accesare 26.03.2012

http://developer.android.com, SDK, ultima accesare 30.05.2012

http://www.vogella.de/, AndroidSQLite, ultima accesare 31.05.2012

http://phandroid.com, The complete history of the android, ultima accesare 31.05.2012

www.theverge.com, Android history, ultima accesare 31.05.2012

http://www.android30tablet.com/, Android news- History of android operating system, ultima accesare 31.05.2012

http://digiupdates.com, Android history, ultima accesare 31.05.2012

https://developers.google.com, Maps-documentation, ultima accesare 15.06.2012

http://developer.android.com, Reference, Java, Util, Map, ultima accesare 15.06.2012

BIBLIOGRAFIE

Bruce Eckel(fourth edition 2006), Thinking in Java, Ed.President, MindView, Inc.

Reto Meier(2009), Professional Android Application Development, edi. Wiley Publishing,Inc.

Reto Meier(2010), Professional Android 2 Application Development, editura Wiley Publishing,Inc.

Mark L. Murphy(2008), The Busy Coder’s Guide to Android Development, ed. CommonsWare.

The Pragmatic Programmers(2009), Hello, Android Introducing Google’s Mobile Development Platforme, ed.Burnette.

Jerome(J.F)DiMarzio(2008), AndroidTM A Programmer’s Guide, ed McGrawHill.

Donn Felker(2010), Android Application Development For Dummies, Ed. Paperback.

Wei-Meng Lee(2011), Beginning Android Application Develpoment

Lauren Darcey(2010), Sams Teach Yourself Android Application Development in 24 Hours, Ed. SAMS

Rick Rogers, John Lombardo(2010), Android Application Development, Ed. O’Reilly Media

Jonathan Gennick(second edition 2006), SQL Pocket Guide, O’Reilly Media

Mike Ownes(2006), The Definitive Guide to SQLite, Apress, Berkely, CA.

Brian Goetz(2006), Java Concurrency in Practice, Addison-Wesley, Reading, MA.

http://dexonline.ro/ , Telefon, ultima accesare 26.03.2012

http://developer.android.com, SDK, ultima accesare 30.05.2012

http://www.vogella.de/, AndroidSQLite, ultima accesare 31.05.2012

http://phandroid.com, The complete history of the android, ultima accesare 31.05.2012

www.theverge.com, Android history, ultima accesare 31.05.2012

http://www.android30tablet.com/, Android news- History of android operating system, ultima accesare 31.05.2012

http://digiupdates.com, Android history, ultima accesare 31.05.2012

https://developers.google.com, Maps-documentation, ultima accesare 15.06.2012

http://developer.android.com, Reference, Java, Util, Map, ultima accesare 15.06.2012

Similar Posts