Tehnologii Utilizate Pentru Implementarea Sistemului de Monitorizare
Cuprins
Capitolul 1. Introducere
1.1. Obiectivele proiectului de diplomă
1.2. Descrierea generală
Capitolul 2. Studiu Bibliografic
2.1. Telefoane mobile –scurt istoric
2.2. Ce este Android-ul?
2.3. Versiuni de Android
2.4. De ce Android?
2.5. Arhitectura Sistemului Android
2.6. Mașina Virtualǎ Dalvik vs. Mașina Virtualǎ Java
2.7. Activitațile Android
2.7.1. Ciclul de viațǎ al unei activitǎți Android
2.8. Android SDK și instrumentele ADT
2.9. Dispozitive cu sistem de operare Android
Capitolul 3. Tehnologii utilizate pentru implementarea sistemului de monitorizare
3.1. Tehnologii utilizate
3.1.1. Tehnologii de programare
3.1.2. Tehnologia GPS
3.1.3. Serviciile GPRS și Wi-Fi
3.1.4. Sistemul MySQL de administrare al bazelor de date
Capitolul 4. Proiectare și implementarea sistemului de monitorizare
4.1. Programarea aplicației în Android
4.1.1. Configurarea mediului de dezvoltare
4.1.2. Crearea unei aplicații Android
4.1.3. Utilizarea modulului Google Maps
4.1.4. Rularea și depănarea aplicației
4.2. Descrierea sistemului de monitorizare
4.2.1. Cazuri de utilizare
4.2.2. Diagrame UML
Capitolul 5. Testarea sistemului de monitorizare
Capitolul 6. Concluzii
Bibliografie
Introducere
Lucrarea prezentă își propune proiectarea și implementarea unui sistem de monitorizare a transportului de persone. Deoarece la ora actuală, lumea este din ce în ce mai interesatăde urmărirea și monitorizarea evenimentelor, crearea unui sistem care să ofere date privind deplasarea diferiților itemi a stat la baza alegerii acestui proiect.
Un alt motiv care a condus la alegerea acestui subiect reprezintă și utilitatea unui astfel de sistem. Astfel, afișarea rutelor pe hartă pentru anumite linii de transport face mai ușor accesul la transportul în comun atât pentru turiști sau studentți, cât și pentru persoanele din oraș, precum și alte facilități oferite de această aplicație.
Obiectivele proiectului de diplomă
Unul din principalele obiective ale acestei lucrări de licență este proiectarea unui sistem de monitorizare a transportului de persoane. Proiectarea acestui sistem reprezintă un studiu al sistemelor de operare pentru dispozitive mobile pentru a alege cel mai potrivit mediu de dezvoltare.
Implementarea sistemului de monitorizare ăn cadrul unui dispoztiv mobil, reprezintă un alt obiectiv urmărit de această lucrare, iar pentru realizarea implementării se va face un studiu asupra unor module software.
Un alt obiectiv important al acestui proiect, îl reprezintă testarea care va verifica funcționalitatea acestui sistem.
Sistemulde monitorizare a transportului de persoane, proiectat, implementat și testat va oferii monitorizarea poziției curente, afișarea rutelor de transport și a celei mai apropiate stații pe o hartă Google Maps, precum și studierea eventualelor posibilități de îmbunătățire a soluției software alese.
Descrierea generală
Lucrarea prezentă este structurată pe șase capitole în care se vor prezenta atât noțiuni teoretice cât și modul de proiectare, implementare și testare a unui sistem de monitorizare a transportului de persoane.
În capitolul doi, Studiu bibliografic, care va face în primă parte un scurt istoric al telefoanelor mobile și va continua cu o descriere a sistemului de operare Android.
Următorul capitol, cu numărul trei, Tehnologii utilizate pentru implementarea sistemului de monitorizare, vor fi prezentate tehnologiile GPS, Google Maps, Wi-Fi, aplicații client-server și baze de date.
Capitolul patru, Proiectarea și implementarea sistemului de monitorizare va fi structurat în două părți. În prima parte sa va face o prezentare a programării aplicației în Android, iar în a doua parte se va face descrierea sistemului de monitorizare.
Testare sistemului de monitorizare reprezintă capitolul cinci și în această parte a proiectului de licență se verifică funcționalitatea sistemului.
Lucrarea se încheie cu concluziile, unde se face o prezentare a tot ce s-a realizat și se vor prezenta obiectivele de viitor.
Studiu Bibliografic
Telefoane mobile –scurt istoric
Telefonul mobil este astăzi un obiect absolut indispensabil pentru foarte mulți oameni. Câtiva dintre ei au chiar mai mult de un telefon. Cu toate acestea, se pare că acest obiect a avut o istorie și o naștere destul de grele, iar trecerea de la telefonul fix la mobil a presupus schimbarea mentalităților. Dar de-a lungul secolului al XX- lea, această modernizare a parcurs mai multe trepte.
Au existat numeroase modificări în structura și proiectarea telefoanelor și azi se gasesc mii de modele și culori, care mai de care mai atractive. Chiar dacă telefoanele mobile și tehnologia fără fir sunt mai folosite și mai dorite în zilele noastre, un telefon fix înca poate fi găsit în majoritatea gospodariilor. Inventarea telefonului de către Alexander Graham Bell, s-a dovedit a fi o binefacere pentru întreaga omenire. Nu exista nici o dovadă clară a originii cuvântului „ telefon ”, dar se crede că este derivat din două cuvinte grecești: „tele”, însemnând „departe” și „phon”, „voce”.
Totuși conceptul de telefonie mobilă, a fost pus în aplicare în 1930, de către inventatorul și omul de afaceri suedez Lars Magnus Ericson, înstalându-și un astfel de dispozitiv în mașina sa. Prin intermediul unei antene bifilare, reușește să se conecteze cu rețeaua de telefonie naționala în timp ce de deplasa prin țara.
Istoria inventării telefonului este chiar interesantă. Cu toate că Alexander Graham Bell este creatorul primului model de telefon, inventarea lui a fost bazată pe multe alte invenții ale altor oameni de știință celebrii. Johann Philipp Reis, un om de știință german, a fost primul care a avut ideea de a transmite sunetul prin intermediul energiei electrice. A construit chiar un aparat care putea transmite sunetul, cunoscut sub numele de „telefonul Reis”. Din păcate avea multe lipsuri și nu i s-au adus înbunătățiri. Antonio Meucii, un om de știință italian, a creat și el o versiune timpurie a telefonului și a făcut o demonstrație în Havana. A depus chiar și o cerere de brevetare pentru modelul său. Unii îl creditează pe Meucii ca fiind primul care a inventat telefonul.
După inventarea telefonului, au existat numeroase demonstrații publice pentru popularizarea lui. Bell Telephone Company a fost înființată în 1877, și producția de telefoane a început la scară largă. În decurs de un an, mii de americani aveau acasă un telefon. În 1915, Bell, aflat la New York, i-a telefonat lui Watson, care era la San Francisco. Acesta a fost primul apel la lungă distanță.
Primul telefon mobil, bazat pe unde radio, a fost realizat în urma cu mai bine de 40 ani. Pe 3 aprilie 1973, Martin Cooper, un cercetător de la Motorola a reușit să efectueze primul apel telefonic de pe un dispozitiv mobil. Telefonul folosit de Cooper cântărea 2,5 kg și măsura aproximativ 23 de cm, de pe acest dispozitiv se putea vorbi timp de 20 de minute și avea timp de încarcarea a bateriei aproximativ 10 0re. La capătul firului s-a aflat nimeni altul decât Joel Engel, rivalul său de la Bell Labs ( actualii Alcatel- Lucent ), o altă companie în căutarea revoluținării tehnologiei.
În anul 1983 ia naștere primul telefon mobil destinat comercializării publicului larg, acesta fiind fabricat tot de Motorola, cunoscut sub numele de DynaTac 8000x. Prețul unui asemenea gadget ajungea la suma de 3.995 de dolari. Ca și caracteristici, acesta ofera timp de convorbire de aproximativ 30 de minute și 6 ore în stand-by. Primul telefon mobil cu adevarat portabil datorită dimensiunii reduse este lansat în anul 1989, modelul fiind Motorola MicroTac 9800x. În continuare Motorola reușește să surprindă, astfel că , în anul 1992 lanseaza primul telefon mobil digital, este vorba de modelul Internațional 3200.
Primul telefon mobil de tip smartphone a fost conceput de IBM în anul 1993, fiind vorba de modelul Simon, acesta beneficia de caracteristici futuristice pentru acea perioadă, cum ar fi: posibilitatea de a trimite e-mail-uri, ecran cu touchscreen, tastatura qwerty, ceas, calendar și calculator.
Figura 2.1 Telefonul Simon
În anul 1994 finlandezii de la Nokia întra pe piața producătorilor de telefonie mobilă. Aceștia reușesc să acapareze rapid piața cu modelul Nokia 1011.
Motorola pierdea ușor teren, astfel că trebuia să vină cu ceva nou, iar rezultatul nu a întârziat să apară: Motorola StartTAC lansat în anul 1996, era primul telefon mobil cu clapetă, cu un design înspirta de communicator din filmul Star TreekJ.
Începând cu anul 1997 până în 1999, Nokia lansează mai multe aparate de succes cum ar fi: Nokia 9000 Communicator, Nokia8810 fiin și primul telefon mobil care nu beneficia de o antena externa, Nokia 3210 care a fost vândut în peste 160 de milioane de unități, Nokia 7110, primul telefon mpbil care va avea încorporată tehnologia wireless, un pas important în industria de telefonie mobila.
Ușor, ușor începând cu anul 2002, smartphone-urile încep să aibă un cuvânt de spus pe piața de telefonie mobilă, caracteristici ca navigarea pe internet sau trimiterea de e-mail-uri nu mai erau considerate un moft ci mai degrabă o necesitate. S-au lansat modele de referință ca: BlackBerry 5810, T-Mobile Sidekick, HpJomada 928 cu sistem de operare Windows Mobile Classic, Palm Treo 180 cu propriul sistem de operare.
În anul 2007 apare pe piață Apple iPhone, un teleon revolutionar care punea la dispoziție un sistem de operare numit IOS ce oferea utilizatorilor o interfață grafică stabilă și accesibilă. Anul 2008 ne aduce lansarea smartphone-ului de la HTC modelul Dream, acesta dispunea de un nou sistem de operare și anume Android de la Google.
Dupa această dată, telefoanele au început să semene foarte mult între ele.
Concurența pe piața telefoanelor mobile inteligente este foarte strânsă dat fiind faptul că tehnologiile în domeniu avansează într-un ritm foarte alert.
Firmele producatoare de smartphon-uri trebuie să fie în permanență pregatite să își îmbunătățească performanțele pentru a putea face față concurenței acerbe.
Samsung Electronics, cea mai importantă producătoare de telefoane mobile din lume, a înregistrat un număr record de vânzări în primul trimestru al anului 2012, 5,9 miliarde de dolari.
Lansarea pe piață a seriei Samsung Galaxy a propulsat compania în vârful piramidei pe acest sector de piață reusind astfel să detroneze gigantul Apple[1].
Ce este Android-ul?
Android-ul este o platformǎ software și un sistem de operare pentru dispozitive mobile bazatǎ pe nucleul Linux. El a fost creat de cǎtre Andy Rubick, Rich Miner, Nick Sears și Chris White ȋn anul 2003. Ȋn anul 2005, Google a cumpǎrat Android și a dat viațǎ acestui sistem de operare, care se aflǎ intr-un continuu proces de dezvoltare. Doi ani mai tȃrziu, ȋn anul 2007, s-au pus bazele alianței Open Handset Alliance (OHA) și ȋmpreunǎ cu cele 34 companii membre (companii de software, hardware si telecomunicații), au conceput un sistem de operare destinat smartphone-urilor, care s-a rǎspȃndit ȋn scurt timp și a fost dezvoltat atȃt de repede cum nici Google probabil nu și-ar fi putut imagina.
De la bun ȋnceput, condițiile cadru au fost ideale pentru ca sistemul Android sǎ se dezvolte și sǎ se rǎspȃndeascǎ rapid; codul sursǎ al sistemului de operare bazat pe Linux este public și stǎ la dispoziția oricǎrei persoane. Trusa de dezvoltare software SDK (Software Development Kit) precum și instrumentele ADK (Accessory Development Kit) sunt, de asemenea, gratuite pentru utilizatorii care construiesc aplicații („apps”) cu scopul de a extinde funcționalitatea dispozitivelor mobile, inițial scrise ȋntr-o variantǎ personalizatǎ a limbajului de programare Java.
Printre avantajele sistemului de operare Android se enumerǎ: platforma gratuitǎ pentru care se gǎsesc o mulțime de aplicații gratuite, ușor de folosit și intuitiv, este sigur și foarte bine construit avȃnd la bazǎ sistemul de operare Linux, posibilitatea de a rula mai multe aplicații ȋn același timp (multitasking), producǎtorii pot deznței Open Handset Alliance (OHA) și ȋmpreunǎ cu cele 34 companii membre (companii de software, hardware si telecomunicații), au conceput un sistem de operare destinat smartphone-urilor, care s-a rǎspȃndit ȋn scurt timp și a fost dezvoltat atȃt de repede cum nici Google probabil nu și-ar fi putut imagina.
De la bun ȋnceput, condițiile cadru au fost ideale pentru ca sistemul Android sǎ se dezvolte și sǎ se rǎspȃndeascǎ rapid; codul sursǎ al sistemului de operare bazat pe Linux este public și stǎ la dispoziția oricǎrei persoane. Trusa de dezvoltare software SDK (Software Development Kit) precum și instrumentele ADK (Accessory Development Kit) sunt, de asemenea, gratuite pentru utilizatorii care construiesc aplicații („apps”) cu scopul de a extinde funcționalitatea dispozitivelor mobile, inițial scrise ȋntr-o variantǎ personalizatǎ a limbajului de programare Java.
Printre avantajele sistemului de operare Android se enumerǎ: platforma gratuitǎ pentru care se gǎsesc o mulțime de aplicații gratuite, ușor de folosit și intuitiv, este sigur și foarte bine construit avȃnd la bazǎ sistemul de operare Linux, posibilitatea de a rula mai multe aplicații ȋn același timp (multitasking), producǎtorii pot dezvolta propriile interfețe de utilizator, operatorii ȋși pot integra serviciile și dezvoltatorii amatori pot conecta aplicațiile cu componentele hardware ale smatphone-urilor, iar punctele slabe din sistem se pot corecta rapid și simplu datoritǎ multitudinii de dezvoltatori implicați ȋn alianța Google.
Primul smartphone pe care a rulat sistemul de operare Android a fost HTC Dream, cunoscut și sub numele de T Mobile G1. Ȋn februarie 2009, telefonul este lansat pe piațǎ cu versiunea 1.5, alias Cupcake, care avea cateva lipsuri, ȋnsǎ, comparativ cu prima versiune 1.0, face posibilǎ afișarea tastaturii virtuale pe ecran și personalizarea ecranului de pornire cu widget-uri.
Figura 2.2 T Mobile G1
Odatǎ cu introducerea Android-ului pe scarǎ largǎ, a fost posibilǎ utilizarea simplǎ a multor elemente cum ar fi busola, giroscopul, senzorul de rotație sau GPS-ul cu funcții avansate. Pe lȃngǎ telefoanele mobile, ȋn februarie 2001 platforma a fǎcut un enorm pas ȋnainte prin lansarea versiunii 3.0 Honeycomb optimizatǎ pentru tablete cu interfațǎ de utilizator iar aplicațiile Google și ecranul de pornire sunt optimizate pentru formatul și noile posibilitǎți ale tabletelor.
Ȋn momentul de fațǎ cu Android pot fi folosite toate aplicațiile Google, iar pe langǎ aceasta sunt disponibile peste 60000 de aplicații și jocuri pe Google Play.
Ȋn final, atȃt telefoanele mobile cȃt și tabletele cu sistemul de operare Android sunt vȃndute ȋn masǎ ȋn acest moment, fiind rapide, ușor de folosit și cu multe aplicații la dispoziție [1][3].
Versiuni de Android
Platforma Android a cunoscut ȋn perioada sa de dezvoltare o mulțime de etape. Ȋn tabelul 3.1 sunt enumerate toate versiunile de Android, existente pȃnǎ ȋn momentul de fațǎ, reprezentate ȋn ordine crescatoare dupǎ nivelul lor API (API-level).
Dupǎ cum se poate observa, fiecǎrei noi versiuni i s-a atribuit un alt nume de cod, nume inspirate din denumirile unor deserturi și ȋn funcție de data apariției, acestea au fost lansate ȋn ordine alfabaticǎ: cupcake, donut, eclair, froyo, gingerbread, honeycomb, ice cream sandwich, jelly bean, kitkat și urmeaza lansarea unei noi versiuni de Android și anume 5.0 a cǎrui nume oscileazǎ ȋntre Lollipop sau Lemon Pie, ȋnsǎ Lollipop este ȋn prezent cel mai probabil.
Tabel 2.1 Versiuni de Android
Figura 2.3 prezintǎ trecerea de la o versiune la alta precum și logo-urile atribuite fiecǎrui nume de cod [1][2][4].
Figura 2.3 Evoluția versiunilor de Android și logo-urile lor
De ce Android?
Sistemul de operare Android permite progamatorilor sǎ scrie cod Java și sǎ controleze dispozitivul prin intermediul unor biblioteci dezvoltate de Google. Sistemul de operare a fost lansat de cǎtre Google sub licența Apache, o licențǎ gratuitǎ și „deschisǎ” (eng. free software and open source). Ȋn continuare sunt prezentate cȃteva din principalele avantaje ale platformei Android:
„Deschisǎ”: Principalul avantaj al sistemului de operare Android reprezintǎ faptul cǎ este open source. Astfel oricine ȋși poate modifica sistemul de operare dupǎ placul sǎu și poate scoate pȃnǎ și ultima „picǎturǎ” de performanțǎ din dispozitivul deținut;
Gratuitǎ: Avȃnd ȋn vedere cǎ nu existǎ licențǎ sau drepturi de autor, aplicațiile pot fi dezvoltate gratuit fǎrǎ a fi nevoie de vreun tip de taxǎ;
Completǎ: SDK-ul Android include un set complet de instrumente de dezvoltare. Acestea includ un program de depǎnare, biblioteci, un emulator de dipozitiv, documentație, monstre de cod și tutoriale. Platformele de dezvoltare sprijinite ȋn prezent includ calculatoare bazate pe x86 care ruleazǎ Linux, MAC OS X 10.4.8 sau mai recent, Windows XP sau Vista. Cerințele includ de asemenea Java Development Kit, Apache Ant si Python. Mediul de dezvoltare (IDE) suportat oficial este Eclipse, utilizȃnd plug-in-ul Android Development Tools (ADT), deși dezvoltatorii pot folosi orice editor de text pentru a edita fișiere XML și Java și apoi sǎ utilizeze unelte din linia de comandǎ pentru a crea, construi și depǎna aplicații Android.
Android poate rula mai multe aplicații ȋn același timp, cu alte cuvinte, se poate naviga pe Internet, inregistra date cu ajutorul tenologiei GPS și asculta muzicǎ. Sistemul este suportat de o sumedenie de telefoane mobile, tablete și alte dispozitive asemǎnǎtoare, lucru ce permite utilizatorilor libertatea de a alege platforma hardware pe care sǎ ruleze Android-ul [1][2].
Arhitectura Sistemului Android
Sistemul Android este o platforma mobila ce cuprinde mai multe funcționalitǎți fiind bazat pe o versiune modificatǎ a Kerner-ului de Linux. Ȋn figura 2.4 este prezentatǎ arhitectura sistemului, care cuprinde straturile (eng. layers) diferite ce compun sistemul de operare.
Figura 2.4 Arhitectura sistemului Android pe layere
Diagrama trebuie parcursǎ de la bazǎ ȋn sus și dupǎ cum se poate vedea, sistemul de operare Android este ȋmpǎrțit ȋn cinci secțiuni grupate ȋn patru layere principale:
• Linux Kernel: Arhitectura se bazeazǎ pe versiunea Linux Kernel 2.6. Acesta este folosit pentru interfața dintre componenta software și componenta hardware. Se folosește Linux deoarece oferǎ un mediu stabil, cu drivere deja existente precum afișaj, camerǎ, memorie Flash, binder (IPC), tastaturǎ, wifi și audio. Oferǎ de asemenea gestionarea memoriei, proceselor, rețelelor, securitatea modelului și o infrastructurǎ de bază robustǎ și garantatǎ de-a lungul timpului a sistemului.
• Libraries: Acest layer reprezintǎ bibliotecile native Android. Sunt scrise ȋn C sau C++ și sunt compilate pentru un anumit hardware. Aici sunt bibliotecile responsabile cu gestiunea bazelor de date (SQLite), redarea filmelor (Media Framework) și afișarea fișierelor HTML (WebKit). Cȃteva din bibliotecile de bazǎ sunt:
→ Surface Manager: este responsabil cu compunerea diferitelor ferestre și afișarea acestora pe ecran;
→ Media Framework: se bazeazǎ pe Packet Video’s OpenCORE, poate ȋnregistra și utiliza majoritatea formatelor de date audio și video.
→ SQLite: librǎria folositǎ pentru a stoca date;
→ SGL: este o librǎrie pentru desenare/afișare 2D, fiind cea mai utilizatǎ pentru afișare;
→ SSL: pentru comuicații ȋn rețea;
→ WebKit: motorul navigatorului utilizat pentru a afișa conținutul HTML;
→ OpenGL: folosit pentru a reda conținut grafic 2D sau 3D, pe ecran.
Android Runtime contine mașina virtualǎ Dalvik și bibliotecile Java. Aplicațiile Android ruleazǎ pe mașina virtualǎ Dalvik, programele sunt scrise ȋn Java și compilate ȋn bytecod. Fișierele „.class” sunt transformate ȋn fișiere executabile Dalvik „.dex”. Toate acesteam pentru cǎ aplicațiile ruleazǎ pe un sistem cu memorie destul de limitatǎ și cu o putere de procesare mai micǎ.
Application Framework este partea cu care lucreazǎ direct programatorul. Aceasta este preinstalatǎ ȋn Android, ȋnsǎ serviciile se pot extinde și se pot crea propriile componente. Cele mai importante componente sunt:
→ Activity Manager: controleazǎ ciclu de viațǎ al aplicațiilor și stiva de navigare a utilizatorului;
→ Content Providers: conține datele ce sunt ȋmparțite ȋntre aplicații (ex. contactele din telefon);
→ Location Manager: acces la GPS;
→ Notification Manager: alerte trimise utilizatorului cǎ ceva s-a ȋntȃmplat ȋn background.
Applications reprezintǎ ceea ce vede utilizatorul și ceea ce el folosește adică aplicațiile și widget-urile [2].
Mașina Virtualǎ Dalvik vs. Mașina Virtualǎ Java
Mașina virtualǎ (VM) este un mediu software ce poate fi un emulator, un sistem de operare sau o virtualizare hardware completǎ, care are o implementare de resurse fǎrǎ ca hardware-ul actual sǎ fie prezent.
Deoarece un emulator permite aplicațiilor și sistemelor de operare sǎ ruleze pe un hardware care are arhitectura procesorului diferitǎ de a celuilalt, ȋn timp ce o mașinǎ VM virtualizeazǎ serverul pe sistemul de operare și ȋn cazul virtualizǎrii hardware, doua sau mai multe sisteme de operare diferite pot rula ȋn același timp pe același hardware. Astfel, ideea principalǎ a mașinii virtuale este de a furniza un mediu care poate executa instrucțiuni diferite de cele asociate cu mediul care gǎzduiește hardware și software.
3.6.1 Mașina Virtualǎ Java (JVM)
O aplicație de sine stătătoare, scrisă în Java, este compilată și rulează pe o așa numită Mașină Virtuală Java. Acest lucru face posibil ca aplicațiile Java să poată fi rulate pe diferite platforme (Sun, MacOS, Win32, Linus), fără a fi nevoie să se recompileze aceste aplicații pentru fiecare din acestea în parte, drept pentru care aplicațiile Java sunt independente de platformă.
Implementarea practică a conceptului independenței de platformă s-a realizat prin folosirea unui calculator virtual, pe care rulează de fapt aplicațiile compilate Java. În urma compilării fișierelor sursă java, nu se va genera un cod executabil pentru o platformă anume, ci se va genera un cod intermediar numit code de octeți (en. byte code). Acest code de octeți este asemănător cu limbajul de asamblare dar nu va putea fi rulat direct pe niciun sistem de operare.
Pentru a rula un cod executabil java (așa numitul cod de octeți) este nevoie de un program special care va interpreta acest cod de octeți și va executa instrucțiuni specifice sistemului de operare pe care se află. Acest program care interpretează codul de octeți se numește Mașină Virtuală Java. Mașina Virtuală Java reprezintă, deci, un calculator abstract și asemenea calculatoarelor reale, aceasta dispune de un set de instrucțiuni, un set de regiștrii și utilizează diferite zone de memorie [5].
3.6.2 Mașina Virtualǎ Dalvik (DVM)
În Android, interpretarea fluxului de biți se face prin intermediul mașinii virtuale Dalvik, care, practic, înlocuiește JVM. Dalvik VM este o mașină virtuală optimizată și este proiectată, luând în considerare limitările specifice despozitivelor mobile (memorie, putere de calcul, energie). DMV folosește arhitectură de registru.
Dalvik este mașină virtuală concepută special pentru sistemul de operare Android de la Google. Software-ul scris în Java poate fi compilat în cod mașină Dalvik (.dex) și executat de mașina virtuală Dalvik, care este o implementare specializată a standardelor Java pentru hardware ce dispune de memorie și CPU limitată, astfel nu are nevoie de redezvoltarea aplicațiilor pentru alte dispoztive deoarece limbajul Java este independent de platformă [1][4].
În figura 2.5 este reprezentată structura celor două mașini virtuale, componentele și etapele de evoluție a codului sursă, până la obținerea unui cod executabil, putând să se observe astfel diferențele enunțate mai sus.
Figura 2.5 JVM vs DVM
Activitațile Android
Activitatea este una dintre cele mai importante componente ale unei aplicații Android, deoarece este strȃns legatǎ de interfața cu utilizatorul. O activitate este utilizatǎ pentru a gestiona interfața cu utlizatorul și este echivalentǎ cu fereastra sau formularul din aplicațiile desktop. Fiecare activitate are propriul sǎu ciclu de viațǎ, independent de ciclu de viațǎ al procesului asociat aplicației.
Ciclul de viațǎ al unei activitǎți Android
Ȋnțelegerea modului ȋn care se controleazǎ activitatea va permite: sǎ utlizǎm ciclul de viațǎ al activitǎții pentru a crea, vizualiza, utiliza și a opri activitǎțile, sǎ salvǎm datele utilizatorului ȋnainte ca activitatea sǎ fie opritǎ și restaurarea acestora atunci cȃnd activitatea este readusǎ ȋn prim-plan, precum și crearea aplicațiilor cu mai multe formulare sau activitǎți.
Ciclul de viațǎ al unei activitǎți descrie starea ȋn care o activitate poate fi la un moment dat. În figura 2.6 este prezentat ciclul de viață al unei activități [1].
Figura 2.6 Ciclul de viațǎ al unei activitǎți
• onCreate(Bundle) – apelatǎ cȃnd activitatea este creatǎ; folosind argumentul metodei de tip Bundle existǎ posibilitatea sǎ restabiliți starea activitǎții, care a fost salvatǎ ȋntr-o sesiune anterioarǎ; dupǎ ce activitatea a fost creatǎ, va fi pornitǎ (onStart());
• onStart() – apelatǎ ȋn cazul ȋn care activitatea urmeazǎ sǎ fie afișatǎ; din acest punct, activitatea poate veni ȋn prim-plan (onResume()) sau rǎmȃne ascunsǎ ȋn fundal (onStop());
• onResume() – apelatǎ când activitatea este vizibilă iar utilizatorul poate interacționa cu aceasta; din această stare, activitatea poate fi plasată în fundal, devenind întreruptă (onPause());
• onRestart() – apelată în cazul în cazul în care activitatea revine în prim-plan dintr-o stare oprită (stopped); după aceasta, activitatea este pornită(onStart()) din nou;
• onPause() – apelată atunci când sistemul aduce în prim-plan o altă activitate; activitatea curentă este mutată în fundal și mai târziu poate fi oprită (onStop()) sau repornită și afișată (onResume()); acesta este un moment bun pentru a salva datele aplicației într-un mediu de stocare persistent (fișiere, baze de date) deoarece după această fază activitatea poate fi terminată și distrusă fără a se anunța acest lucru;
• onStop() – apelată în cazul în care activitateanu mai este utilizată și nu mai este vizibilă, deoarece o altă activitate interactionează cu utilizatorul; din acest punct, activitatea poate fi repornită (onRestart()) sau distrusă (onDestroy());
• onDestroy() – apelată în cazul în care activitatea este distrusă, iar memoria sa eliberată; acest lucru se poate întâmpla în cazul în care sistemul necesită mai multă memorie sau programatorul termină explicit activitatea apelând metoda finish() din clasa Activity.
Android SDK și instrumentele ADT
Aplicațiile sunt scrise, în general, în limbajul de programare Java, folosind trusa de dezvoltare software pentru Android, dar sunt disponibile și alte instrumente de dezvoltare a aplicațiilor. Android SDK oferă o varietate de biblioteci API (Application Programming Interface), suportând o mare parte din bibliotecile din Java SE, însă pune la dispoziția programatorilor o platformă noua (diferită de Swing și AWT), pentru definirea interfețelor utilizator. Aceste biblioteci oferă suport pentru:
Crearea interfeței utilizator (butoane, meniuri, câmpuri text);
Baze de date (SQLite);
Fișiere audio, video, imagini (MPEG4, MP3, AAC, JPG, PNG, etc.);
Conectivitate Bluetooth, Wi-Fi, GSM/EDGE, WiMAX, etc.
Navigare pe Internet (WebKit);
Acces la componente hardware (senzori, GPS, cameră video);
Reprezentări grafice 2D și 3D (OpenGL);
Mesagerie SMS și MMS;
Comuncații în rețea (SSL).
Instrumentele de dezvoltare Android ADT (Android Development Tools), pentru Eclipse, oferă un mediu de dezvoltare cu grad profesional, pentru construirea aplicațiilor în Android. Este un mediu de dezvoltare Java integrat (IDE = Integrated Development Environment) cu caracteristici avansate, care ajută la construirea, testarea, depănarea și împachetarea aplicațiilor Android. Pachetul ADT Bundle livrează tot ceea ce este necesar pentru a începe construirea aplcațiilor, inclusiv o versiune a mediului ADT, pentru eficientizarea dezvoltării aplicațiilor [3].
Dispozitive cu sistem de operare Android
Dispozitivele Android vin sub diferite forme și dimensiuni în întreaga lume. Sistemul de operare Android este suportat de o sumedenie de telefoane mobile (smartphone-uri), tablete și alte dispozitive asemănătoare, alegerea rămânând în mâna utilizatorului care își poate alege platforma hardware în funcție de buget și performanțele dorite.
În ultimii ani a fost destul de ușor să anticipăm în ce direcție vor merge Google și Android, care au gravitat în zona tabletelor și smartphone-urilor. Expansiunea smartphone-urilor e maximă și Android rămâne alegerea standard deoarece arată bine, e versatil, sunt foarte multe modele hardware și bineînțeles sunt pentru toate buzunarele.
Figura 2.7 Concurență acerbă Android – Windows – iOS
Tehnologii utilizate pentru implementarea sistemului de monitorizare
Tehnologii utilizate
Tehnologii de programare
Pentru realizarea sistemului de monitorizare di prezenta lucrare de diplomă, s-au folosit o serie de tehnologii, care prin îmbinarea lor armonioasă, au condus la construirea funcționalității aplicației. S-au folosit câteva tehnologii de programare bazate pe POO (Programare Orientată pe Obiecte), modelul client-server realizată prin socket-uri (clienți Android și server Java).
Tehnologia GPS este folosită pe partea de clienți (utilizatori), care au acces la Internet prin serviciile GPRS și Wi-Fi. Serverul este conectat la baza de date MySQL, prin interfața JDBC.
Noțiuni de programare Orientată pe Obiecte
Tehnicile de programare au evoluat în mod natural spre o tot mai netă separare între conceptele manipulate de programare și reprezentările acestor concepte în calculator.
Programarea nestructurată (un program simplu, ce utilizează numai variabile globale); apar complicațtii atunci când prelucrarea devine mai amplă, iar datele sunt mai numeroase.
Programarea procedurală (program principal deservit de subprograme cu parametrii formali, variabile locale și apeluri cu parametrii efectivi); probleme apar atunci când la program sunt asignați doi sau mai mulți programatori care nu pot lucra simultan pe un același fișier ce conține codul sursă.
Programarea modulară (gruparea subprogramelor cu funcționalități similare în module, implementate și depănate separat);
Programarea orientată obiect se bazează pe programe cu tipuri noi de date, cât și metode associate creării, prelucrării și distrugerii datelor respective. Principiile fundamentale care stau la baza abordării Orientate Obiect sunt abstractizarea și încapsularea.
Abstractizarea permite considerarea unor idei complexe, ignorând anumite detalii irelevante care ar putea aduce confuzii; programele devin ansamble de obiecte caracterizate de proprietăți și comportament specific cu ajutorul cărora interacționează în cadrul programului. Un tip de date abstract (ADT) este o entitate caracterizată printr-o structură de date și un ansamblu de operații aplicabile acestor date. Tipul de date obiectual este un tip de date care implementează tipul de date abstract. Abstractizarea este exemplificată în figura 3.1, unde clasa abstractă FormeGeometrice conține, pe lângă metode implementate, care ulterior vor fi implementate, metodele abstracte calculArie() și afișare(), neimplementate, care ulterior vor fi implementate cu comportament concret, specific fiecărei clase care extinde clasa abstractă (Triunghi, Cerc, Dreptunghi).
Figura 3.1 Exemplu de abstractizare POO
Încapsularea permite focalizarea atenției asupra lucrului care se face, fără a se lua în considerare complexitatea felului în care acest lucru se face. Se recomandă deinirea completă și corectă a datelor și operațiilor, precum și denumirea sugestivă a acestora, pentru a ușura interacțiunea utilizatorului cu programul, acesta nefiind obligat să țină minte detalii legate de implementare. Datele vor fi accesate de el prin intermediu proprietăților și vor fi effectuate operațiile specific prin intermediul metodelor de care dispune tipul de date obiectual definit.
Pe lângă abstractizare și încapsulare, programarea orientată pe obiecte mai are la baze alte două principia fudamentale: moștenirea (extinderea sau specializarea unei clase existente prin definirea unei clase noi care moștenește stările și comportamentul clasei de bază) și polimorfismul (posibilitatea mai multor obiecte aparținând unei clase dintr-o ierarhie de clase de a folosi același nume pentru metode care manifestă un comportament diferit, prin redefinirea lor).
La baza POO stau entități precum clasele și obiectele. Clasele sunt modele software care descriu proprietăți generale ale unor enități cu care lucrează sistemul software. Obiectele reprezintă instanțe ale clasei de obiecte în care se încadrează, o clasă fiind, de fapt un model, o schiță după care sunt create obiectele. Acestea din urmă sunt caracterizate de stare și comportament (starea este stocată în câmpuri, iar comportamentul este exprimat prin metode).
Principalele beneficii aduse de POO, în plus față de celelalte limbaje de programare, se evidențiază prin faptul ca sunt reprezentate de o mai bună abstractizare (modelarea simultană a informației și comportamentului), o mentenanță mai bună (claritate mai ridicată, fragilitate scăzută), reutilizare mai bună (clasele considerate ca fiind component încapsulate) [6][7][8][9].
Limbajul Java
În prezent Java este mai mult decât un limbaj de programare, este o colecție de tehnologie ce permite dezvoltarea și rularea de aplicații sigure, portabile și scalabile. Este un limbaj de programare de nivel înalt , dezvoltat de JavaSoft, companie în cadrul firmei Sun Microsystems.
În funcție de modul de execuție al programelor, limbajele de programare se impart în două categorii și anume: interpretate (instrucțiunile sunt citite linie cu linie de un program numit interpretor și traduse în instrucțiuni mașină) și compilate (codul susrsă al programelor este transformat de compilator într-un cod ce poate fi executat direct de procesor). Din acest punct de vedere, programele Java sunt atît interpretate cât și compilate.
O aplicație de sine stătătoare, scrisă în Java, este compilată și rulează pe o așa numită Mașină Virtuală Java (JVM). Acest lucru face posibil ca aplicațiile Java să poată fi rulate pe diferite platforme (Sun, MacOS, Win32, Linus) fără a fi nevoie să se recompileze pentru fiecare în parte, lucru care face posibilă independența de platformă a aplicațiilor Java [5].
Modelul client-server
În cadrul aplicațiilor în rețea modelul cel mai frecvent întâlnit este client-server, în care un server oferă anumite servicii anumitor clienți rulând pe aceeași mașină sau la distanță (pe alte calculatoare conectate la rețea).
Serverul poate satisface cererile provenite de la clienți în mod fracventativ (la un moment dat serverul va deservi cereri provenite de la un singur client, secvențial pentru toți clienții lui) sau concurent (mai multe cereri provenite de la clienți multiplii vor fi procesate simultan). Cheia conceptului client-server este că depozitul de informații (date stocate, de obicei în baze de date) este localizat central, astfel încât eventualele modificări aduse acestor informații să fie propagate și clienților [5][10].
Programarea în rețea prin socket-uri
Calculatoarele conectate în rețea comunică între ele utilizând protocoale de comunicație TCP (Transport Control Protocol) și UDP (User Datagram Protocol).
În Java pentru realizarea unor programe care comunică în rețea, se utilizează clasele din pachetul java.net.
Protocolul TCP este cel mai utilizat protocol folosit în rețelele locale cât și pe Inernet datorită disponibilității și flexibilității lui, având cel mai mare grad de corecție al erorilor. TCP permite comunicarea între calculatoarele din întreaga lume indiferent de sistemul de operare instalat. În figura 3.2 este prezentat modul de funcționare TCP.
Figura 3.2 Nivele de comunicare în rețea
Protocolul TCP este compus din patru niveluri: aplicație (care se ocupă cu protocoale de nivel înalt, codificarea și controlul dialogului, împachetarea datelor și trimiterea lor la următoarele niveluri), transport (asigură conexiunea logică dintre calculatorul sursă și calculatorul destinație, fluxul de date și corecția erorilor), rețea (prin care se găsește cel mai optim traseu de trimitere a pachetelor) și acces la rețea (se ocupă cu toate problemele legate de transmiterea efectivă a unui pachet IP pe o legătură fizică).
Protocolul UDP (User Datagram Protocol) este un protocol nesigur, destinat pentru aplicații care trebuie să interogheze rapid, fără retrimiterea pachetelor eronate. UDP este folosit în aplicații video sau audio și aplicații client-server.
Un soclu (socket) reprezintă un punct de conexiune într-o rețea TCP/IP. Când două programe aflate pe două calculatoare în rețea doresc să comunice, fiecare dintre ele utilizează un socket. Unul dintre programe (serverul) va deschide un socket și va aștepta conexiuni, iar celălalt program (clientul), se va conecta la server și astfel schimbul de informații poate începe. Pentru a stabili o conexiune, clientul va trebui să cunoască adresa destinației (a PC-ului pe care este deschis socket-ul) și portul pe care socket-ul este deschis [11].
Principalele operații realizate de socket-uri sunt:
Conectare la un alt socket;
Trimitere date;
Recepție date;
Acceptare conexiuni;
Închidere conexiuni.
În figura 3.3, avem ilustrată realizarea comunicarii în rețea prin socket-uri pentru o aplicație de tip client-server.
Figura 3.3 Comunicarea în rețea prin socket-uri (aplicație client-server)
Tehnologia GPS
Sisteme de navigație bazate pe sateliți
Sistemul Satelitar de Navigație Globală (Global Navigation Satellite System – GNSS ) este un sistem electrotehnic complex care constă dintr-un ansamblu de echipamente terestre și cosmice care permite determinarea cu precizie ridicată a poziției (coordonate geografice și altitudine) și a parametrilor de mișcare (viteza și direcția mișcării etc.) pentru obiectele terestre, acvatice și aeriene.
În principiu, un astfel de sistem (GNSS) trebuie să includă informații în timp real pentru navigare, verificare autonomă a integrutății (acuratețea soluției de navigație într-un timp scurt) precum și precizie suficientă pentru navigare în siguranță.
În esență sateliții GPS reprezintă platforme purtătoare de emițătoare radio, ceasuri atomice, computere precum și variate echipamente auxiliare necesare pentru operarea întregului sistem. Sistemele de navigație bazate pe sateliți folosesc tehnica triangulației pentru localiyarea unui obiect, oriunde pe glob, prin intermdiul unor calcule realizate pe baza unor informații provenite simultan de la cel puțin trei sateliți, ducând la obținerea unor coordonate într-un anumit sistem de referință.
Momentan, există două sisteme GNSS complet operaționale la nivel mondial: Sistemul de Poziționare Globală al Statelo Unite (GPS = Global Position System) și Sistemul Global de Navigație bazat pe Sateliți Orbitali ai Rusiei (GLONASS = Global Orbiting Navigation Satellite System) [12][13].
Orice sistem GNSS conține, în principiu, trei segmente majore (segemntul spațial, segmentul de control și segmentul utilizator) așa cum se poate observa în figura 3.4.
Figura 3.4 Segmentele sistemului GPS
Segmentul spațial este format dintr-o constelație de sateliți , fiecare satelit emițând semnale RF modulate cu coduri și mesaje de navigație, fiind considerați purtători ai propriilor coordonate.
Segmentul de control este format dintr-o rețea de stații de control situată la sol, utilizată la supravegherea sateliților și actualizarea mesajelor de navigație a acestora.
Segmentul utilizator care este format din totalitatea receptoarelor de radionavigație special dedicate pentru recepția, decodarea și procesarea codurilor și a mesajelor de navigație [14][15][16][17].
Ce este GPS-ul?
Sistemul GPS (Global Positioning System) este un sistem care calculează locația geografică cu ajutorul sateliților spațiali, de înaltă precizie, ai S.U.A. Acest sistem a fost elaborat în anul 1973, în urma comenzii lansate de „U.S. Department of Defence (D.O.D.)” din Ministerul Apărării S.U.A către “Joint Program Office din Los Angeles Air Force Base”, sub denumirea de NAVSTAR GPS (NAVigation System with Timing and Ranging – Global Positioning System), fiind la origine un sistem de poziționare realizat în scopuri și pentru utilizare militară, devenind în scurt timp accesibil și sectorului civil căpătând o utilizare extrem de largă în multe țări ale lumii [18][19].
Sateliții GPS sunt poziționați pe 6 orbite, la aproximativ 20000 de km deasupra Pământului, deplasându-se cu o viteză de aproximativ 3.9km/s. Sistemul GPS este compus din minimum 24 de sateliți GPS.
Sistemul de poziționare GPS, este constituit din trei componente sau segmente principale, care asigură funcționarea acestuia, după cum urmează: segmental spațial (constituit din constelția de sateliți GPS, 24 – 30 sateliți), segmental de control (constiutit din stațiile de la sol care monitorizează întreg sistemul) și segmental utilizatorilor (compus din utilizatori civil sau militari, care folosesc receptoare GPS dotate cu antenă și anexele necesare) [14][15].
Receptoarele GPS au fost miniaturizate pînă la nivelul a cîteva circuite integrate astfel devenind și foarte economice. Acest lucru face tehnologia foarte accesibilă practic tuturor. La ora actuală GPS își gasește locul în mașini, vapoare, avioane, echipamente de construcții, mașini agricole, pînă și computer portabile etc. Este un atu în diferite situații mai mult sau mai puțin urgente și în curând GPS va deveni aproape la fel de obișnuit ca un telefon. În prezent, sistemul GPS rămâne esențial pentru securitatea națională a S.U.A., iar aplicațiile sale sunt incluse în aproape fiecare aspect al operațiunilor militare. Aproape toate bunurile militare noi, de la vehicule la muniții, sunt echipate cu GPS [20][21].
Determinarea poziției prin metoda triangulației
Poziția este determinată prin măsurarea distanței până la sateliți, matematic avem nevoie de distanța până la patru sateliți, pentru a determina poziția exactă, însă trei distanțe sunt de ajuns pentru calculul acesteia.
Semnalele transmise de GPS sunt codate și recepționate de la cel puțin 3 sateliți, cei mai „vizibili”, pe principiul triangulației, specific sistemelor e navigație bazate pe sateliți, pentru poziționarea într-un sistem de coordinate X, Z, Y (corespunzătoare latitudinii, longitudinii și altitudinii), concomitent cu datele “clock”, reprezentând timpul unic al rețelei de sateliți (poziția celor trei sateliți și sincronizarea cu timpul universal – UTC, sunt necesare pentru determinarea coordonatelor X, Y, Z și respectiv T). Triangulației este prezentată în figura 3.5.
Figura 3.5 Triangulația
Principiul triangulației se bazează pe estimarea cât mai precisă a distanței dintre receptorul GPS și cei trei sateliți. Pentru a putea calcula o locație de pe glob, mai este necesară cunoașterea coordonatelor exacte ale celor trei puncte de referință din spațiu.
Distanța (d) dintre un satelit și un receptor de pe Pământ se calculează cu formula (1):
d = (1)
unde reprezintă întârzierea semnalului recepționat de la satelit, iar c reprezintă viteza luminii.
Formatul mesajelor GPS
Sateliții GPS transmit două tipuri de semnale radio de putere redusă, adică L1 și L2. Sistemul GPS civil utilizează frecvența L1 de 1575,42 MHz, în bandă UHF (Ultra High Frequency). Semnalele transmise sunt capabile să treacă peste nori, sticlă și plastic, dar nu vor putea trece prin majoritatea corpurilor solide, cum ar fi clădiri sau munți.
Fiecare satelit transmite, în mod continuu, spre Pământ, un mesaj de navigație , cu viteza de 50 b/s, care cuprinde trei biți de informație diferiți: un cod pseudoaleator (identifică satelitul care transmite informația), date ephemeris (transmit informații importante despre starea satelitului, timpul sistemului și valorile de corecție ale ceasului) și date almanac (indică poziția fiecărui satelit GPS și a celorlalți sateliți care fac parte din sistem , la un moment dat).
Mesajul de navigație este necesar pentru determoinarea întârzierii semnalului recepționat și a poziției exacte a unui satelit în spațiu. Un întreg mesaj de navigație este compus din 25 de cadre (pagini) independente, cu lungimea 1500 de biți fiecare. Aceste cadre, la rândul lor, sunt divizate în câte 5 subcadre de 300 de biți. Fiecare sub-cadru este compus dintr-un antet (TLM, HOW) care au format comun pentru toate subcadrele transmise. Acest antet este utilizat de către receptoarele GPS la identificarea subcadrelor și, de asemenea, la verificarea parității datelor.
Figura 3.6 Structura unui subcadru
În figura 3.6 este ilustrată structura unui subcadru, al unui cadru din mesajul de navigație. Primul cuvânt al fiecărui sub-cadru, cunoscut ca și TLM, este compus dintr-un preambul de 8 biți (100001011) utilizat pentru sincronizarea cu GPS, rmat de un segment de 16 biți, rezervat utilizatorilor autorizați. Fiecare cuvânt dintr-un sub-cadru se termină cu 6 biți de paritate utilizați pentru verificarea datelor recepționate. În cazul în care biții de paritate nu corespund datelor din cuvântul TLM, receptorul va trece la următorul preambul [18][31].
Acuratețea sistemului GPS
GPS-ul este adesea folosit în scop civil pe post de sistem de navigare. Astfel, rezultatul, obținut în urma operației realizate pe principiul triangulației, este furnizat receptorului sub forma poziției geografice (latitudine și longitudine), în general, cu o acuratețe de 10, până la 100 metri. Așadar, alicațiile software pot utiliza coordonatele pentru a furniza instrucțiuni de orientare.
Stabilirea unei legături (blocare) de către receptoarele GPS de la nivelul suprafeței Pământului durează, de obicei, o perioadă de timp, în special dacă receptorul este un vehicul mobil sau se regăsește în zone urbane dense. Timpul inițial necesar pentru o blocare GPS depinde, în general, de modul în care ponește receptorul GPS. Există trei tipuri de pornire:
pornire fierbinte (cea mai rapidă metodă de blocare GPS) – când dispozitivul GPS își amintește ultima poziție calculată și satelitul de conexiune, iformații almanac, precum și timpul universal (UTC), încercând să se blocheze pe același satelit, calculând noi poziții pe baza informațiilor anterioare. Această metodă este posibilă doar dacă receptorul se găsește în aceeași în care a fost în momentul opririi GPS-ului.
pornire caldă (mai lentă decât pornirea fierbinte) – când disozitivul GPS îșî amintește ultima poziție calculată, datele almanac folosite și timpul universal, dar nu și satelitul cu care a comunicat. Așadar, așteaptă să obțină semnale de la satelit și calculează o nouă poziție.
pornire rece (cea mai lentă metodă de blocare GPS) – când dispozitivului GPS îi lipsesc toate informațiile anterioare, acesta așteptând să localizeze sateliții și apoi calculează blocarea GPS [19].
În prezent, receptoarele GPS sunt caracterizate de o acuratețe extrem de bună, datorită design-ului multi-canal paralel, ajungând la o precizie de până la 15 metri și menținând o blocare puternică, chiar și în condiții nefavorabile.
Surse de erori ale semnalului GPS
Acuratețea receptoarelor GPS este afectată de anumiți factori atmosferici și alte surse de erori, care se grupează în erori datorită zgomotelor, erori datorate interfețelor și eori datorate greșelilor.
Erorile cauzate de zgomote sunt o combinație între efectul zgomotului pseudo-aleator (PRN = PseudoRandom Noise) generat de cod (aproximativ 1 metru) și zgomotul produs de receptor (aproximativ 1 metru).
Erorile cauzate de interfețe sunt datorate disponibilității selective și altor surse posibile:
• Disponibilitatea selectivă (eng. SA = Selecttive Availability) este o degradare intenționată a semnalului provenit de sateliți, de către Departamentul Apărării (DOD), pentru a limita acuratețea sistemului GPS aparținând utilizatorilor din afara armatei sau a Guvernului S.U.A. Această măsură a fost luată pentru a împiedica adversarii militari să folofsească acuratețea ridicată a semnalului GPS. Pentru fiecare vehicul spațial, interfețele pe baza dispnibilității selective sunt aplicate diferit, deci soluția oziției dezvoltate este, de fapt, o funcție care combină interfețele aplicate fiecărui satelit din rețeaua de navigație. Astfel se reduce acuratețea de la 30 de metri la 100 de metri. În anul 2000, Guvernul a oprit funcționarea acestui tip de degradare a semnalelor transmise, îmbunătățind semnificativ acuratețea receptoarelor GPS ale utilizatorilor civili.
• Alte surse de erori cuzate de interfețe:
erori de ceas ale receptoarelo GPS, deoarece ceasul disponibil pe acestea nu este la fel de precis ca și ceasurile atomice construite pe sateliți. Astfel, se pot produce mici erori datorate măsurării greșite a timpului, ducând la o eroare de până la 1 metru;
erori în cazul datelor ephemeris (erori orbitale), lipsa de precizie a stabilirii poziției satelitului de comunicație, producând erori de aproximativ un metru;
distribuția semnalului (greu de detectat și, uneori greu de evitat) cauzată de reflecția semnalului GPS de către obiectele și suprafețele aflate în aproprierea receptorului (clădiri înalte sau munți) care pot interfera sau pot produce erori sau întârzieri de transmisie ale semnalulu respectiv de la satelit la receptor, erorile produse ajung la 0.5 metri;
întârzieri cauzate de ionosferă (stratul cu aer ionizat, pentru care pot fi eliminate cel puțin jumătate din întreaga cantitate) produc eror de până la 10 metri. Pentru înlăturarea acestui tip de eroare, se înglobează în GPS un modul care să caluleze o sumă medie a întârzieri;
întârziri cauzate de troposferă (cea ma joasă parte a atmosferei) în care se petrec schimbările de temperatură, presiune și umiditate, asociate cu schimbările vremii. În acest caz se produc erori de precizie de aproximativ un metru; pentru o precizie mai bună, se recomandă un model care să estimeze sau să măsoare acești parametrii care se modifică în timp.
geometria/umbrirea vehiculelor spațiale, care se referă la poziția relativă a sateliților în orice moment de timp. Geometria ideală a satelițior este întâlnită atunci când aceștia sunt localizați în unghiuri largi unul față de altul; o geometrie deficitară este atunci când sateliții sunt situați în linie dreaptă sau grupuri strânse.
Erori datorate diferitelo tipuri de greseli
greșeli la nivelul segmentului de control, datorat sistemului de calcul sau erori ale oamenilor care produc erori de precizie de la un metru la sute de kilometri;
greșeli ale utilizatorilor, inclusiv selecția geodezică greșită, care poate produce erori de precizie de la un metru la sute de metri;
erori la nivelul receptorulu GPS, datorate unor defecțiuni ale componentelor software sau hardware, care pot duce la apariția unori erori de orice dimensiune [14][18].
Serviciile GPRS și Wi-Fi
Tehnologiile GPRS (General Packet Radio Service) și Wi-Fi (Wireless Field) sunt cele care asigură conexiunea dintre un dispozitiv digital, precum telefonul inteligent (smartphone), și rețeaua de calculatoare (Internet).
GPRS
GPRS este un serviciu mobil de date orientat pe pachete, de generația 2.5G, prin care se permite transmisia , cu viteză sporită, a datelor și repartizarea acestora în fișiere mici, care sut transmise separat, destinatarul cunoscând modu în care acestea trebuie reasamblate. Generația 2.5G reprezină o tehnologie combinată între generația 2Gși 3G, și anume faptul că sistemu GPRS permite rețelelor mobile 2G și 3G să acceseze servicile online ale rețelelor externe, precum Internetul.
Acest serviciu este o extensie a sistemului de comunicații mobile standard (GSM = Global System for Mobile Communication), obținut prin dezvoltarea acestor rețele. Se bazează pe comutarea pachetelor, iar transmisia datelor se consituie pe baza modului de folosire al intervalelor de timp GSM, utilizănd protocoale de transmisie a pachetelor X.25 și TCP/IP. Astfel, în cazul în care sunt utilizate toate cele opt intervale de timp ale canalelor GSM, viteza maximă de transmisie a pachetelor, prin GPRS, poate ajunge, teoretic, la 171,2 kbit/s. Viteza medie este de 40 kbit/s, comparabilă cu cea a unui modem prin cablul de telefonie (dialup modem), însă GPRS-ul oferă posibilitatea unei conexiuni din aproape orice locație [22][23][24].
În figura 3.7 este reprezentat, schematic, un sistem în care se realizează transmisia datelor prin pachete GPRS.
Figura 3.7 Sistem cu comunicare prin GPRS
Wi-Fi
Wi-Fi este numele unei tehnologii renumite de rețele fără fir (wireless), care folosește unde radio pentru a furniza Internet de mare viteză și conexiuni de rețele. Această tehnologie permite unui dispozitiv electronic, mobil să schimbe date, prin intermediul undelor radio, într-o rețea de calculatoare, inclusiv coexiuni la Internet.
Wi-Fi administrează conexiunea dintre emițător și receptor, printr-o rețea fără legături fizice prin fire, ci folosind tehnologia de radio-frecvență (RF), cu o frecvență din spectrul electromagnetic, asociat cu propagarea undelor radio.
Alianța Wi-Fi (Wi-Fi Alliance) definește Wi-Fi ca fiind un produs de rețea locală fără fir (WLAN = Wireless Local Area Nework) care se bazează pe standardele IEEE (Institutul de Inginerie Electrică și Electronică). Datorită faptului că majoritatea rețelelor WLAN au la bază aceste standarde, în limba engleză, termenul „Wi-Fi” este folosit ca și sinonim pentru WLAN.
Mijlocul efectiv prin care este asigurat schimbul de date ]ntre dispozitiv și resursa de rețea este punctul de acces la rețeaua fără fir (hotspot). Un astfel de punct de acces are o arie de acoperire de aproximativ 20 metri în interior (în clădiri) și o arie mai largă în mediul exterior.
Acoperirea poate fi asigurată și pe arii restrânse precum o cameră cu pereți care blochează undele radio sau pe arii întinse de mulți kilometri pătrați, ultima situație fiind rezolvată prin suprapunerea mai multor puncte de acces [25][26].
Structura unui sistem cu comunicare prin Wi-Fi este prezentatîn figura 3.8.
Figura 3.8 Sistem cu comunicare prin Wi-Fi
Sistemul MySQL de administrare al bazelor de date
MySQL este cel mai popular sistem de gestiune a bazelor de date relaționale (RDBMS). Acesta este dezvoltat, distribuit și susținut de Corporația Oracle și este disponibil gratuit (Open Source SQL). Sistemul funcționează ca și un server care asigură accesul mai multor utilizatori la un număr variat de baze de date.
Faptul că MySQL este Open Source, înseamnă că oricine are posibilitatea de a folosi și modifica acest program, descărcându-l de pe Internet, fără a fi supuși unor plăți. Modificările pe care utilizatorii doresc să le efectueze asupra codului, pentru a se adapta la nevoile personale, sunt limitate insă, de licența GPL, care specifică diferite situații în care pot fi aduse modificări și ce anume poate sau nu poate fi modificat.
O bază de date este o colecție structurată de date, de orice tip (numere întregi, reale; șiruri de caractere, date, etc.), iar pentru a accesa, adăuga și procesa datele stocate într-o bază de date a unui calculator, este nevoie de un sistem de management a bazei de date precum MySQL.
O bază de date relațională se bazează pe evitarea depozitării informațiilor într-o magazie masivă, prin stocarea datelor în tabele separate, pentru care se stabilesc un set de reguli care dirijează legăturile dintre câmpurile tabelelor. Aceste reguli pot fi de tipul „unu-la-unu”, „unu-la-mai mulți”, unică, obligatorie, opțională sau pointeri între diferite tabele, asigurând consistența și integritatea aplicației care folosește baza de date.
Sistemul MySQL este ușor de folosit, foarte rapid și sigur, putând rula pe un calculator, împreună cu alte aplicații, fără a necesita o atenție deosebită. SQL este cel mai popular limbaj standardizat folosit pentru comunicarea cu bazele de date. În funcție de mediul de programare utilizat, pot fi folosite variate metode de accesare a bazei de date: SQL în mod direct (ex. generare de rapoarte), încadrarea unor linii specifice sintaxei SQL, într-un cod scris cu un limbaj de programare diferit sau prin folosirea unei interfețe de programare a aplicațiilor (API), care are la bază sintaxa SQL (ex. JDBC).
JDBC este o interfață Java, care poate accesa orice tip de date, în special cele stocate în baze de date relaționale. Aceasta ajută la implementarea aplicațiilor care gestionează trei principale activități:
Conexiunea la baza de date;
Realizarea unor interogări, pe baze de date (acces, adăugare, ștergere, actualizare);
Preluarea și prelucrarea rezultatelor primite de la baza de date, ca și răspuns la interogările anterior efectuate [6][27].
În figura 3.9 este reprezentată arhitectura JDBC pe trei nivele pentru accesul datelor.
Figura 3.9 Arhitectura JDBC pe trei nivele
Proiectare și implementarea sistemului de monitorizare
Programarea aplicației în Android
Configurarea mediului de dezvoltare
Pentru dezvoltarea aplicației este necesară descărcarea pachetului Android Studio (https://developer.android.com/sdk/installing/studio.html), care include componente esențiale ale SDK-ului Android și o versiune a IntelliJ IDEA de echipamente ADT înglobate, pentu a eficientiza dezvoltarea aplicațiilor Android.
Din directorul tools, se aleg bibliotecile Android SDK Tools și Android SDK Platfrom-tools, care conțin principalele instrumente de lucru pentru platforma Android;
Din directorul corespunzător variantei de Android alese pentru implementarea aplicației (în cazul de față, Android 3.0 – API 11), se selectează bibliotecile SDK Platform, Samples for SDK – cu exemple de aplicații pentru începători, Google APIs – set de interfețe care permit interacțiunea cu serviciile Google;
Din directorul extras, se alege biblioteca Android Support Library, care furnizează un fișier JAR (Java ARchive) ce conține o bibliotecă de interfețe (API) și biblioteca Google USB Driver, care permite rularea aplicațiilor pe dispozitive cu sistem de operare Android, prin conectarea USB-ului la calculator.
Crearea unei aplicații Android
Din meniul mediului de programare se alege File → New Project, după cum este prezentat și în figura 4.1.
Figura 4.1 Pasul unu pentru crearea aplicației
În fereastra nouă, se completează câmpurile astfel:
Application name – numele aplicației;
Module name – numele modulului;
Project name – numele proiectului;
Package name – numele pachetului;
Project location – locația proiectului;
Minimum required SDK – versiunea cea mai veche pe care poate rula aplicația creată;
Target SDK – versiunea pentru care se creează aplicația;
Compile with – versiunea compilatorului, platforma care va compila aplicația;
Theme – alegerea temei.
Figura 4.2 Pasul doi pentru crearea aplicaței
Opțiunile pentru configurarea proiectului pot fi păstrate cele predefinite. Se selectează opțiunea Create Activity (conform figurii 4.2) și apoi se apasă butonul Next.
Se selectează opțiunea Blanck Activity conform figurii 4.3.
Figura 4.3 Pasul trei în crearea unei noi activități
Se alege o denumire pentru activitate, apoi se apasă butonul Finish conform figurii 4.4.
Figura 4.4 Pasul patru în crearea unie noi activități
În acest moment, noul proiect Android este creat și se deschide fișierul res → layout → activity_main.xml, împreună cu Graphical Layout, clase din fișierul de resurse, cu ajutorul cărora se definește interfața utilizator, ca în figura 4.5. În partea stângă a figurii se poate observa structura proiectului, cu toate fișierele și bibliotecile înglobate.
Figura 4.5 Aspectul inițial al fișierului Graphical Layout
Conținutul predefinit al fișierului activity_main.xml este afișat în figura 4.6.
Figura 4.6 Conținutul fișierului activity_main.xml
Un alt fișier important din cadrul unui proiect Android este AndroidManifest.xml. Acest fișier cuprinde informații esențiale despre aplicația Android, informații pe care sistemul trebuie să le dețină înainte să ruleze orce parte de cod din aplicație. Unele din cele mai importante atribuții ale fișierului sunt prezentate în figura 4.7 și enunțate mai jos:
Figura 4.7 Structura de bază a fișierului AndroidManifest.xml
Principalele sarcini asigurate de fișierul AndroidManifest.xml sunt următoarele:
denumește pachetul Java al aplicației;
descrie componentele aplicației;
specific permisiunile aplicației necesare pentru a accesa părți protejate ale API (de exemplu accesul la Internet) și pentru a interacționa cu alte aplicații;
declară nivelul minim al interfeței Android necesar pentru aplicație;
menționează lista de biblioteci de care aplicația în cauză trebuie să se lege;
informații legate de activitate în sine.
După ce aceste fișiere au fost configurate, aplicația poate fi scrisă în fișierul MainActivity.java. În figura 4.8 se poate observa locația acestuia în proiect:
Figura 4.8 Locația fișierului MainActivity.java
În componența acestui fișier este deja implementată metoda onCreate(), despre care se știe că este implementată de toate aplicațiile Android, metodă ce va fi suprascrisă, astfel încât să fie inițiate/create obiectele din aplicație.
Utilizarea modulului Google Maps
Noul Google Maps Android API V2 permite și oferă dezvoltatorilor aplicații hărții interactive, bazate pe datele Google Maps. API-ul oferă acces în mod automat la serverele Google Maps și permite adăugarea unor elemente pe o hartă (icoane la anumite poziții, repere; seturi de segmente, polilinii; segmente închise, poligoane; seturi de imagini care sunt afișate în partea de sus a hărții).
Crearea unei aplicații Android care utilizează Google Maps Android V2 necesită următorii pași:
Descărcarea și configurarea Google Play Services SDK;
Pentru început, se cere instalarea bibliotecii Google Play services, din Tools → Android SDK Manager. Se bifează fișierul Extras, în dreptul pachetului Google Play services, apoi se apasă butonul Insatll 1 package, conform figurii 4.9.
Figura 4.9 Instalare pachet Google Play services
Obținerea cheii pentru a accesa Google Maps
La pasul următor este nevoie de o cheie validă a Google Maps API, pentru a putea accesa Google Maps, care se oține online, de pe Google APIs Console, prin specificarea cheii de semnătură a aplicației și a numelui pachetului. Această cheie este liberă și poate fi folosită de oricine la o aplicație care dorește să apeleze Maps API, suportând un număr nelimitat de utilizatori. Cheia de depănare, pentru subscrierea aplicației, se găsește în fișierul users/.android/debug.keystore.
Cheia se bazează pe o formă scurtă de certificat digital, cunoscut sub numele de amprentă SHA-1. Ampremta este un șir de text generat, și deoarece aceasta trebuie să fie unică, Google Maps folosește o modalitate de a identifica cererea dezvoltatorilor. Dezvoltatorii trebuie să scrie următoarea comandă în consola windows-ului:
keytool –list –v –alias androiddebugkey\
-keystore <path_to_debug_keystore>debug.keystore \
-storepass android –keypass android,
unde path_to_debug_keystore este calea spre fișierul keytool, din fisierul bin al JDK-ului din Java. Rezulatul obținut se înscrie într-un fișier text key.txt. Se deschide acest fișier, de unde se copiază șirul de caractere care urmează după SHA-1, în cazul aplicației prezentate acest șir este:
C1:2B:7F:F6:A0:A8:73:DE:4E:B5:0A:01:F5:D8:EA:1A:DF:B3:3E:4B.
Este necesară înregistrarea pe Google APIs Console, unde trebuie parcurși mai mulți pași pentru a putea folosi Google Maps pentru Android:
Se selectează câmpul Services (se observă ca toate serviciile sunt oprite – OFF);
Se activează Google Maps Android APIs v2.(ON);
Se selectează câmpul API Access;
Se apasă butonul Create new Android Key;
Se introduce amprenta SHA-1 și numele pachetului aplicației (com.myapplication.app), separate prin caracterul “;”, conform figurii 4.10.
Figura 4.10 Crearea unei chei pentru aplicație
Se apasă butonul Create;
Google APIs Console crează, ulterior, cheia pentru aplicația Android (Key for Android apps (with certificates)):
AIzaSyDbG5qPTwKW3JpYUGpFyBHBJAshD2daJ6k;
Se copiază valoarea cheii, pentru a putea fi filosită, mai departe, în aplicație.
Pentru a beneficia de utilizarea Google Maps, în aplicație, trebuie inserată valoarea cheii în fișierul AndroidManifest.xml, prin introducerea textului următor, chiar înainte de a închide eticheta </application>:
<meta-data
android:name=”com.goole.android.maps.v2.API_KEY”
android:value=”Your API_KEY” />
unde “Your API_KEY” trebuie înlocuit cu valoarea generată la pasul anterior, în Google APIs Console.
Tot în AndroidManifest.xml se mai adaugă o serie de permisiuni pentru :
Accesul pachetului la harta Google Maps:
<permission
android:name=”com.myapplication.app.permission.MAPS_RECEIVE”
android:protectionLevel=”signature” />
<uses-permission
android:name=”com.myapplication.app.permission.MAPS_RECEIVE”/>
Internet, pentru acces la serverele Google Maps:
<uses-permission android:name=”android.permission.INTERNET”/>
Verificarea stǎrii conexiunii, pentru a putea stabili dacǎ datele pot fi descǎrcate:
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/>
Autorizarea stocării fragmentelor de hartă Google Maps, în memoria externă a dispozitivului:
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
Accesul interfeței la serviciul web Google:
<uses-permission
android:name=”com.google.android.providers.gsf.permission.READ_GSERVICES”/>
Accesul interfeței la rețelele mobile sau fără fir, pentru a determina locația dipozitivului:
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/>
Accesul interfeței la sistemul GPS, pentru feterminarea locației dispozitivului pe o suprafață mică:
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/>
Solicitarea limbajului OpenGL, versiunea 2:
<uses-feature
android:glEsVersion=”0x00020000”
android:required=”true” />
Clasa cheie pentru obiectul Map este clasa GooglMap. Această clasă modelează obiectul Map pentru aplicație. În layout-ul activity_main.xml se introduce următorul cod sursă:
<fragment
android:id = ”@+id/map”
android:layout_width = “match_parent”
android:layout_height = “match_parent”
class = “com.goole.android.gms.maps.MapFragment”/>
Pentru introducerea hărții, în MainActivity.java vom avea următorul cod sursă:
Există patru tipuri de hărți disponibile în Android și anume:
Normal – harta tipică, drumurile sunt reprezentate cu caracteristicile lor, sunt reprezentate râuri, instituții, etc.
(GoogleMap.MAP_TYPE_NORMAL);
Hibrid – hartă fotografică din satelit, drumurile sunt vizibile
(GoogleMap.MAP_TYPE_HYBRID);
Satelit – hartă fotografică din satelit, drumurile nu sunt vizibile
(GoogleMap.MAP_TYPE_SATELLITE);
Teren – date topografice, harta cuprinde culori, linii de contur și etichete
(GoogleMap.MAP_TYPE_TERRAIN);
În Figura 4.11, 4.12, 4.13 și 4.14, sunt reprezentate modele de hărți normal, hibrid, satelit și respectiv teren.
Figura 4.11 Hartă normală
Figura 4.12 Hartă hibrid
Figura 4.13 Hară satelit
Figura 4.14 Hartă teren
Rularea și depănarea aplicației
Rularea pe un AVD
Android SDK permite utilizarea unui emulator pentru crearea unui dispozitiv în vederea simulării aplicațiilor.
Crearea unui AVD (Android Virtual Device) se face selectând opțiunea Tools → Android → AVD Manager și apoi New conform figurii 4.15, iar apoi completarea câmpurilor din figura 4.16.
Figura 4.15 Primul pas în crearea unui AVD
Figura 4.16 Al doilea pas în crearea unui AVD
Executarea unei aplicații se face selectând opțiunea Run as → Android Application, după care se alege dispozitivul virtual la fel ca și în figura 5.17.
Figura 4.17 Selectarea dispozitivului virtual pentru executarea aplicației
Rularea pe un dipozitiv real
Pentru a putea rula aplicația pe un dispozitiv real trebuie să se conecteze dipozitivul cu un cablu USB (Universal Serial Bus) la mediul de dezvoltare și este posibil să fie necesar instalarea driver-ului USB adecvat dispozitivului care se folosește. După care se selectează Run și apoi noul dispozitiv, conform figurii 4.18.
Figura 4.18 Selectarea dispozitivului real
Depănarea unei aplicații
Depănarea este foarte importantă în procesul de realizare a aplicațiilor pentru dispozitive mobile. Acest proces este însă puțin diferit de depănarea programelor clasice pentru calculator, în primul rând pentru că rulează pe alt dispozitiv. Fiind vorba despre dispozitive mobile, în timpul depănprii pot apărea și alte evenimente specifice cum ar fi apeluri telefonice, descărcarea bateriei.
Utilitarul pentru depănarea aplicațiilor Android este DDMS (Dalvik Debug Monitor System). Cu ajutorul acestuia putem vizualiza parametrii dispozitivului și a programelor ce rulează pe acesta. Activarea DDMS se face prin selectarea din meniul Tools → Android → Monitor (DDMS included) conform figurii 4.19.
Figura 4.19 Activare DDMS
Figura 4.20 DDMS
DDMS poate afișa informații despre dispozitivele de simulare pornite, cât și de dispozitivele conectate la calculator, logo-urile dispozitivelor și informații despre procesele curente. Din panoul Device se face alegerea dispozitivului.
Informațiile cele mai mportante pe care le poate oferi DDMS sunt logo-urile sistemului, informații care cuprind toate acțiunile îndeplinite îndeplinite de către un dispozitiv, excepțiile apărute și informațiile necesare executării. Logo-urile apar în LogCat , iar mesajele oferite sunt reprezentate pe câte o linie de text însoțite de date precum tipul mesajului care este reprezentat print-o literă ce poate fii:
I (Information) – mesaj informativ;
D (Debug) – mesaj la depănare;
W (Warning) – mesaj de avertizare;
E (Error) – mesaj de eroare;
V (Verbose) . informații suplimentare afișate de program;
Time – data și ora mesajului;
PID – ID-ul procesului;
Tag – eticheta sau categoria mesajului;
Message – mesaj propiu-zis.
Emulator Control este panoul de control al simulatorului și ne ajută să aducem dispozitivul virtual cât mai aproape de dispozitivle reale și astfel să simulăm starea conexiunii de voce, primirea unui apel telefonic, primirea unui sms sau date de la GPS.
În panoul Threads (Fire) sunt afișate informații legate de fiecare fir de execuție al fiecărui proces.
Descrierea sistemului de monitorizare
Cazuri de utilizare
Cazurile de utilizare reprezintă o tehnică de modelare utilizată pentru a reda funcționalitatea unui sistem existent, dar, în cele mai multe situații se folosește pentru a descrie un nou sistem, înainte de a fi implementat.
Diagramele de utilizare (Use Case Diagrams) sunt diagrame de comportament care scot în evidență tipul utilizatorilor disponibili în aplicație și interacțiunile dintre aceștia și sistem. Acestea sunt realizate din perspective actorilor (utilizatorilor): clienți și specific modul de comunicare între ei și relațiile dintre ei și partea de control a sistemului (serverul central). În figura 4.21 este ilustrată diagram cazurilor de utilizare, prezentând principalele operații pe care modulele sistemului le pot efectua.
Figura 4.21 Diagrama Use Case
Scopul principal al diagramelor de utilizare este de a oferi o prezentare general a modului în care sistemul va fi utilzat, de a ilustra modul de interacțiune între sistem și actori, oferind o privire de ansamblu asupra funcționalităților urmărite a fi implementate în sistemul nou dezvoltat.
Diagrame UML
La fel cum pentru un architect schițele reprezintă proiectul detaliat al unei clădiri, diagramele UML (Unified Modeling Language) permit modelelor software să fie construite, observate și manipulate în timpul analizării și al proiectării. Modelarea este o tehnică folosită în multe discipline, în special în inginerie, întrucât ajută înțelegerea anumitor procese mai complexe din sistem și permit evaluarea proiectului în raport cu diferite criteria, cum ar fi flexibilitatea, securitatea, etc.
UML este un limbaj care realizează descrierea grafică a subiectelor tratate de OOAD (Object-Oriented Analysis and Design), prin care aplicațiile software pot fi documentate, specificate, construite și observate. După examinarea atentă a modelului, pot fi determinate eventuale deficiențe sau disfuncționalități ale sistemului, putând fi mai ușor de stabilit eventuale posibilități de soluționare a problemelor sau de îmbunătățire a sistemului. Scopul final al acestor diagrame este de a deriva codul limbajului de programare. Generarea codului din modelele UML este cunoscut sub numele de inginerie avansată (eng. Forward engineering).
Există mai multe tipuri de diagrame UML, folosite pentru descrierea sistemelor software, cum ar fi: diagram secvențială, diagram claselor, diagram obiectelor, diagram de colaborare, etc.[28].
Diagrama claselor
Diagrama claselor este principal schemă bloc a modelării orientate-obiect. Este o diagram static, care descrie sructura sistemului, prin intermediul claselor component, al atributelor, operațiilor (metodelor) acestora și evidențiază relațile dintre ele (asociere, agregare, imbricare, derivare, extindere) [29] [30].
Testarea sistemului de monitorizare
Testarea sistemului se face pentru verificarea funcționării acestuia. Clientul rulează pe un dispozitiv mobil real, un smartphone cu o versiune API 16, Android 4.1.2 Jelly Bean. Rularea aplicației client nu se poate face pe un dispozitiv virtual deoarece Google Maps nu permite vizualizarea hărții pe un dispozitiv virtual chiar dacă acesta este conectat la Internet.
După conectarea dispozitivului la portul USB și rularea pentru prima dată a aplicației Android pe dispozitivul mobil, aplicația este instalată și poate fi accesată ori de câte ori este nevoie. Testarea aplicației s-a realizat pentru două rute diferite.
După descărcarea si rularea aplicației pe telefon, în prima interfață utilizatorul accesează harta și poate vizualiza locația curentă a acestuia pe hartă. Prezența celor patru butoane (hybrid, satellite, terrain și normal) permite utilizatorului selectarea tipului de hartă dorit. În figura 5.1 este reprezentată interfața de accesare a aplicației, iar în figura 5.2 este reprezentată testarea locației curente a utilizatorului.
Figura 5.1 Prima interfață a aplicației
Figura 5.2 Testare locație curentă
La apăsarea butonului Go, se va putea accesa următoare interfață a aplicației. Aceasta este o interfață de autentificare a clientului, care constă în completarea a doua câmpuri și anume: UserName și Password, după care se apasă butonul de Login. În cazul în care numele sau parola introdusă este greșită, aplicația nu permite trecerea mai departe sper următoarea interfață. În figura 5.3 este prezentată interfața de autentificare.
Figura 5.3 Interfață autentificare client
În figura 5.4 este prezentată interfața după logare. De aici putem să alegem ruta dorită. În cazul proiectului de față, s-au folosit două rute aleatorii și anume 35 și 25.
Figura 5.4 Alegere rută
În figura 5.5 este prezentată, de exemplu, traseul rutei 35 precum și locația utilizatorului. Butonul de Stop utilizatorul la interfața de alegere a rutei, iar butonul de Exit închide aplicația.
Figura 5.5 Traseul rutei 35
Concluzii
Prezenta lucrare de diplomă se concentrează pe implementarea unei aplicații proiectată pentru dispozitivele cu Android SO. Pentru o mai simplă abordare a problematicii studiate pentru realizarea acestui sistem, descrierea funcționalității sistemului a fost realizată prin intermediul diagramelor de utilizare, în starea incipient a proiectului.
Pentru proiectare s-a realizat un sutdiu asupra sistemelor de operare pentru dispositive mobile. Acest sutdiu a dus la alegerea mediului de dezvoltare. Pentru a realize implementarea acestui sistem s-a studiat în detaliu tehnologiile: Android, DPS, baze de date, aplicații client-server, Google Maps și Wi-Fi.
Aplicația realizată vine ca și o soluție alternativă a ușurării accesului la transportul în comun a persoanelor. Sistemul de monitorizare a transportului de personae, proiectat, implementat și testat oferă monitorizarea poziției curente, afișarea rutelor de transport și acelei mai apropiate stații pe o hară Google Maps, precum și studierea eventualelor posibilități de îmbunătățire a soluțiilor software.
Proiectul propus pentru această lucrare de diplomă are multe avantaje, însă, întotdeauna vor exista funcții care pot fi aduse în plus sau aspect care pot fi îmbunătățite, algoritmi care pot fi eficientizați etc., care ar duce la o sporire a eficacității aplicației.
În viitor, se urmărește ca aplicația să fie dezvoltată din mai multe puncte de vedere, în primul rând prin afișarea câtor mai multe informații exacte pe interfețele care utilizează harta Google Maps, alături de date numerice suplimentare: localizarea celei mai apropiate stații de transport pentru o linie dată în funcție de potiția curentă a utilizatorului, monitorizarea poziției, găsirea celei mai scurte rute, estimarea distanțelor și timpilor, feedback vizual și GPS (setarea locației curente ca punct de plecare și sosire) etc.
Bibliografie
[1] Shane Conder- Lauren Darcey-Android Wireless Aplication Development, Addison-Wesley Professional Publishing; second edition, December 25 2010, ISBN 9780321619662
[2] Wei-Meng Lee- Beginning Android4Application Development, John Wiley&Sons Publishing, 8 April 2011, ISBN 9781118017111, http://it-ebooks.info/book/1313/
[3] http://developer.android.com
[4] Satya Komatineni, Dave MacLean – Pro Android4, Apress Publishing, 1 edition, 6 Martie 2012, ISBN 9781430239307, http://it-ebooks.info/book/860/
[5] Bruce Eckel- Thinking in Java, Prentice Hall Publishing, Fourth Edition, 2006, ISBN 0131872486, http://mindview.net/Books/TIJ4
[6] http://docs.oracle.com/javase/tutorial/
[7] K.Barclay, J.Savage-Object-Oriented Design with UML and Java, Elsevier Publishing, Publicat Decembrie 2003, ISBN [anonimizat],
http://dx.doi.org/10.1016/B978-075066098-3/50000-3
[8] Simon Kendal-Object Oriented Programming using Java, Editura Bookboon, Publicat 2009, ISBN 9788776815011, http://books.google.ro/books?id=HWC4ZjXs1V8C.
[9] Dung Nguyen, Stephen Wong, mark Husband-Principles of Object-Oriented Programming, Editura Connexions, Publicat 2008, ISBN 9781616100629, http://www.cd3wd.com/data/133/Principles_of_Object_Oriented_Programming_cmptr_cnx_x10213_.pdf
[10] http://www.hit.ro/stiinta-generala/5-aplicatii-excelente-pentru-navigatie-GPS-foto-si-video/5/?
[11] http://control.aut.utcluj.ro/
[12] http://searchnetworking.techtarget.com/definition/GNSS
[13] http://www.icao.int/Meetings/PBN-Symposium/Documents/9849_cons_en[1].pdf
[14] http://www.colorado.edu/geography/gcraft/notes/gps/gps_f.html
[15] Cornel Păunescu, Sorin Dimitriu, Victor Mocanu-Sistemul Global de Poziționare(GPS):curs, Editura Universității din București, Publicat 2006, ISBN 9737371208, http://www.scribd.com/doc/129703543/Cornel-Paunescu-Sorin-Dimitriu-Victor-Mocanu-%E2%80%93-Curs-GPS
[16] Norman Bonnor-A brief History of Global Navigation Satellite Systems. Journal of Navigation-Cambridge University Press, 65:1-14, Publicat Ianuarie 2012, ISSN 0371-4633, http://dx.doi.org/10.1017/S0373463311000506
[17] Tracy M.L. Brown, Steven A. McCabe, and Charles Wellford-Global Positioning System (GPS) Technology for Community Supervision: Lessons Learned.NOBLIS Technical Report, Aprilie 2007, Număr document 219376, http://www.in.gov/idoc/files/B_M_W_2007_GPS1.pdf
[18] http://www8.garmin.com/aboutGPS/
[19] http://www.gsmarena.com/glossary.php3?term=gps
[20] Jean-Marie Zogg-GPS Essentials os Satellite Navigation:Compedium:Theorie and Principles of Satellite Navigation, Overview of GPS/GNSS System and Applications, U-box Online Publication, 2009, ISBN 9783033021396, http://books.google.ro/books?id=F892KQEACAAJ
[21] http://www.gps.gov/applications/
[22] http://www.gsma.com/aboutus/gsm-technology/gprs
[23] http://www.gsmarena.com/glossary.php3?term=gprs
[24] Brahim Ghribi, Luigi Logrippo-Understanding GPRS:the GSM packet radio service, Computer Networks, Volume 34, Issue 5, November 2000, Pages 763-779, ISSN 1389-1286, http://dx.doi.org/10.1016/S1389-1286(00)00127-4
[25] http://www.webopedia.com/TERM/W/Wi_Fi.html
[26] William Lehr,Lee W.McKinght-Wireless Internet access:3G vs Wifi?, Telecomunication Policy, Volume 27, Issues 5-6, June-July 2003, Pages 351-370, ISSN 0308-5961, http://dx.doi.org/10.1016/S0308-5961(03)00004-1.
[27] David Axmark and Michael “Monty” Widenius-MySQL 5.6 Reference Manual, August 2010, Revision 22474 Publisher, http://dev.mysql.com/doc/refman/5.6/en/
[28] James Rumbaugh, Ivar Jacobson, Grady Booch-The Unfierd Modeling Language Reference Manual, second edition, July 29 2004, Addison Wesley Publishing, ISBN 9780321718952, http://msdl.cs.mcgill.ca/people/tfeng/docs/The%20Unified%20Modeling%20Language%20Reference%20Manual.pdf
[29] Grady Booch-The Unfied Modeling Language User Guide, October 20 1998, Addison-Wesley Publishing, ISBN 0-201-57168-4, http://meusite.mackenzie.com.br/rogerio/the-unified-modeling-language-user-guide.9780201571684.997.pdf
[30] Martin Fowler and Kendall Scott-UML Distiled: A brief Guide to the Standard Object Modeling Language, 2nd Edition, 1999, Published by Addison-Wesley, ISBN 0-201-65783-X, http://udp.vilaboa.cl/ramos/dsi2/cd/(eBook)%20Martin%20Fowler%20-%20UML%20Distilled.pdf.
[31] Jinsoo Kim, Seongkyu Lee, Honyong Ahn, Dongiu Seo, Doochum Seo, Jongchool Lee, Chuluong Choi-Accuracy evaluation of a smartphine-based technology for coastal monitoring, Measurement, Volume 46, Issue 1, January 2013, Pages 233-248, ISSN 0263-2241,
http://dx.doi.org/10.1016/j.measurement.2012.06.010
LISTĂ DE TABELE
Tabel 2.1 Versiuni de Android 5
LISTĂ DE FIGURI
Figura 2.1 Telefonul Simon 3
Figura 2.2 T Mobile G1 5
Figura 2.3 Evoluția versiunilor de Android și logo-urile lor 7
Figura 2.4 Arhitectura sistemului Android pe layere 9
Figura 2.5 JVM vs DVM 12
Figura 2.6 Ciclul de viață al unei activități 13
Figura 2.7 Concurență acerbă Android-Windows-iOS 15
Figura 3.1 Exemplu de abstractizare POO 17
Figura 3.2 Nivele de comunicare în rețea 19
Figura 3.3 Comunicarea în rețea prin socket-uri 20
Figura 3.4 Segmentele sistemului GPS 21
Figura 3.5 Triangulația 23
Figura 3.6 Structura unui subcadru 24
Figura 3.7 Sisteme de comunicare prin GPRS 27
Figura 3.8 Sisteme de comunicare prin Wi-Fi 28
Figura 3.9 Arhitectura JDBC pe trei nivele 29
Figura 4.1 Pasul unu pentru crearea aplicației 31
Figura 4.2 Pasul doi pentru crearea aplicației 32
Figura 4.3 Pasul trei în crearea unei noi activități 32
Figura 4.4 Pasul patru în crearea unei noi activități 33
Figura 4.5 Aspectul inițial al fișierului Graphical Layout 34
Figura 4.6 Conținutul fișierului activity_main.xml 34
Figura 4.7 Structura de bază a fișierului AndroidManifest.xml 35
Figura 4.8 Locația fișierului MainActivity.java 35
Figura 4.9 Instalare pachet Google Plaz Services 36
Figura 4.10 Crearea unei chei pentru aplicație 37
Figura 4.11 Hartă Normală 40
Figura 4.12 Hartă Hibrid 40
Figura 4.13 Hartă Satelit 41
Figura 4.14 Hartă Teren 41
Figura 4.15 Primul pas în crearea unui AVD 42
Figura 4.16 Al doilea pas în crearea unui AVD 42
Figura 4.17 Selectarea dispozitivului virtual pentru executarea aplicației 43
Figura 4.18 Selectarea dispozitivului real 44
Figura 4.19 Activare DDMS 45
Figura 4.20 DDMS 45
Figura 4.21 Diagrama Use Case 46
Figura 5.1 Prima interfață a aplicației 48
Figura 5.2 Testare locație curentă 49
Figura 5.5 Interfață autentificare client 52
Figura 5.4 Alegere rută 51
Figura 5.3 Traseul rutei 35 50
Acronime
ADT – Android Developement Tools
ADV – Android Virtual Device
API – Application Program Interface
CPU – Central Processing Unit
GPS – Global Positioning System ( Sistem de Poziționare Globală)
GSM – Global System for Mobile Communication
OS – Operating System (Sistem de Operare)
iOS – iPhone OS (Sistem de Operare mobil dezvoltat de Apple Inc.)
WAP – Wireless Application Protocol (Protocol de Aplicații fără Fir)
HTTP – HyperText Transmission Protocol (Protocil de Transmisie pentru Hipertext)
RIM BlackBerry – Research In Motion BlackBerry (Sistem de operare specific mărcii de telefoane BlackBerry)
Windows CE – Windows Embedded Compact (Versiune de sistem de operare de la Microsoft)
Pocket PC – Pocket Personal Computer (Calculator Personal de Buzunar = dispozitiv mobil cu sistem de operare)
PDA – Personal Digital Assistant (Dispozotiv utilizat pe post de Asistent Digital Personal)
OHA – Open Handset Alliance (Alianța de dezvoltare a dispozitivelor mobile)
HTC – High Tech Computer (Corporatie de echipamente de telecomunicații)
G1 – First Generation (Prima Generație de rețea mobilă)
Inc. – Incorporation (Corporație)
SDK – Software Developement Kit (Trusa de Dezvoltare Software)
ADT – Android Developement Tools (Instrumente de Dezvoltare în Android)
2D, 3D – 2 Dimension, 3 Dimension ( Reprezentare grafică în 2, respectiv 3 dimensiuni)
MPEG4 – Moving Picture Experts Group (Tip de format video)
AAC – Advanced Audio Coding (Tip de format audio)
JPEG – Joint Photographic Experts Group (Tip de format pentru imagini)
PNG – Portable Network Graphics (Tip de format pentru fișiere imagine)
SGL – Scalable Graphic Library (Bibliotecă în Android pentru reprezentari 3D)
SSL – Secure Sockets Layer (Biblioteca în Android pentru comunicații în rețea)
OpenGL – Open Graphic Library (Bibliotecă în Android pentru redarea conținutului 2D și 3D pe ecran)
HTML – Hyper Text Markup Language (Limbaj de Marcare pentru Hipertext)
SE – Standard Edition (Ediție Standard)
JVM – Java Virtual Machine (Mașina Virtuală Java)
DVM – Dalvik Virtual Machine (Mașina Virtuală Dalvik)
DEX – Dalvik Executable files (Formatul fișierelor executabile în Android)
API – Application Programming Interface (Interfață de Programare a Aplicațiilor)
AWT – Abstract Window Toolkit (Trusă cu instrumente pentru lucrul cu interfețe în Java)
Wi-Fi – Wireless Field (Zona de acces la rețele fără fir)
GSM – Global System for Mobile Communication (Sistem Global de ComunicaTie între dispozitive Mobile)
EDGE – Enhace Data range for GSM Evolution (Tehnologie de evoluție a rețelei GSM)
WiMAX – Worldwide Interoperability for Microwave Access (Standard de comunicare prin rețele fără fir)
SMS – Short Message Sent (Mesaj Scurt Trimis prin telefonul mobil)
MMS – Multimedia Messaging Service (Serviciu de trimitere a mesajelor cu conținut Multimedia)
AVD – Android Virtual Device (Dispozitiv Virtual în Android =Emulator)
WVGA – Wide Video Graphics Array (Tip de dispozitive mobile)
Bibliografie
[1] Shane Conder- Lauren Darcey-Android Wireless Aplication Development, Addison-Wesley Professional Publishing; second edition, December 25 2010, ISBN 9780321619662
[2] Wei-Meng Lee- Beginning Android4Application Development, John Wiley&Sons Publishing, 8 April 2011, ISBN 9781118017111, http://it-ebooks.info/book/1313/
[3] http://developer.android.com
[4] Satya Komatineni, Dave MacLean – Pro Android4, Apress Publishing, 1 edition, 6 Martie 2012, ISBN 9781430239307, http://it-ebooks.info/book/860/
[5] Bruce Eckel- Thinking in Java, Prentice Hall Publishing, Fourth Edition, 2006, ISBN 0131872486, http://mindview.net/Books/TIJ4
[6] http://docs.oracle.com/javase/tutorial/
[7] K.Barclay, J.Savage-Object-Oriented Design with UML and Java, Elsevier Publishing, Publicat Decembrie 2003, ISBN [anonimizat],
http://dx.doi.org/10.1016/B978-075066098-3/50000-3
[8] Simon Kendal-Object Oriented Programming using Java, Editura Bookboon, Publicat 2009, ISBN 9788776815011, http://books.google.ro/books?id=HWC4ZjXs1V8C.
[9] Dung Nguyen, Stephen Wong, mark Husband-Principles of Object-Oriented Programming, Editura Connexions, Publicat 2008, ISBN 9781616100629, http://www.cd3wd.com/data/133/Principles_of_Object_Oriented_Programming_cmptr_cnx_x10213_.pdf
[10] http://www.hit.ro/stiinta-generala/5-aplicatii-excelente-pentru-navigatie-GPS-foto-si-video/5/?
[11] http://control.aut.utcluj.ro/
[12] http://searchnetworking.techtarget.com/definition/GNSS
[13] http://www.icao.int/Meetings/PBN-Symposium/Documents/9849_cons_en[1].pdf
[14] http://www.colorado.edu/geography/gcraft/notes/gps/gps_f.html
[15] Cornel Păunescu, Sorin Dimitriu, Victor Mocanu-Sistemul Global de Poziționare(GPS):curs, Editura Universității din București, Publicat 2006, ISBN 9737371208, http://www.scribd.com/doc/129703543/Cornel-Paunescu-Sorin-Dimitriu-Victor-Mocanu-%E2%80%93-Curs-GPS
[16] Norman Bonnor-A brief History of Global Navigation Satellite Systems. Journal of Navigation-Cambridge University Press, 65:1-14, Publicat Ianuarie 2012, ISSN 0371-4633, http://dx.doi.org/10.1017/S0373463311000506
[17] Tracy M.L. Brown, Steven A. McCabe, and Charles Wellford-Global Positioning System (GPS) Technology for Community Supervision: Lessons Learned.NOBLIS Technical Report, Aprilie 2007, Număr document 219376, http://www.in.gov/idoc/files/B_M_W_2007_GPS1.pdf
[18] http://www8.garmin.com/aboutGPS/
[19] http://www.gsmarena.com/glossary.php3?term=gps
[20] Jean-Marie Zogg-GPS Essentials os Satellite Navigation:Compedium:Theorie and Principles of Satellite Navigation, Overview of GPS/GNSS System and Applications, U-box Online Publication, 2009, ISBN 9783033021396, http://books.google.ro/books?id=F892KQEACAAJ
[21] http://www.gps.gov/applications/
[22] http://www.gsma.com/aboutus/gsm-technology/gprs
[23] http://www.gsmarena.com/glossary.php3?term=gprs
[24] Brahim Ghribi, Luigi Logrippo-Understanding GPRS:the GSM packet radio service, Computer Networks, Volume 34, Issue 5, November 2000, Pages 763-779, ISSN 1389-1286, http://dx.doi.org/10.1016/S1389-1286(00)00127-4
[25] http://www.webopedia.com/TERM/W/Wi_Fi.html
[26] William Lehr,Lee W.McKinght-Wireless Internet access:3G vs Wifi?, Telecomunication Policy, Volume 27, Issues 5-6, June-July 2003, Pages 351-370, ISSN 0308-5961, http://dx.doi.org/10.1016/S0308-5961(03)00004-1.
[27] David Axmark and Michael “Monty” Widenius-MySQL 5.6 Reference Manual, August 2010, Revision 22474 Publisher, http://dev.mysql.com/doc/refman/5.6/en/
[28] James Rumbaugh, Ivar Jacobson, Grady Booch-The Unfierd Modeling Language Reference Manual, second edition, July 29 2004, Addison Wesley Publishing, ISBN 9780321718952, http://msdl.cs.mcgill.ca/people/tfeng/docs/The%20Unified%20Modeling%20Language%20Reference%20Manual.pdf
[29] Grady Booch-The Unfied Modeling Language User Guide, October 20 1998, Addison-Wesley Publishing, ISBN 0-201-57168-4, http://meusite.mackenzie.com.br/rogerio/the-unified-modeling-language-user-guide.9780201571684.997.pdf
[30] Martin Fowler and Kendall Scott-UML Distiled: A brief Guide to the Standard Object Modeling Language, 2nd Edition, 1999, Published by Addison-Wesley, ISBN 0-201-65783-X, http://udp.vilaboa.cl/ramos/dsi2/cd/(eBook)%20Martin%20Fowler%20-%20UML%20Distilled.pdf.
[31] Jinsoo Kim, Seongkyu Lee, Honyong Ahn, Dongiu Seo, Doochum Seo, Jongchool Lee, Chuluong Choi-Accuracy evaluation of a smartphine-based technology for coastal monitoring, Measurement, Volume 46, Issue 1, January 2013, Pages 233-248, ISSN 0263-2241,
http://dx.doi.org/10.1016/j.measurement.2012.06.010
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Tehnologii Utilizate Pentru Implementarea Sistemului de Monitorizare (ID: 163950)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
