• Nu S-Au Găsit Rezultate

Aplicaţie Android

N/A
N/A
Protected

Academic year: 2022

Share "Aplicaţie Android "

Copied!
73
0
0
Arată mai multe ( pagini)

Text complet

(1)

UNIVERSITATEA ALEXANDRU IOAN CUZA IAŞI FACULTATEA DE INFORMATICĂ

LUCRARE DE LICENŢĂ

Aplicaţie Android

Absolventă: Coordonator ştiinţific:

Alexandra-Mihaela Siriţeanu Lector Dr. Adrian Iftene

Sesiunea: iulie, 2012

(2)

2

Declaraţie privind originalitate şi respectarea drepturilor de autor

Prin prezenta declar că Lucrarea de licenţă cu titlul “Aplicaţie Android” este scrisă de mine și nu a mai fost prezentată niciodată la altă facultate sau instituție de învățământ superior din țară sau străinătate.

De asemenea, declar că toate sursele utilizate, inclusiv cele preluate de pe Internet, sau indicate în lucrare, cu respectarea regulilor de evitare a plagiatului:

 toate fragmentele de text reproduse exact, chiar și în traducere proprie din altă limbă, sunt scrise între ghilimele și dețin referința precisă a sursei;

 reformularea în cuvinte proprii a textelor scrise de către alți autori deține referința precisă;

 codul sursă, imagini etc. preluate din proiecte open-source sau alte surse sunt utilizate cu respectarea drepturilor de autor și dețin referințe precise;

 rezumarea ideilor altor autori precizează referința precisă la textul original.

(3)

3

Declaraţie de consimţământ

Prin prezenta declar că Lucrarea de licenţă cu titlul “Aplicaţie Android”, codul sursă al programelor şi celelalte conţinuturi (grafice, multimedia, date de test etc.) care însoţesc această lucrare să fie utilizate în cadrul Facultăţii de Informatică.

De asemenea, sunt de acord ca Facultatea de Informatică de la Universitatea Alexandru Ioan Cuza Iaşi să utilizeze, modifice, reproducă şi să distribuie în scopuri necomerciale programele-calculator, format executabil şi sursă, realizate de mine în cadrul prezentei lucrări de licenţă.

(4)

4

Cuprins

Capitolul I ... 9

Introducere ... 9

Android ... 11

Platforma Hardware ... 11

Sistemul de operare ... 14

Componentele unei aplicaţii Android ... 15

Clasele de bază ... 15

Fişierul Manifest ... 16

Utilizarea de resurse externe ... 19

Rezumat ... 23

Capitolul 2 ... 25

State of the Art ... 25

Aplicaţii de supravegheat persoane ... 25

Google Maps ... 25

Gypsii ... 26

LOCiMobile ... 27

Life360 ... 28

Match2Blue ... 29

Glympse ... 29

Platforme de dezvoltare pentru Realitatea Augmentată ... 30

Look! ... 30

Unifeye SDK Mobile ... 31

Mixare ... 33

(5)

5

Wikitude ... 33

Layar ... 34

LibreGeoSocial ... 35

Rezumat ... 36

Capitolul III ... 37

Nivelul logic – Tehnologiile utilizate ... 37

Android Location Service ... 37

GPS Provider ... 38

Network Provider ... 39

Determinarea poziţiei unui telefon Android ... 40

LocationManager ... 41

Location Provider ... 42

Location ... 42

Criteria ... 42

LocationListener ... 42

Google Maps ... 43

Componentele Google Maps ... 43

JSONObject ... 44

Facebook API ... 46

Mixare API ... 48

Mesaje Text (Short Message Service) ... 49

Nivelul de interfaţă ... 50

Lucrul cu animaţii ... 51

Utilizarea de liste cu conţinut eterogen ... 53

(6)

6

Nivelul de date ... 54

Ghid de utilizare a aplicaţiei ... 56

Rezumat ... 65

Concluziile lucrării ... 66

Bibliografie ... 68

Glosar ... 72

(7)

7

Tabel de figuri

Figura 1.1 - Arhictura MCP ... ...12

Figura 1.2 - Structura sistemului de operare Android……… 15

Figura 2.1 - Google Maps Latitude ... 26

Figura 2.2 - Gypsii . ……….26

Figura 2.3 Aplicaţiile LOCiMobile……… 27

Figura 2.4 - Life360………... . 28

Figura 2.5 – Match2blue ………29

Figura 2.6 - Glympse . ……….30

Figura 2.7 - Structură Bibliotecă Unifeye ………..31

Figura 2.8 – Junaio ……….32

Figura 2.9 - Afişarea punctelor geografice utilizând Mixare ……….33

Figura 2.10 – Wikitude………..33

Figura 2.11 – Layar ………34

Figura 2.12 – LibreGeoSocial ………...34

Figura 3.1 - Sateliţii GPS ... ………...36

Figura 3.2 Componentele Android pentru localizare………...38

Figura 3.3 Înregistrarea aplicaţiei MeetYou la Facebook………47

Figura 3.4 Ierarhie de obiecte View şi ViewGroup ... ………51

Figura 3.5 Translarea unui obiect de tip LinearLayou ... ………53

Figura 3.6 Diagrama bazei de date ... ………55

Figure 3.7 Crearea unui cont MeetYou şi logarea în aplicaţi . ………57

Figure 3.8 Afişarea prietenilor pe hăţile Google şi pe ecranul telefonului utilizând Mixare . ………58

(8)

8

Figura 3.9 Crearea şi vizualizarea unei locaţii utilizând Google Maps ... ... 59

Figura 3.10 Înregistrarea într-o locaţie ……….……… ... 60

Figura 3.11 Recepţionarea de cereri noi şi afişarea lor ... ...61

Figura 3.12 Editarea unui grup……… .. 62

Figura 3.13 Adăugarea unui utilizator a cărui cerere de prietenie a fost respinsă ... ...62

Figura 3.14 Accesarea opţiunilor disponibile pe profilul unui prieten ………63

Figura 3.15 Setarea cuvântului cheie . ...64

Figura 3.16 Căutarea unui prieten ………..……… ... 64

(9)

9

Capitolul I

Introducere

Nevoia de socializare a omului a fost explorată încă din Antichitate, când Aristotel afirma: „Omul este prin natura sa o fiinţă socială” (Aristotel, Politica I), prin acest termen dorind să ilustreze faptul că entitatea umană este destinată traiului alături de semenii săi, în cadrul unei comunităţi organizate.

Cum nu există societate fără comunicare, aşa nu există niciun individ fără interacţiune în mediul social. De-a lungul timpului, formele de comunicare şi perspectiva asupra acestui proces s-au dezvoltat în funcţie de progresul tehnologiei. Apariţia calculatorului şi apoi a internetului a revoluţionat modul de comunicare al oamenilor, reuşind să depăşească orice limitare dependentă de timp sau spaţiu, ajutându-i să interschimbe într-un mod eficient informaţii. Totuşi, niciunul dintre acestea nu a reuşit să conecteze oamenii oriunde şi oricum aşa cum telefonul mobil o realizează.

Apariţia telefoanelor inteligente (smartphones) este o consecinţă a acestui fapt, după cum Benjamin Speckmann sugerează în lucrarea sa de disertaţie1.

Necesitatea de a depăşi orice prag în privinţa interrelaţionării umane, precum şi nevoia de a propaga în cel mai scurt timp informaţiile sunt vizibile în vânzările telefoanelor mobile. Conform ziarului Gartner2, vânzarea acestora a crescut cu 16.5% în trimestrul doi al anului 2011 faţă de acelaşi trimestru din anul precedent, ajungând la 428.7 unităţi. Vânzarea telefoanelor smart a crescut şi ea cu 74%, fiind vândute 107.7 milioane de articole în întreaga lume. Android a fost sistemul de operare smartphone de top, cu o cotă de piaţă de 43.4% şi cu o unitate de vânzare în valoare de 46,78 milioane dispozitive, depăşindu-i pe Symbian aflat pe a doua poziţie cu 22.1 % şi Apple iOS cu 18.2%.

Dorinţa de a folosi telefonul nu numai pentru a apela pe cineva, pentru a expedia sau recepţiona un mesaj a fost preconizată de Google încă din 2005, motiv pentru care a şi cumpărat dezvoltatorul iniţial de software pentru telefoane mobile Android Inc. în luna august a aceluiaşi an.

1 Speckmann, B. 2008. The Android mobile platform. A Review Paper Submitted to the Eastern Michigan University Department of Computer Science In Partial Fulfillment of the Requirements for the Master of Science in Computer Science. Ypsilanti, Michigan. (în format electronic la: <<http://www.emich.edu/compsci/projects/Master_Thesis_- _Benjamin_Speckmann.pdf>>, accesat ultima oară la 17 decembie 2011)

2 Pagina articolului: http://www.gartner.com/it/page.jsp?id=1764714

(10)

10 Un al doilea pas important ce trebui reamintit a fost în 2007 la fondarea consorţiului comercial Open Handset Alliance la care au aderat 48 de companii hardware, software şi de telecomunicaţii, dispuse să ajute la dezvoltarea standardelor deschise pentru dispozitive mobile.3

În acest mod s-a dezvoltat platforma Android constituită dintr-un nucleu Linux, cu middelware, librării şi API-uri scrise în C, precum şi aplicaţii software ce rulează pe platforme ce includ librării compatibile cu Java, bazate pe Apache, o licenţă de tip free-software şi open source, aspect ce îl face atractiv în rândul dezvoltatorilor.4

“Imaginaţia noastră este singura limită a ceea ce putem spera să realizăm în viitor.”5, constata inventatorul american Charles Franklin Kettering. În contextul societăţii actuale, înţelesul acestei mărturii se poate extinde în sensul că, ceea ce conduce la progresul tehnologiei şi la dezvoltarea de software inovativ este finalmente, fantezia umană. Lucrarea de faţă are ca scop prezentarea unei aplicaţii care ilustrează caracterul social al omului - nevoia de a fi mereu în legătură cu familia şi prietenii săi – avându-se în vedere facilităţile puse la dispoziţie de sistemul de operare Android.

Aplicaţia MeetYou, aşa cum am hotărât să o denumesc, pune în legătură utilizatorii ei prin furnizarea locaţiei unei persoane prietenilor, colegilor sau celorlalţi membri ai familiei care folosesc aceast program. Un utilizator are posibilitatea de a fi notificat în cazul în care se află în apropierea unui prieten şi de a lăsa pe alţii să-i afle locaţia chiar şi atunci când aplicaţia nu este deschisă prin trimiterea unui mesaj conţinând un cuvânt cheie stabilit de către acesta.

Locaţia este precizată prin latitudinea şi longitudinea locului în care se află telefonul mobil pe care rulează aplicaţia şi poate fi vizualizată pe hărţile puse la dispoziţie de serviciul Google Maps. Pe lângă aceasta, un utilizator se poate înregistra într-o anumită locaţie, pentru ca ceilalţi prieteni să poată vizualiza şi mai tâtziu locurile pe care le-a frecventat şi eventual activităţile pe care le-a desfăşurat în acele locuri. Una dintre caracteristicile interesante puse la dispoziţie de acest program, este posibilitatea vizualizarii locaţiei prietenilor utilizând realitatea augmentată, lucru realizat cu ajutorul bibliotecii puse la dispoziţie de aplicaţia mix Augmented Reality Engine (mixare).

3 Android (Sistem de operare), Wikipedia (în format electronic la:

<<http://ro.wikipedia.org/wiki/Android_(sistem_de_operare)>>, accesat ultima oară la 17 decembie 2011)

4 Android Developers: <<http://developer.android.com/guide/basics/what-is-android.html>>, accesat ultima oară la 18 decembie 2011

5 http://www.citatepedia.ro/citat.php?id=40965

(11)

11

Android

Următoarele două subcapitole oferă o privire de ansamblu asupra platformei Android, atât din punct de vedere hardware, cât şi software şi au fost realizate utilizăndu-se ca referinţe: lucrarea Android Forensics - Investigation, Analysis, and Mobile Security for Google Android scrisă de Andrew Hoog şi publicată la editura Elsevier în 2011 [6], precum şi pagina web destinată programatorilor Android [7]. Ultimul subcapitol descrie componenţa unei aplicaţii Android şi a fost elaborată consultând materialul Professional 2 Application Development scris de Reto Meier şi publicat la editura Wiley Publishing în 2010 [34].

Platforma Hardware

Android a fost proiectat pentru a fi compatibil cu o gamă largă de componente hardware. Aceasta constituie o caracteristică importantă, întrucât permite producătorilor să conceapă şi să integreze elementele necesare dispozitivului Android, făcându-l atractiv atât în rândul programatorilor cât şi al consumatorilor.

Fiind o platformă destinată dezvoltării de aplicaţii pentru telefoane mobile, în realizarea ei s-a avut în vedere conservarea energiei acumulatorului precum şi gestionarea în mod eficient a resurselor de memorie existente.

Aşa cum apare în [6], majoritatea dispozitivelor Android au utilizat încă de la început procesoare ARM, cunoscute a fi destul de puternice, raportat la consumul mic de energie. Cu toate acestea, unele corporaţiile care au portat Android pe alte platforme au ales să folosească propriile lor CPU- uri (ex: Intel a utilizat propriul lor procesor Atom).

Pentru a nu suprasolicita procesorul, designerii de celulare au realizat o componentă separată care să gestioneze complexitatea comunicării mobile. Modem-ul baseband şi radioul sunt sisteme hardware şi software care furnizează dispozitivelor Android o conexiune la telefonia mobilă, lucru ce permite atât transfer de voce, cât şi de date.

După cum se poate vedea in Figura 1.1, la telefoanele inteligente întâlnim două tipuri de memorie:

memorie cu acces aleator (RAM) şi memorie nevolatilă flash NAND. Conform [6], memoria RAM este folosită de sistem pentru încărcarea, executarea şi manipularea diferitelor părţi ale sistemului

(12)

12 de operare, iar cea flash pentru stocarea sistemului de operare precum şi a datelor dorite de utilizator. Datorită limitării impuse de spaţiul restrâns, cele două tipuri de memorie sunt combinate într-o singură componentă, cunoscută sub numele de pachet multicip (MCP).

Figura 1.1 - Arhitectura MCP [6]

Una dintre cele mai interesante componente hardware este sistemul de poziţionare globală (GPS) care este oferit gratis în pachetul de bază. Acesta nu identifică doar locaţia telefonului, folosindu-se de sateliţii GPS, dar oferă şi aplicaţiilor posibilitatea de a accesa şi de a se folosi de aceste informaţii.

Pe lângă reţeaua de telefonie mobilă existentă, Android permite conectarea la internet prin activarea opţiunii Wireless, cât şi conectarea la alte telefoane sau dispozitive externe, prin activarea opţiunii Bluetooth.

(13)

13 Majoritatea telefoanelor prezintă un card de memorie detaşabil care este cunoscut prin numele de card SD (Secure Digital). La fel ca memoria flash, cardurile SD sunt tipuri de memorie nevolatilă ce utilizează tehnologia flash NAND. Fiind concepute ca elemente portabile, acestea aderă la anumite specificaţii fizice, făcând posibil interoperabilitatea cu celelalte dispozitive. Acest aspect constituie una dintre notele distinctive vis-a-vis de telefoanele Apple, care nu prezintă card SD, ci doar memorie flash cu o capacitate de la 4 GB la 32 GB, după cum este relatat în [6]. Această alegere făcută de producătorii Android nu este doar o soluţie mai ieftină ci şi practică, acest card putând fi utilizat şi de către alte telefoane.

Ecranul este interfaţa sistemului de operare pentru interacţiunea cu utilizatorul, fiind important nu doar pentru impactul pe care îl produce din punct de vedere vizual, cât şi pentru răspunsul pe care îl oferă la atingere. Acesta este într-o continuă dezvoltare urmărindu-se creşterea rezoluţiei, a luminozităţii, precum şi capacităţii de răspuns la stimulii externi.

Camera telefonului şi-a depăşit atribuţiile cunoscute de a face poze sau de a filma, utilizând celelalte componente hardware pentru a-şi lărgi aria de utilitate. Majoritatea dispozitivelor combină funcţionalitatea acesteia pentru a înregistra pe lângă data şi timpul la care s-a realizat o poză sau un video şi coordonatele GPS la momentul utilizării acesteia. Datele multimedia pot fi cu uşurinţă încărcate pe web şi partajate cu alte persoane. Interesantă este utilizarea acestei comoponente în domeniul realităţii augmentate, camera putând fi folosită pentru a identifica un produs pe baza codului de bare sau a unei clădiri pe baza coordonatelor geografice sau a unor etichete.

Tastatura a fost şi ea înlocuită cu una ce încorporează tehnologia touch screen. Aceasta se poate adapta după poziţia telefonului şi poate suporta mai multe limbi, existând şi posibilitatea utilizării unor sisteme ce au rolul de a prezice cuvintele ce urmează a fi scrise.

Durata de viaţă a bateriei constituie încă o problemă datorită aplicaţiilor existente ce sunt mari consumatoare de energie. Se doreşte depăşirea acestui neajuns, existând cercetări în acest sens, după cum apare în [6], ce urmăresc realizarea unor baterii din ce în ce mai puternice sau încărcarea bateriei fără utilizarea vreunui cablu, un exemplu fiind încărcarea în timpul mişcării.

Majoritatea dispozitivelor Android oferă suport pentru USB (Universal Serial Bus) cu ajutorul căruia telefoanele pot fi conectate la un calculator. Prin cablu se poate realiza atât încărcarea bateriei, cât şi accesarea memoriei SD sau a consolei Linux de pe dispozitiv.

(14)

14 Android poate detecta şi schimba poziţia ecranului, în funcţie de felul în care telefonul este ţinut sau rotit, acest lucru fiind posibil datorită existenţei unui accelerometru care detectează aceste schimbări. Noile versiuni suportă şi un giroscop, care este mult mai senzitiv decât un accelerometru, aspect ce a dus la dezvoltarea jocurilor pe această platformă.

Ultimele componente hardware sunt constituite de difuzorul şi microfonul telefonului, care la fel ca şi celelalte părţi sunt perfecţionate de la o versiune la alta. Unele dispozitive prezintă două sau trei microfoane, care combinate cu software-ul Android au abilitatea de a detecta şi elimina zgomotul de fundal pentru a oferi o calitate mai bună a sunetului.

Sistemul de operare

Sistemul de operare este bazat pe nucleul Linux 2.6 care oferă software-ul necesar pentru a coordona atât partea hardware, cât şi aplicaţiile Android. Aşa cum este ilustrat în Figura 1.2, funcţiile low-level includ administrarea energiei, a conexiunii wireless, a ecranului, a driverelor audio şi a memoriei flash.

Peste kernel este construit un set de librarii ce oferă funcţionalităţile principale de care au nevoie atât dezvoltatorii, cât şi utilizatorii. Acestea includ librării precum cele ce gestionează lucrul cu bazele de date (SQLite), cel ce furnizează utilizarea de socket-uri securizate bazate pe protocolul SSL, dar şi librăria standard C.

Conform [7], librăriile principale sunt unite cu o maşină virtuală customizată Java, ce furnizează mediul de rulare pentru aplicaţiile Android. Dezvoltatorii scriu şi compilează programele cu kit-ul de dezvoltare Java oferit de companie Sun (Sun’s Java Development Kit) şi byte code-ul rezultat este transformat în fişiere de tip .dex ce sunt rulate apoi pe maşina virtuală Dalvik. Fiecare program rulează în procesul său propria lui instanţă a maşinii virtuale Dalvik, care este concepută astfel încât mai multe multe instanţe ale acesteia să poată rula pe acelaşi dispozitiv într-un mod eficient.

Utilizarea acestor resurse este realizată prin intermediul unor API-uri şi a unui application framework, cu care programatorii interacţionează şi care oferă acces acestora la metodele necesare în crearea aplicaţiilor dorite.

(15)

15 Componentele unei aplicaţii Android

În această secţiune sunt prezentate componentele slab cuplate ce formează o aplicaţie Android, modul cum acestea interacţionează şi felul cum acestea sunt legate prin intermediul fişierului manifest al programului din care fac parte.

Clasele de bază

Următoarele şase elemente furnizează scheletul pe baza căruia este construită o aplicaţie:

Activities (Activităţi) Fiecare ecran din program este o extensie a clasei Activity.

Activităţile utilizează elemente de vizualizare (Views) pentru a forma o interfaţă grafică care afişează informaţii şi răspunde la acţiunile utilizatorului.

Figura 1.2 – Structura sistemului de operare Android [7]

(16)

16

Services (Servicii) Componentele serviciilor rulează în fundal şi trimit date activităţilor ce permit actualizarea informaţiilor expuse şi declanşarea de notificări atunci când un eveniment aşteptat are loc. Acestea pot rula chiar şi atunci când activităţile nu sunt active sau vizibile.

Content Providers (Furnizori de conţinut) Furnizorii de conţinut sunt utilizaţi pentru a administra şi partaja bazele de date ale aplicaţiei. Asta înseamnă că fiecare aplicaţie poate expune date ce pot fi utilizate ulterior de alte aplicaţii.

Intents Cu ajutorul acestor resurse este posibilă difuzarea de mesaje la nivel de sistem, către o activitate sau un serviciu ţintă, manifestându-se astfel intenţia de a avea o acţiune efectuată.

Broadcast Receivers (Consumatori de intenţii difuzate) Dacă se crează sau se înregistrează un Broadcast Receiver, aplicaţia va începe să aştepte intenţiile difuzate ce prezintă criteriul specificat şi va răspunde la acţiunile acestora.

Widgets Componente vizuale ce pot fi adăugate pe ecranul telefonului mobil

Notifications (Notificări) Notificările sunt utilizate în scopul atenţionării utilizatorilor asupra unui eveniment aşteptat, fără ca activităţile curente să-şi piardă focalizarea sau să fie întrerupte.

Fişierul Manifest

Fiecare proiect Android include un fişier manifest, AndroidManifest.xml, ce permite definirea structurii şi meta datei aplicaţiei, componentele şi cerinţele acesteia. Acesta include noduri pentru fiecare dintre componentele prezentate mai sus (activităţi, servicii ş.a.), filtre pentru intenţii (intent filters) şi permisiuni ce determină modul cum acestea interacţionează. Fişierul manifest permite totodată specificarea de meta dată cu privire la aplicaţia curentă (iconiţe şi teme folosite), precum şi noduri de nivel înalt ce includ setări de securitate, teste şi cerinţe hardware ale aplicaţiei.

(17)

17 Manifestul este format dintr-o rădăcină reprezentată de eticheta <manifest> ce specifică prin atributul xmlns:android elementele de securitate ce sunt utilizate în cadrul fişierului, prin atributele android:versionCode şi android:versionName versiunea aplicaţiei, iar prin android:package pachetul principal al aplicaţiei.

Următoarea listă oferă o perspectivă asupra nodurilor ce pot fi specificate în fişierul manifest şi rolul acestora în construcţia aplicaţiei.

uses-sdk marchează versiunea SDK ce trebuie să fie disponibilă pe un dispozitiv Android pentru ca aplicaţia să funcţioneze precum şi versiunea pe care s-a realizat şi testat aplicaţia

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.facebook.meetyou"

android:versionCode="1"

android:versionName="1.0" >

 uses-configuration specifică o combinaţie dintre mecanismele de intrare suportate de aplicaţie, acestea făcând referire la tastatura disponibilă, la modul de navigare într-o fereastră, şi la modul de atingere.

<uses-configuration android:reqTouchScreen=["finger"]

android:reqNavigation=["trackball"]

android:reqHardKeyboard=["true"]

android:reqKeyboardType=["qwerty"/>

uses-feature ilustrează cerinţele hardware ale aplicaţiei şi împiedică instalarea acesteia pe un dispozitiv ce nu respectă aceste condiţii

<uses-feature

android:name="android.hardware.camera.autofocus"

android:required="false" />

supports-screens enumeră dimensiunile ecranelor pe care aplicaţia le suportă

<supports-screens android:smallScreens=["false"]

android:normalScreens=["true"]

android:largeScreens=["true"]

android:anyDensity=["false"] />

(18)

18

application este un nod singular ce specifică meta data aplicaţiei precum şi componentele acesteia, constituind un container pentru noduri precum activity, service, receiver sau provider

activity este un nod necesar pentru fiecare activitate ce rulează în interiorul aplicaţiei, fiecare nod de acest tip având posibilitatea specificării prin intermediul nodului fiu

<intent-filter> a elementelor intent ce pot lansa această activitate.

<activity android:name="com.facebook.android" />

<intent-filter >

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

service desemnează un serviciu din aplicaţie <service

android:label="@string/send_coordinates"

android:name="service.SendCoordinates" />

provider specifică fiecare din furnizorii de date ale aplicaţiei

<provider android:permission="com.paad.MY_PERMISSION"

android:name=".MyContentProvider"

android:enabled="true"

android:authorities="com.paad.myapp.MyContentProvider">

</provider>

reveiver are rolul de a înregistra un Broadcast Receiver, fără a fi nevoie de a lansa aplicaţia mai întâi

<receiver android:name="sms.SmsReceiver">

<intent-filter>

<action android:name=

"android.provider.Telephony.SMS_RECEIVED" />

</intent-filter>

</receiver>

uses-permission stabileşte permisiunile hardware de care are nevoie aplicaţia pentru a putea fi utilizată aşa cum este aşteptat şi vor fi afişate utilizatorului înainte de a fi instalată

<uses-permission android:name="android.permission.INTERNET" />

(19)

19

permission este utilizată pentru restricţionarea accesului unei alte aplicaţii la o component a sa.

Pentru a avea acces la aceste elemente protejate, celelalte aplicaţii vor trebui să includă în manifestul lor noduri de tip uses-permission

<permission android:name="com.paad.DETONATE_DEVICE"

android:protectionLevel="dangerous"

android:label="Self Destruct"

android:description="@string/detonate_description">

</permission>

instrumentation oferă un cadru de testare pentru componentele aplicaţiei la momentul execuţiei. Acestea oferă mijloace de monitorizare a aplicaţiei şi a interacţiunii cu resursele sistemului.

<instrumentation android:label="My Test"

android:name=".MyTestClass"

android:targetPackage="com.paad.aPackage">

</instrumentation>

Utilizarea de resurse externe

Mediul de programare Android oferă posibilitatea separării codului de celelalte resurse statice reprezentate prin imagini, şiruri de caractere, culori, animaţii sau teme, lucru ce permite o menţinere, actualizare şi administrare a aplicaţiei mult mai eficientă.

Crearea de resurse

Resursele aplicaţiei sunt stocate în directorul res/ din ierarhia proiectului. Acest dosar este format din mai multe subdirectoare ce desemnează tipurile de resurse existente: values (valori), drawable, drawable-hdpi, drawable-ldpi, drawable-mdpi, (resurse imagini pentru afişări DPI înalte, medii sau joase), layout (aspect) şi menu (meniu). Când are loc build-ul aplicaţiei, aceste resurse vor fi compilate şi incluse în pachetul aplicaţiei, generându-se în acelaşi timp şi un fişier R.class ce conţine referinţe la fiecare resursă inclusă în proiect.

Crearea de resurse valori

Valorile suportate includ şiruri de caractere, culori, dimensiuni, vectori de numere întregi sau vectori de şiruri de caractere şi sunt păstrate independent în directoare separate.

(20)

20 Resurse String

Resursele de tip şir de caractere au ca etichetă elementul <string> şi suportă stilizarea utilizând elemente specifice limbajului HTML6. Totodată este posibilă utilizarea de elemente string parametrizate şi manipularea lor în cadrul codului utilizând metoda String.format.

<string name="remove_group" formatted="false">Are you sure you want to remove %1$s as your group?</string>

String message = String.format(getString(R.string.remove_group), group.getName());

Resurse Color

Pentru definirea unei resurse de tip culoare, este necesară utilizarea tag-ului <color>, specificarea numelui, precum şi a codului potrivit utilizând una dintre notaţiile:

 #RGB

 #RRGGBB

 #ARGB

 #AARRGGBB

unde A desemnează gradul de transparenţă, iar R, G, B valorile culorilor roşu, verde şi albastru.

<color name="opaque_blue">#00F</color>

Dimensiuni

Dimensiunile sunt utilizate atunci când se doreşte crearea unor constante în ceea ce priveşte frontierelor unui layout sau dimensiunea unui font de scriere. Pentru specificarea unei resurse de dimensiune se utilizează eticheta <dimen>, urmat de valoarea şi scala de măsurare a acesteia:

 px (pixelii unui ecran)

 in (inci)

 pt (puncte fizice)

 mm (milimetri)

 dp (pixeli independenţi de densitate)

 sp (pixeli independenţi de scală)

6 HyperText Markup Language

(21)

21

<dimen name="standard_border">5dp</dimen>

Stiluri şi teme

Resursele pentru stiluri oferă posibilitatea realizării unei aplicaţii cu un aspect consistent realizat prin intermediul definirii de culori şi fonturi după cum urmează:

<style name="BaseText">

<item name="android:textSize">14sp</item>

<item name="android:textColor">#111</item>

</style>

Elemente desenate (Drawables)

Resursele Drawable includ bitmaps, fişiere NinePatch, precum şi componente complexe de tip Drawable ce ilustrează modul cum trebuie să se comporte un element vizual atunci când anumite acţiuni precum focalizarea sau atingerea au loc.

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"

android:drawable="@drawable/accept_pressed" /> <!-- apăsat -->

<item android:state_focused="true"

android:drawable="@drawable/accept_pressed" /> <!-- focalizat -->

<item android:drawable="@drawable/accept" /> <!—stare normală -->

</selector>

Layout

Resursele Layout permit decuplarea reprezentării vizuale a aplicaţiei de modul cum utilizatorul acţionează cu aceasta. Cel mai des mod de utilizare este definirea interfeţei grafice a unei activităţi.

Odată definit, aspectul unei activităţi poate fi setat în metoda onCreate prin apelarea funcţiei setContentView.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

(22)

22 android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Hello World!/>

</LinearLayout>

Animaţii

Android suportă două tipuri de animaţie. Animaţiile Tweened pot fi folosite pentru a roti, muta, întinde sau a face un element de vizualizare să dispară, iar animaţiile Frame-By-Frame permit crearea unei animaţii ce afişează o serie de elemente de tip Drawable.

<animation-list

xmlns:android="http://schemas.android.com/apk/res/android"

android:oneshot="false">

<item android:drawable="@drawable/rocket1" android:duration="500" />

<item android:drawable="@drawable/rocket2" android:duration="500" />

<item android:drawable="@drawable/rocket3" android:duration="500" />

</animation-list>

Meniuri

Meniurile reprezintă o altă formă de decuplare a interfeţei grafice de modul de interacţionare cu utilizatorul, fiind posibilă atât definirea de meniuri de activitate, cât şi de context, fiecare meniu fiind memorat într-un fişier separat.

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/menu_refresh"

android:title="Refresh" />

<item android:id="@+id/menu_settings"

android:title="Settings" />

(23)

23

</menu>

Crearea de resurse pentru diferite limbi

Una dintre motivele imperioase de externalizare a resurselor este mecanismul dinamic de selectare a resurselor. Utilizându-se o ierarhie de directoare, se pot crea diferite valori corespunzătoare limbii şi locaţiei dispozitivului hardware utilizat. Android va face la momentul rulării o alegere dinamică a resurselor ce urmează a fi folosite, pe baza următorilor calificatori.

Codul ţării şi a reţelei mobile (MCC/MNC7) O listă cu codurile disponibile poate fi accesata la adresa http://en.wikipedia.org/wiki/Mobile_Network_Code (e.g. mcc234-mnc20)

Limba şi Regiunea Limba este specificată prin 2 litere mici ISO 639-1 ce desemnează codul limbii, urmat opţional de regiune definită prin litera r, urmat de doua majuscule ISO 3166-1-alpha-2 (en-rUS)

Rezumat

Acest capitol oferă o privire de ansamblu asupra platformei Android atât din punct de vedere hardware, cât şi software. Deşi unele componente variază de la un producător la altul, structura este comună pentru fiecare dintre aceste dispozitive.

Telefonul poate fi privit asemenea unui mini computer, prezentând un procesor de tip ARM şi doua tipuri de memorie, combinate într-o singură componentă, numită pachet multicip (MCP).

Conexiunea la reţeaua mobilă este realizată de către modem-ul baseband şi radioul existent, conectarea la internet prin activarea opţiunii Wireless, iar la alte telefoane sau dispozitive externe prin activarea opţiunii Bluetooth sau USB. Pe lângă acestea întâlnim o cameră performantă, un ecran touch screen şi un sistem de localizare GPS.

Sistemul de operare este bazat pe nucleul Linux 2.6 şi oferă software-ul necesar pentru a coordona atât partea hardware, cât şi aplicaţiile Android. Librăriile sunt accesate de programatori prin intermediul API-ului existent, iar rularea programelor se realizează pe maşinile virtuale Dalvik.

7 Mobile Country Code/Mobile Network Code

(24)

24 Din punct de vedere structural, o aplicaţie Android este compusă din două elemente principale:

clasele ce descriu funţionalitatea programului şi resursele constituite din aspecte, imagini, şiruri de caractere sau culori ce descriu interfaţa programului. Definirea structurii şi metadatei aplicaţiei, componentele şi cerinţele acesteia sunt precizate în fişierul manifest al aplicaţiei, fişier fără de care o aplicaţie nu poate rula.

(25)

25

Capitolul 2

State of the Art

Aplicaţii de supravegheat persoane

În era digitală acaparată de Facebook, MySpace, Twitter şi mai nou Google+, publicul larg, dar în special tinerii doresc să împărtăşească cât mai multe informaţii din viaţa de zi cu zi cu prietenii sau familia lor. Observând această tendinţă, companiile specializate în crearea de aplicaţii pentru telefoane mobile s-au gândit să conceapă programe prin care datele partajate de utilizatori pot fi folosite într-un mod eficient.

Acest capitol oferă o imagine de ansamblu asupra aplicaţiilor existente în această ramură şi la a căror dezvoltare s-au folosit uneltele puse la dispoziţie de Android.

Google Maps

Google Maps este cunoscut pentru funcţionalităţile pe care le are: vizionarea de hărţi 2D, 3D sau street view, consultarea traficului în timp real în anumite zone, oferirea de indicii în privinţa alegerii unui drum pentru a ajunge la o anumită destinaţie sau chiar utilizarea unui sistem de navigaţie GPS cu îndrumare vocală, dar ceea ce este interesant în cazul de faţă este opţiunea Latitude prin care utilizatorul îţi poate înregistra locaţia şi o poate partaja cu prietenii săi.

Vizualizarea prietenilor se realizează pe hărţile 2D, aşa cum poate fi observat şi în Figura 2.1.

Utilizatorii au opţiunea de a controla nivelul la care prietenii au acces la informaţiile ce ţin de locaţie, precum şi posibilitatea de a ascunde aceste informaţii atunci când este necesar. În cazul în care un prieten nu posedă un smartphone, dar are cont Gmail şi acces la internet, acesta poate poate vizualiza datele persoanelor ce îl interesează.

(26)

26 Gypsii

Această aplicaţie permite crearea de noi puncte pe harta disponibilă şi etichetarea acestora cu poze, filme şi mesaje. Totodată este posibil conectarea la contul de Facebook sau de Twitter şi partajarea informaţiilor referitoare la locaţia curentă. Aşa cum poate fi remarcat în Figura 2.2, utilizatorii pot împărtăşi impresii sau opinii referitoare la locurile pe care le frecventează, prietenii având posibilitatea de a explora comentariile şi recomandările acestora.

Figura 2.1 - Google Maps Latitude

Figura 2.2 - Gypsii [10]

(27)

27 Pagina de noutăţi prezintă noile informaţii postate de ceilalţi prieteni, cea de persoane oferă date privitoare la localizarea tuturor utilizatorilor, iar cea pentru prieteni filtrează userii, rămânând doar informaţiile corespunzătoare celor din listă de contacte. Faptul că o persoană are acces la locaţia altor prieteni, face posibil ca la un moment dat două contacte să stabilească o întâlnire, atunci când observă că sunt în acelaşi perimitru.

LOCiMobile

LOCiMobile oferă două aplicaţii pentru platforma Android din care clienţii pot alege în funcţie de ceea ce îşi doresc. Conform paginii oficiale a acestei companii8, GPS Tracking prezintă posibilitatea localizării altor persoane, acces la reţelele de socializare Facebook şi Twitter, scrierea de mesaje către unul sau mai mulţi prieteni şi încărcarea de poze. Spre deosebire de aceasta, Tracking oferă beneficiile de a localiza şi a oferi informaţii în timp real despre un contact sau un grup de contacte, utilizând atât aplicaţia instalată pe mobil cât şi pagina web a acesteia.

8 Pagina oficială LociMobile: <<http://www.locimobile.com/apps/>>, accesată ultima oară la 19 decembrie 2011

Figura 2.3 Aplicaţiile LOCiMobile [22][23]

(28)

28 Life360

Life360 a fost conceput ca un mod de a ţine familia în legătură, transformând telefoanele mobile în dispozitive de localizare. Folosind tehnologia GPS, cea Wireless precum şi reţeaua telefonică, utilizatorii îşi pot împărtăşi locaţia sau pot verifica locaţia celorlalţi membrii ai familiei.

Utilizatorul are posibilitatea de a-şi anunţa familia atunci când este într-un loc sigur şi de a realiza un apel de panică, atunci când se află în pericol. Există un canal de comunicare cu ceilalţi membri ai familiei unde un utilizator îşi poate înregistra noua locaţie sau unde poate posta un mesaj pentru toţi cei care au acces la acest canal, aspect redat în Figura 2.4.

Programul ţine şi o evidenţă a perioadei care a trecut de când s-a făcut ultima înregistrare a locaţiei, precum şi a tuturor punctelor de pe hartă prin care a trecut acea persoană.

Fiind concepută ca o aplicaţie care să ofere siguranţă persoanelor care o folosesc, aceasta furnizează şi informaţii în legătură cu spitalele şi secţiile de poliţie aflate în apropierea zonei în care un utilizator s-a înregistrat.

Figura 2.4 - Life360

(29)

29 Match2Blue

Spre deosebire de celelalte aplicaţii ce au rolul de a pune în legătura utilizatorii cu familia sau prietenii lor, Match2Blue îşi ajută clienţii să cunoască oameni noi cu care pot interrelaţiona. Cum se poate vedea în Figura 2.5, pagina principală enumeră persoanele conectate, ordonate în funcţie de distanţa la care se află faţă de utilizatorul curent. Prin încărcarea de poze şi utilizarea unor mesaje interesante, aceştia încep să socializeze, formându-se astfel noi legături de prietenie.

Glympse

Acest program este eficient atunci când o persoană doreşte să partajeze cu alţi oameni drumul pe care îl parcurge într-o perioadă prestabilită de timp. Plusul pe care îl oferă este constituit de faptul că nici unul dintre utilizatori nu este nevoit să îşi facă cont şi doar cel care vrea să împărtăşească aceste informaţii, trebuie să aibă instalată aplicaţia pe telefonul mobil, cealaltă persoană putând viziona drumul parcurs pe orice browser web (Figura 2.6), accesând link-ul primit pe adresa de e- mail.

Figura 2.5 – Match2blue [24]

(30)

30 Figura 2.6 - Glympse

Platforme de dezvoltare pentru Realitatea Augmentată

Nu cu mult timp în urmă, realitatea augmentată reprezenta un experiment tehnologic foarte rar folosit în afara laboratoarelor de specialitate, întrucât erau necesare cunoştinţe şi tehnică de nivel înalt. Acum, datorită avansărilor făcute în hardware-ul telefoanelor mobile, tehnologia AR este mult mai accesibilă atât pentru utilizatori cât şi pentru dezvoltatori.

Această secţiune se va focaliza pe analizarea framework-urilor care permit un anumit nivel de customizare, permiţând publicarea propriilor informaţii, şi mai puţin asupra aplicaţiilor de sine stătătoare.

Look!

Look! Este o platformă pentru realitatea augmentată, specifică sistemului de operare Android şi creată sub licenţa GPLv3, ce integrează facilităţi precum: desenarea de grafice 2D sau 3D, interacţiunea cu obiecte virtuale, localizarea de entităţi în exteriorul sau interiorul clădirilor, integrarea cu servicii remote şi persistenţa datelor.

(31)

31 După cum este ilustrat pe pagina de documentaţie a acestui framework9, sistemul de localizare specific spaţiilor închise cuprinde următoarele module:

 Sistemul de Localizare primar ce utilizează semnalele wireless şi returnează o locaţie.

 Sistemul de Localizare Secundar bazat pe senzorii telefonului mobil ce detectează mişcarea dispozitivului în spaţiu.

 Integrarea sistemului primar cu cel secundar.

Spre deosebire de celelalte platforme, aceasta nu oferă nicio aplicaţie de sine stătătoare.

Unifeye SDK Mobile

Această librărie este oferită spre vânzare de către firma germană Metaio şi oferă dezvoltatorilor, după cum se poate vedea in Figura 2.7, facilităţi precum urmărirea, captarea sau redarea de obiecte.

În acest scop, aceştia pot folosi atât o aplicaţie standard bazată pe configurarea de fişiere XML, cât şi API-ului de nivel înalt (scris în limbajul de programare C), prin apelul de funcţii ale puse la dispoziţie de acesta.

Cea mai importantă aplicaţie construită pe această platformă este constituită de Junaio care iniţial a fost concepută ca un browser pentru reţelele sociale ce au la bază realitatea augmentată şi în care unii utilizatorii pot încărca obiecte 3D în lumea virtuală, iar alţii le pot adăuga la scene 3D.

9 Localizarea în interiorul clădirilor cu Look!: <<http://www.lookar.net/2011/07/localizacion-en-interiores/>>, accesată ultima oară la 28 decembrie 2011

Figura 2.7 - Structură Bibliotecă Unifeye [14]

(32)

32 În versiunea 2.0, Junaio a renunţat la crearea de scene 3D şi a devenit propriul lui augmented reality browser, oferind oamenilor posibilitatea accesării barurilor, restaurantelor sau al altor locaţii, devenind şi primul browser AR care suportă aducerea imaginilor la viaţa prin recunoaşterea de imagini.

Junaio 3.0 duce caracteristicile deja existente la un alt nivel. Noua funcţie „SCAN” scanează obiecte precum: picturi, coduri QR şi chiar codurile de bară ale produselor. Focalizând cu ajutorul camerei lucrurile din jur, se pot obţine informaţii din canalele Junaio, din platformele partenerilor săi sau din alte baze de date. Astfel, atunci când Junaio recunoaşte un cod de bare, combină şi afişează datele obţinute conducând utilizatorul către un website, un magazin online sau către alte informaţii necesare, lucru vizibil în Figura 2.8. Acest lucru este posibil prin existenţa unui web browser intern care permite apăsarea iconiţei unui punct de interes (POI) şi accesarea unui website fară ca aplicaţia Junaio să fie părăsită.10

Figura 2.8 – Junaio [27]

10 "Scan the World" with the new junaio 3.0 Augmented Reality Browser, (în format electronic la:

<<http://www.metaio.com/press/press-release/2011/scan-the-world-with-the-new-junaio-30-release/>>, accesat ultima oară la 3 ianuarie 2012).

(33)

33 Mixare

Mixare este un alt browser publicat gratuit sub licenţa GPLv3, care este disponibil atât ca o aplicaţie de sine stătătoare, cât şi ca librărie pentru integrarea în implementări proprii, permiţându- se astfel afişarea locurilor de interes, într-un cadru specific realităţii augmentate, aspect ilustrat în Figura 2.9.

Wikitude

Wikitude este un software pentru realitate augmentă, realizat pentru telefonie mobilă, ce a fost dezvoltat de către firma austriacă Wikitude GmbH (Mobilizy GmbH) şi scos pe piaţă în octombrie 2008 ca un produs gratuit. Acesta constituie prima aplicaţie care foloseşte localizarea spaţială pentru a obţine o realitate augmentată.

Figura 2.9 - Afişarea punctelor geografice utilizând Mixare [17]

Figura 2.10 Wikitude [25]

(34)

34 Wikitude explorează diverse puncte de interes aparţinând canalelor Wikipedia, Youtube, Twitter, Flickr, Starbucks şi altor pagini web cu un conţinut captivant pentru utilizator. Wikitude oferă şi o platformă deschisă pentru dezvoltatorii software care se pot bucura în totalitate de funcţionalităţile oferite abia după înregistrare, când filigranul din versiunea demo dispare şi este posibilă publicarea propriei implementări.

Layar

Layer, un browser pentru realitatea augmentată, ce aparţine unei companii din Amstardam, este cea mai cunoscută şi mai răspândită aplicaţie pentru realitatea augmentată realizată pentru dispozitive smartphone după cum arată statisticile de pe Android Market11.

Browser-ul Layar Reality arată ceea ce este în apropierea utilizatorului prin afişarea informaţiilor digitale (layers) în timp real peste realitatea lumii văzută prin cameră. Acesta funcţionează prin utilizarea unei combinaţii dintre cameră, compas şi datele GPS pentru identificarea locaţiei utilizatorului şi a suprafeţei apropiate acestuia, preluarea datelor bazate pe acele coordonate geografice şi suprapunerea acestor informaţii peste suprafaţa camerei.

Figura 2.11 – Layar [19]

(35)

35 Pe lângă adăugarea punctelor de interes (POI), Layar permite şi adăugarea de obiecte 3D. Această caracteristică este foarte utilă pentru a arăta lumii ceea ce nu există încă sau ceea ce nu mai există.

Spre exemplu se poate reda o clădire romană, într-un loc unde nu există decât nişte ruine său planul unei clădiri ce este în plan pentru a fi construită. Aceste obiecte 3D pot fi legate de pagini web, astfel încât prin accesarea lor, utilizatorul poate citi mai multe informaţii care îl pot interesa.

Totodată oferă suport audio şi video, permite setarea unor alerte care să se declanşeze în apropierea unei locaţii prestabilite precum şi object tracking sau image recognition.

După cum este prezentat pe pagina oficială12, portofoliul Layar prezintă pe lângă browser alte trei produse şi anume: Layar Player, SDK ce face posbil integrarea de layers AR într-o aplicaţie proprie, dar care este disponibil doar pentru sistemul de operare iOS, Layar Connect, API pentru serverul Layar ce oferă posibilitatea construirii unui sistem de management pentru layers şi Layar Vision ce utilizează tehnicile computer vision pentru a augmenta obiectele în lumea fizică.

LibreGeoSocial

LibreGeoSocial este o comunitate ce lucrează la crearea unui framework open source pentru o reţea socială bazată pe aplicaţii AR. Un browser prototip este disponibil pentru descărcat, iar dezvoltatorii pot accesa atât partea de client cât şi partea de server, construit pe baza unui puternic API, ce oferă ca funcţionalităţi urmărirea prin localizare precum şi recunoaşterea de imagini.

Suportul pentru reţeaua socială şi etichetarea este de asemenea inclusă în plugin-ul browser-ului.13 Sistem funcţionează atât în interior, cât şi în exterior, printr-o localizare oferită de BIDI. Nodurile reţelei sociale sunt localizate şi poziţionate la diferite altitudini. Acestea pot fi accesate clasic dintr- o listă sau dintr-o interfaţă AR, unde nu se pot doar vedea, ci este posibil şi adăugarea altor etichete.

O altă funcţionalitate este dată de existenţa unei alarme care se declanşează atunci când utilizatorul este în apropierea unor locuri ce au fost specificate la crearea lor.

12 Pagina oficială Layar: <<http://www.layar.com/>>, accesată ultima oară la 29 decembrie 2011

13 Butchart, B., Augmented Reality for Smartphones, (în format electronic la:

<<http://observatory.jisc.ac.uk/docs/AR_Smartphones.pdf>>, accesat ultima oară la 19 septembrie 2011)

(36)

36 Figura 2.12 – LibreGeoSocial [26]

Rezumat

Nevoia oamenilor de fi în legătură cu prietenii sau familia lor este vizibilă în entuziasmul cu care aceştia folosesc aplicaţiile şi website-urile de socializare. Acest lucru a determinat ca odată cu dezvoltarea dispotitivelor mobile, să se dezvolte şi această ramură, programele de socializare fiind portate pe platforma telefoanelor inteligente şi combinate cu alte tehnologii inovatoare precum realitatea augmentată.

În acest sens s-au creat aplicaţii prin care părinţii îşi pot supraveghea într-un mod eficient copiii (Life360), prin care tinerii pot interrelaţiona cu prietenii lor, pot cunoaşte noi persoane şi pot schimba impresii în legătură cu locurile pe care le frecventează (Gypsii, LOCiMobile, Match2blue) sau prin care mai multe persoane pot partaja drumul pe care îl parcurg într-o anumită perioadă de timp (Glympse).

Prin perfecţionarea camerei foto şi introducerea sistemului GPS, aplicaţiile ce folosesc realitatea augmentată au devenit din ce în ce mai atrăgătoare în răndul programatorilor, care începând cu utilizarea punctelor geografice pentru a crea o lume augmentată (Mixare, Look!), s-au extins prin dezvoltarea tehnologiei de recunoaştere de obiectelor 3D (Layar) precum şi produselor, prin scanarea codului de bare al acestora (Junaio).

(37)

37

Capitolul III

Descrierea aplicaţiei MeetYou

Aplicația prezentată în această lucrare este alcătuită din trei module corespunzătoare celor trei nivele ale modelui arhitectural client – server Three-tier (3-tier architecture14), unde elementele de interfață, de procesare și datele sunt separate. Nivelul de prezentare este constituit de aplicaţia Android cu ajutorul căreia vor fi expuse informaţiile referitoare la utilizatori, nivelul de date este reprezentat de baza de date în care sunt stocate aceste informaţii, iar nivelul logic reprezintă legătura dintre cele doua nivele şi este realizată cu ajutorul serviciilor web şi a serviciilor Android.

Nivelul logic – Tehnologiile utilizate

Android Location Service

Informaţiile privind localizarea spaţială devin din ce în ce mai importante în lumea dezvoltării aplicaţiilor mobile. Capacitatea de a prelua şi de a furniza cu uşurinţă aceste date este utilizată cu succes pe platformele mobile din zilele noastre. Android oferă această funcţionalitate utilizând serviciile de localizare (location service). Acestea oferă acces la facilităţi ce pot fi folosite pentru a determina poziţia curentă. În Android, aceste facilităţi sunt cunoscute sub numele de location providers şi fiecare dintre acestea au propriul lor set de puncte forte şi puncte slabe. Următoarea secţiune descrie cum fiecare din aceste metode funcţionează, informaţiile fiind extrase din lucrarea ,,Professional Android Sensor Programming” scrisă de Greg Milette şi Adam Stroud, publicată la editura Wrox în iunie 2012 [31].

14 http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture

(38)

38 GPS Provider

Termenul GPS face referire la întreg sistemul format din sateliţii ce orbitează în jurul planetei, receptorii, precum şi staţiile de control care monitorizează procesul de stabilire a poziţiei curente.

Sistemul de poziţionare globală este format din 27 de sateliţi ce se rotesc in jurul Pamântului şi transmit informaţiile către receptori. Fiecare satelit urmează o cale prestabilită, asigurând astfel ca la orice moment cel puţin 4 sateliţi să fie disponibili în orice punct de pe glob. Figura 3.1 înfăţişează o constelaţie a sateliţiilor GPS.

Conform [31], fiecare satelit din constelaţie transmite continuu două tipuri de date: efemeride şi almanah. Datele almanah includ informaţii orbitale despre fiecare satelit, precum şi despre starea întregului sistem, şi sunt transmite receptorului GPS. Datele efemeride conţin date despre starea satelitului, data şi ora curentă. Prin cele două tipuri de informaţii este stabilită locaţia curentă, acuritatea acestui calcul fiind furnizată de datele efemeride.

Pentru a furniza locaţia sa, un receptor trebuie să fie în măsură să determine distanţa de la el către ceilalţi sateliţi. Acest lucru este posibil prin utilizarea datelor efemeride ce includ poziţia precum şi timpul la care a avut loc transmisia. Folosind aceste distanţe, receptorul GPS poate triangula locaţia sa curentă. Mai exact, punctul de la care toate sferele se intersectează este poziţia receptorului. Un minim de trei sateliţi este necesar pentru a determina o locaţie bidimensională (latitudine şi

longitudine), ceilalţi ajutând la calculul altor informaţii precum altitudinea.

Figura 3.1 Sateliţii GPS [30]

(39)

39 Deşi GPS este util în determinarea locaţiei curente, acesta prezintă anumite dezavantaje, în special pe platformele telefoanelor mobile, unul fiind constituit de timpul în care se poate calcula poziţia curentă. Înainte ca locaţia să poate fi calculată, trebuie să fie determinaţi sateliţii ce ar trebui să ofere informaţiile necesare, proces ce poate fi destul de lent. Un alt aspect este constituit de faptul că receptorul GPS are nevoie de o cale directă către sateliţii GPS. Acest lucru înseamnă că

receptorii GPS nu pot lucra în spaţiile închise, dar şi că ar putea exista probleme în cazul în care cerul nu ar fi vizibil. Acest aspect este afectat şi de faptul că un telefon mobil nu poate conţine unde radio de putere mare.

Network Provider

În Android, localizarea bazată pe reţea poate fi realizată în două moduri: utilizând turnurile celulare, precum şi prin utilizarea informaţiilor oferite de reţeaua wireless.

Utilizarea punctelor de acces wireless

Potrivit [31], detectarea locaţiei se realizează prin scanarea reţelelor wireless disponibile. Informaţia ce include adresele MAC15 ale punctelor de acces Wi-Fi, precum şi puterea semnalului primit de la aceste puncte este colectată mai întâi de către telefoanele mobile. Dispozitivul realizează apoi o interogare la serviciul de localizare Google (care este diferit de serviciul de localizare Android) de la care obţine poziţia curentă.

Două dintre beneficiile pe care le oferă localizarea prin Wi-Fi se referă la faptul că este posibilă depistarea poziţiei curente în spaţiile închise, precum şi la faptul că de cele mai multe ori timpul şi consumul de baterie este mai mic decât la GPS.

Aşa cum reiese din [31], această facilitate prezintă şi dezavantaje. În primul rând, pentru a determina locaţia curentă, trebuie să existe puncte de acces disponibile. În plus, reţelele trebuie să prezinte un identificator uni SSID, ipsa acestuia precum şi terminarea acestuia cu ,,_nomap”

nefăcând posibilă partajarea informaţiilor cu serviciul de localizare Google.

15 Media Access Control

(40)

40 Adiţional, schimbarea locaţiei punctelor de acces Wi-Fi poate cauza inexactităţi în datele privind poziţia curentă. Dacă un utilizator, care deţine o reţea wireless în propria casă, ar pleca cu dispozitivul în vacanţă, serviciul de localizare ar putea determina greşit poziţia curentă, bazându-se pe informaţiile existente în sistem, ce au fost recepţionate în trecut. Cu toate că serviciul de localizare permite schimbarea adresei punctelor de acces, acest lucru nu poate fi realizat şi manual de către utilizator.

Utilizarea turnurilor de telefonie mobilă

Pentru a funcţiona corect, un dispozitiv celular trebuie să fie în contact cu un turn de control. În timp ce telefonul este în mişcare, este posibil conectarea la alte turnuri atunci când puterea semnalului de la un turn de control de care se apropie devine mai puternică. Cunoaşterea identificatorului unic al turnurilor la care a fost sau este conectat, poate oferi o perspectivă asupra zonei unde dispozitivul se află, în cazul în care adresa acestor turnuri celulare este cunoscută.

La fel ca şi în cazul reţelelor wireless, Android lucrează cu serviciul de localizare Google pentru a asocia fiecărui turn celular o locaţie. Pentru acest caz, informaţiile includ atât date despre turnul la care este conectat momentan, precum şi informaţii despre ultima locaţie furnizată de GPS.

Atunci când un dispozitiv are nevoie să găsească locaţia curentă, trimite informaţii privind turnul celular la care este conectat, precum şi despre cele la care a fost conectat serviciul Google. Cu cât numarul de identificatori trimişi este mai mare, cu atât şi acuritatea informaţiilor va fi mai mare.

Determinarea locaţiei nu este posibilă în cazul trimiterii unui singur ID celular.

Determinarea poziţiei unui telefon Android

Pentru dezvoltatorii de aplicaţii pentru telefoanele mobile care doresc să folosească informaţii ce privesc localizarea, Android oferă un API robust ce se foloseşte de tehnologiile prezentate mai sus pentru a obţine datele dorite. Majoritatea claselor utilizate în acest scop se găsesc în pachetul android.location şi includ membri precum: LocationManager, LocationProvider, Location, Criteria, LocationListener.

(41)

41 LocationManager

Location Manager este un serviciu la nivel de sistem. Serviciile la nivel de sistem sunt obţinute direct de la context, utilizându-se numele acestora, nefiind posibilă instanţierea de obiecte. Acesta oferă informaţii privind starea curentă a sistemului de localizare, date ce includ furnizorii disponibili, furnizorii activi, precum şi informaţii privind statusul GPS. Prin LocationManager se poate specifica timpul la care se doreşte actualizarea locaţiei curente şi se poate obţine efectiv ultima actualizarea a acesteia.

private Location getLocationByProvider(Context context, String provider) { Location location = null;

LocationManager locationManager = (LocationManager) context .getSystemService(Context.LOCATION_SERVICE);

if (!isProviderSupported(locationManager, provider)) return null;

location = locationManager.getLastKnownLocation(provider);

return location;

}

Figura 3.2 Componentele Android pentru localizare [31]

(42)

42 Înainte de a putea utiliza Location Manager trebuiesc adăugate cateva permisiuni în fişirul manifest al proiectului pentru a sprijini accesul la componentele hardware necesare. În acest caz sunt necesare permisiunile pentru localizarea fină şi grosieră.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Location Provider

Clasa LocationProvider este o abstractizare pentru sursele de la care pot proveni datele privind localizarea, surse ce au fost prezentate anterior. Deşi fiecare dintre acestea generează infornaţii în mod diferit, modul de comunicarea cu aplicaţia este acelaşi.

Location

Location este clasa care încapsulează datele propriu-zise privind locaţia curentă a telefonului mobil şi pune la dispoziţie caracteristici precum latitudinea, longitudinea şi altitudinea la care se află dipozitivul Android.

Criteria

O aplicaţie poate utiliza Criteria pentru a interoga LocationManager în scopul obţinerii furnizorilor ce pot oferi anumite date de interes. Această clasă este utilă atunci când programatorul este concentrat mai mult asupra unor caracteristici pe care calculul obţinerii locaţiei trebuie să îi respecte şi nu asupra furnizorilor folosiţi.

LocationListener

Interfaţa LocationListener conţine o serie de metode callback care sunt declanşate atunci când au loc schimbări în ceea ce priveşte locaţia curentă a dispozitivului (onLocationChange) sau starea serviciului de localizare (onProviderEnabled, onProviderDisabled, onStatusChanged).

LocationManager permite ca o aplicaţie să înregistreze şi să anuleze înregistrarea unei clase ce implementează LocationListener şi care are ca rol procesarea informaţiilor privind noua locaţie.

(43)

43 Google Maps

Pentru a putea afişa punctele găsite de LocationManager se pot utiliza clasele din biblioteca externă Google Maps. Pentru aceasta, proiectul construit trebuie să fie de tip Google APIs, o versiune standard Android neavând posibilitatea referenţierii claselor necesare. Totodată fişierul manifest trebuie să specifice utilizarea acestei biblioteci şi să ofere acces la internet pentru obţinerea copiei necesare.

<uses-library android:name="com.google.android.maps" />

<uses-permission android:name="android.permission.INTERNET" />

Componentele Google Maps

MapView

Clasa MapView este unealta care afişează harta în aplicaţia Android. Fişierul .xml ce specifică aspectul activităţii în care harta va fi încărcată include un element de tip com.google.android.maps.MapView cu atributul android:apiKey. Cheia este necesară pentru a avea acces la API-ul Google Maps, iar pentru a o obţine este nevoie înregistrarea la serviciul Google Maps, urmând paşii prezentaţi la adresa https://developers.google.com/maps/documentation /android/mapkey.

OverlayItem

OverlayItem este un obiect ce marchează un element pe hartă. Acesta este un container format dintr-un marcator, un titlu, precum şi un obiect de tip GeoPoint ce memorează locaţia – latitudine, longitudine, acuritate.

ItemizedOverlay

ItemizedOverlay ţine lista de obiecte de tip Overlay şi descrie modul cum acestea vor fi afişate.

Întrucât ItemizedOverlay este o clasă abstractă, aplicaţia trebuie să conţină o clasă ce implemenetează metodele definite aici.

(44)

44 KML Format

Formatul KML16 este folosit pentru a expune date geografice într-un explorator pentru Pământ, aşa cum sunt: Google Earth, Google Maps şi Google Maps pentru mobil. KML prezintă o structură xml şi trebuie realizat întocmai cu modelul listat în KML Reference17.

Pentru a se obţine mulţimea de coordonate corespunzătoare drumului rutier dintre două puncte de pe glob, se poate realiza o cerere la adresa: http://maps.google.com/maps?f=d&hl=en&

saddr=slat,slng&daddr=dlat,dlng&ie=UTF8&0&om=0&output=kml, unde slat, slng reprezintă latitudinea şi longitudinea punctului sursă, iar dlat, dlng reprezintă latitudinea şi longitudinea punctului destinaţie. Fişierul .kml rezultat este mai apoi parsat, utilizându-se o instanţă a parserului SAXParser ce va lua ca parametru un handler, ce specifică modul cum informaţiile vor fi extrase.

Punctele obţinute sunt transformate în elemente GeoPoint şi pasate unui obiect ce moşteneşte proprietăţile clasei abstracte com.google.android.maps.Overlay, pentru a fi afişate pe suprafaţa unei hărţi.

JSONObject

Potrivit Wikipedia, JSON este un acronim în limba engleză pentru JavaScript Object Notation şi este un format de reprezentare şi interschimb de date între aplicaţii. Acesta este un format text, inteligibil pentru oameni, utilizat pentru reprezentarea obiectelor şi a altor structuri de date şi este folosit în special pentru a transmite date structurate prin reţea.

Obiectele JSON sunt construite în perechi de tip cheie:valoare. Elementele obiectului sunt separate prin virgule, fiecare obiect este delimitat cu ajutorul acoladelor, iar un şir de obiecte este memorat între paranteze pătrate.

Este un standard de scriere mai economic decât XML în ceea ce priveşte marimea datelor, dar mai puţin lizibil decât acesta, limitat la valori text şi valori numerice, nefiind posibilă memorarea informaţiilor în format binar.

16 Keyhole Markup Language

17 KML Reference (în format electronic la adresa <<https://developers.google.com/kml/documentation/ kmlreference

>>, accesat ultima oară la 30 mai 2012)

Referințe

DOCUMENTE SIMILARE

Nu, deoarece marile reşe-dinţe princiare, (şi o să vedem împărăţiile din po-veşti şi basme) fac din bucătărie nu numai locul de pregătire a hranei cât şi pe acela în

Accentul pe care, în mod constant şi aproape exclusiv, îl punem în activitatea noastră profesională, constând în depistarea afecţiunilor medicale şi a găsirii de

Municipalitatea ieşeană se bazează pe „ieşenism” 2 şi pe credinţa în posibilitatea Iaşului de a redeveni un oraş important, un centru economic şi politic, iar

Este mai potrivită în cazul proiectelor foarte mari, care se întind pe o durată mare de timp şi implică echipe mari, în care multă interacţiune cu clientul ar încetini

O primă soluţie ar fi să verificăm pe server existenţa numelui de cont, prin consultarea unei baze de date şi generarea unui document XHTML nou care va fi transmis clientului

 Adăpostul trebuie să protejeze animalele de condiţiile meteorologice nefavorabile în special atunci când animalele sunt aproape de fătare, iar celor care nu sunt

Deoarece fiecare căutare a listei de prieteni a unui utilizator într-o reţea socială este consumatoare de timp şi resurse (în principal datorită limitărilor impuse de

Este suficient, de exemplu, ca atunci când vorbeşte despre un fenomen anume, cum este cel pe care-l reprezintă astăzi lumea semnelor şi a comunicării, autorul în atenţie să

Diverse aspecte avute în vedere de Web-ul semantic pot fi aplicații pe scară largă. (e.g., în cadrul cloud computing, în contextul big data) căutare, regăsire, reutilizare

 Se foloseşte pentru a modela situaţiile între care un obiect este format din mai multe componente...  OMG Unified Modeling LanguageTM (OMG UML), Infrastructure, Version 2.2,

El nu poate fi înţeles dacă nu-i pus în legătură cauzală cu criza de structură şi de funcționare prin care treceau cele trei entităţi (n.n. Ilustratoare şi

Comisia pentru administrarea corespunzătoare a sancţiunilor internaţionale pe piaţa de capital – în situaţia în care societatea are date şi informaţii despre persoane

Înalta Curte de Casaţie şi Justiţie prin Completul pentru dezlegarea unor chestiuni de drept în materie penală, s-a pronunţat în sensul că: „În cazul în care infracţiunea

 În cazul în care calculatorul nu “va vede” Arduino-ul, se poate ca o masură de siguranţă să fi intrat în acţiune (de fapt este o “siguranţă” automatizată – ce

În cadrul acestui capitol se vor prezenta avantajele sistemului de fişiere al reţelei (NFS), precum şi modul în care sistemul tău poate fi setat în aşa fel încât să se

În acest mod, în momentul când utilizatorul intră în aplicație se verifică dacă acesta are un meci care se află în desfășurare, iar dacă se află atunci acesta este

Dată o dreaptă a în plan, spunem că două puncte A, B care nu-i aparţin sunt de o parte şi de alta a ei dacă dreapta a intersectează segmentul ( ) AB într-un punct interior

Şi cu toate acestea cât de frumoasă şi cât de măreaţă e lumea asta întreagă pe care o vedem în noi şi în jurul nostru pierzându- se în atotputernicia

De aceea, atunci când un client vine la mine pentru a-şi vindeca o boală, acesta este primul lucru pe care îl fac, şi de cele mai multe ori corpul său se vindecă în mod

Când mi-a picat fisa că n-avea să se întoarcă după mine, am smuls chitara şi-am intrat în magazinul de muzi- că, unde am fost condus de manager la un pitic pe nume Mister

Și când au fost întrebați dacă ar aproba nişte legi care să limiteze drep- turile cetățenilor şi ale presei de a critica guvernul în cazul în care adoptarea unei astfel

Modul în care ar trebui să ne gândim la costul de oportuni- tate al banilor este că, atunci când cheltuim bani pe ceva, sunt bani pe care nu îi putem cheltui pe altceva, nici în

Cazul mai general de funcţii definite prin integrale Riemann care depind de un parametru este atunci când şi limitele de integrare a, b sunt funcţii de acest parametru...