Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AeronauticaComunicatiiElectronica electricitateMerceologieTehnica mecanica


CARACTERISTICI ALE SISTEMULUI DE OPERARE "ANDROID" IN DEZVOLTAREA APLICATIILOR MOBILE

Comunicatii



+ Font mai mare | - Font mai mic



CARACTERISTICI ALE SISTEMULUI DE OPERARE "ANDROID" IN DEZVOLTAREA APLICATIILOR MOBILE

Abstract: The Android operating system was developed to allow users with minimum programming knowledge to develop genuine applications for their own mobile devices. It is based on the Linux kernel and it uses an optimized virtual machine to manage the resources, it's own libraries.



The simple Android applications can be classified into 3 types: foreground applications, background services and intermittent activity. The application developed and described in this paper uses the GoogleMaps API to make the mobile device act like a GPS and find locations all over the globe. The applications are developed using the Java programming language, so they can run on any mobile device.

Keywords: Android OS, open operating system, GoogleMaps, Java Programming Language.

I.       Introducere

Sistemul de operare Android a fost lansat in anul 2007, de catre compania Google sub egida Open Handset Alliance.

Open Handset Alliance este un grup de producatori de echipamente si aplicatii (Google, NTT DoCoMo, Sprint Nextel si HTC) al caror scop comun este acela de a crea un sistem de operare "deschis" pentru terminalele mobile.

Produsul software lansat de Google este un set complet de aplicatii pentru dispozitivele mobile si contine un sistem de operare, un strat intermediar intre sistemul de operare    si aplicatiile mobile critice. Sistemul de operare Android a fost construit de la zero pentru a le da posibilitatea dezvoltatorilor sa creeze aplicatii mobile care sa beneficieze in totalitate de ceea ce poate oferi un dispozitiv mobil. Ceea ce au intentionat cei de la Google, prin lansarea produsului Android a fost construirea unui sistem de operare care sa fie cu adevarat deschis, permitand unei aplicatii sa apeleze orice functie a echipamentului (efectuarea unui apel telefonic, transmiterea de mesaje text, utilizarea camerei video/foto) oferindu-le dezvoltatorilor posibilitatea sa creeze aplicatii coezive pentru utilizatori.

Proiectul Android a fost lansat in varianta beta, oferind astfel dezvoltatorilor ocazia sa creeze diverse aplicatii, care sa imbunatateasca acest sistem.

Este un sistem open source, ce poate fi extins sa incorporeze noile tehnologii de varf pe masura ce acestea apar.

Sistemul de operare Android nu face diferente intre aplicatiile nucleului telefonului si cele provenite de la terti, acestea putand fi construite in asa fel incat sa    aiba aceeasi prioritate de acces la resursele telefonului, oferind astfel utilizatorilor o paleta larga de aplicatii si servicii..

De curand, compania Google a lansat o noua versiune pentru Android, mai exact versiunea 1.6 care aduce o serie de imbunatatiri sistemului.

Noua versiune Android poarta numele de Android 1.6 (nume de cod "Gogoasa").

Google a lansat deja software development kit-ul (SDK) ultimei versiuni, SDK ce aduce diverse schimbari atat pentru utilizatori cat si pentru programatori.

Cea mai impresionanta schimbare se refera la imbunatatirea Android Market-ului, care permite vizualizarea unei schite pentru orice aplicatie dorita.

Noul sistem Android are un instrument ce permite cautarea de date de la diferite surse - de exemplu: o baza de date de contacte, marcajele unui browser web, etc.

Sistemul Android de asemenea aduce update-uri pentru camera web si aplicatiile video, a caror interfata - potrivit producatorului - functioneaza cu 39% mai rapid. In plus, Android 1.6 suporta conexiunea la retele VPN. Odata cu noul sistem, utilizatorii vor beneficia de imbunatatirile aduse monitorulului pentru baterie, care poate indica cuantumul de energie consumata de o anumita aplicatie.

Android 1.6 are la baza versiunea kernel-ului Linux 2.6.29.

II.    Platforma Android 1.6

Platforma Android 1.6 introduce noi caracteristici atat pentru utilizatori cat si pentru programatori. In continuare    va fi prezentata imaginea de ansamblu a noilor caracteristici si tehnologii, mai exact: noile trasaturi aferente utilizatorilor, actualizari aduse la Android Market, precum si noile tehnologii specifice platformei.

II.1 Noile trasaturi specifice pentru utilizatori

Caseta de cautare rapida pentru Android

Android 1.6 cuprinde    un cadru de cautare reproiectat, care ofera pentru utilizatori un mod rapid si eficient de cautare in mai multe surse, direct de pe ecranul principal.

Sistemul "invata" ce rezultate, obtinute in urma unei cautari, sunt mai relevante, in functie de ce anume s-a accesat. Asadar, contactele si aplicatiile accesate mai des, vor apare ca prime optiuni, atunci cand utilizatorul tasteaza primele litere ale unei noi cautari (interogari).

De asemenea, cadrul de cautare ofera dezvoltatorilor posibilitatea de a expune cu usurinta continutul relevant de pe aplicatiile lor, direct in caseta rapida de cautare.

Figura 1. Caseta de cautare










Camera foto, camera video si galeria de imagini

Noua interfata utilizator pune la dispozitie un aparat photo, o camera video si o galerie de imagini integrate. Utilizatorii pot comuta rapid intre aparatul photo si modul de captare video. In plus, galeria permite stergerea mai multor fotografii concomitent.

Android 1.6 ofera o camera video mult mai rapida, in comparatie cu versiunea precedenta. Astfel, operatia de lansare a camerei video este cu 39% mai rapida, existand si o imbunatatire cu 28% a timpului necesar intre realizarea de poze consecutive.

Figura 2. Noua interfa a a camerei video










Reteaua virtuala privata (VPN), 802.1x

Noul panou de control al VPN in Setari permite utilizatorilor sa configureze si sa se conecteze la urmatoarele VPN-uri:

  • L2TP/IPSEC pre-shared key based VPN
  • L2TP/IPsec certificate based VPN
  • L2TP only VPN

Indicatorul de utilizare al bateriei/acumulatorului

Un nou ecran de utilizare al bateriei permite utilizatorilor sa observe ce aplicatii sau servicii sunt consumatoare de energie din acumulator. Daca utilizatorul stabileste ca un anumit serviciu sau aplicatie foloseste prea multa energie, el poate lua masuri prin ajustarea setarilor, precum oprirea aplicatiei, sau chiar dezinstalarea acesteia.

Figura 3. Indicator de utilizare al bateriei










II.2 Actualizarile aduse Android Market-ului

Pentru dispozitivele cu Android Market, cea mai recenta versiune imbunatateste in totalitate experienta utilizatorilor si face mai usoara descoperirea de catre acestia de diverse aplicatii si jocuri de la dezvoltatori.

  • de la ecranul principal, utilizatorii pot opta pentru Aplicatii, Jocuri si Download-uri;
  • pentru fiecare categorie in parte, utilizatorii pot alege intre titlurile Cele mai cumparate si/sau Cele gratis .
  • pentru fiecare titlu, utilizatorii pot vizualiza atat capturi de ecran prezentate de catre dezvoltatori cat si comentariile celorlalti utilizatori .

Figura 4. Noua interfata Android Market

II.3 Noile tehnologii specifice platformei Android 1.6

Cadru extins de cautare

Cadrul de cautare Android a fost reproiectat si extins in scopul de a furniza aplicatiilor terte posibilitatea de a transmite continutul din aplicatia lor direct in Caseta de cautare rapida, instrumentul de cautare globala. Pentru a realiza acest lucru, dezvoltatorii vor trebui sa incorporeze in aplicatiile lor un formular de cautare si sa ofere totodata sugestii,    cu privire la interogarile utilizatorilor. Pentru a putea dispune de sugestii in momentul efectuarii unei cautari, utilizatorii trebuie doar sa selecteze fiecare aplicatie de la care le-ar place sa primeasca sugestii, sub Elemente de cautare din Setari Cautare.

Functia "Text-catre-motor de vorbire" (Text-to-speech engine)

Android 1.6 dispune de un motor de sinteza de vorbire multilingv numit Pico. Acesta permite oricarei aplicatii Android sa "vorbeasca" un sir de cuvinte cu un accent care se potriveste cu limba. Motorul suporta urmatoarele limbi de vorbire: engleza (accent britanic sau american), franceza, italiana, germana si spaniola. Daca utilizati un dispozitiv T-Mobile G1 sau Dream, va trebui sa descarcati installer-ul Sintetizatorului de vorbire de la Android Market, care include "vocile" necesare pentru motorul text-to-speech.

"Actiuni" (Gestures)

Noul cadru de actiuni ofera dezvoltatorilor de aplicatii mediul propice pentru a crea, depozita, incarca si recunoaste gesturile si a le asocia cu actiuni specifice. Dezvoltatorii pot utiliza noul instrument GestureBuilder inclus in Android 1.6 SDK, pentru a genera librarii de gesturi necesare aplicatiilor lor.

Accesibilitate

Android 1.6 furnizeaza un nou cadru de accesibilitate. Cu ajutorul acestui cadru, programatorii pot dezvolta plugin-uri de accesibilitate care sa raspunda la datele introduse de utilizator; cum ar fi: crearea unui sunet cand o noua fereastra este prezentata, vibrare atunci cand se navigheaza in partea de sus a unei listei, oferirea de feedback.   

Suport extins pentru densitatile si rezolutiile ecranului

Android 1.6 adauga suport ecran care permite aplicatiilor sa fie redate corespunzator in functie de diferite rezolutii sau densitati ale ecranului. Dezvoltatorii pot de asemenea specifica cu ce tipuri de ecrane sunt compatibile aplicatiile lor.

Noua versiune de OpenCore

Android 1.6 cuprinde motorul multimedia OpenCore2 actualizat cu urmatoarele modificari:

suport pentru codificatoare OpenMax;

suport pentru codec-uri audio suplimentare;

modelul de buffering imbunatatit sprijina bufferele partajate alocate in decodor.

III. Avantajele oferite de sistemul de operare "Android"

Dezvoltarea aplicatiilor pentru sistemul de operare Android se bazeaza in intregime pe limbajul de programare Java si prezinta urmatoarele avantaje:

portabilitate: aplica iile dezvoltate in Java sunt foarte u or de rulat pe orice alta platforma, diferita de cea pe care a fost creata aplica ia;

sistemul beneficiaza de un accelerator grafic 3D, insa aceasta facilitate variaza in func ie de echipamentul pe care este instalat;

ofera suport pentru baze de date cu ajutorul bibliotecii SQLITE;

este echipat cu propriul browser web integrat;

permite dezvoltatorilor de aplica ii accesul la orice componenta a terminalului mobil la care sistemul de operare are acces;

datorita arhitecturii sale, aplica iile dezvoltate de catre ter i se executa cu aceea i prioritate cu care se executa i aplica iile din nucleul sistemului de operare;

fiecare aplica ie se executa pe un fir de execu ie propriu folosind o ma ina virtuala care nu ocupa spa iu pe terminal i nici nu ocupa memoria interna a terminalului.

IV. Arhitectura sistemului

Sistemul este construit pe nucleul deschis al sistemului de operare Linux si utilizeaza o masina virtuala personalizata, intitulata "Dalvik Virtual Machine", care a fost construita pentru a optimiza memoria si resursele hardware intr-un mediu mobil. Desi este dezvoltat pe nucleul sistemului de operare Linux, sistemul nu este bazat pe o memorie de tip stiva, fiind destul de dificila reutilizarea bibliotecilor existente.

Arhitectura sistemului, prezentata in figura 5 include:

Serviciile Nucleului Linux incorporeaza driver-e de echipamente, managementul proceselor i al memoriei, securitate, re ea i managementul bateriei. Acestea sunt executate pe un nucleu Linux 2.6, cea mai recent versiune este 2.6.29, care realizeaza i o abstractizare a stratului dintre echipament i restul stivei;

bibliotecile care ruleaza peste nucleul Linux;

componenta de execu ie Android include bibliotecile Android i ma ina virtuala Dalvik. Componenta reprezinta motorul de execu ie, pe care ruleaza aplica iile i care, impreuna cu bibliotecile, alcatuiesc baza pentru platforma aplica iilor;

Bibliotecile Nucleului ofera marea majoritate a func ionalita ilor dintre bibliotecile Java i cele specifice Android;

Masina Virtuala Dalvik a fost optimizata pentru a permite dispozitivului    sa ruleze eficient mai multe instan e ale unei aplica ii sau mai multe aplica ii simultan. Se bazeaza pe nucleul Linux pentru execu ie pe fire de execu ie i pentru managementul memoriei. Aceasta este specifica sistemului de operare Android i a fost dezvoltata in a a fel incat sa asigure rularea in condi ii optime, a mai multor instan e ale aplica iilor pe un dispozitiv;

Figura 5. Arhitectura sistemului de operare Android

platforma de aplica ii furnizeaza clasele folosite la crearea aplica iilor i ofera o abstractizare generica pentru accesul la echipamente. Totodata, aceasta gestioneaza interfa a cu utilizatorul i resursele aplica iilor;

Stratul Aplica iilor: toate aplica iile (cele native, cele provenite de la ter i) sunt dezvoltate pe acest strat folosind acelea i biblioteci API. Stratul aplicatiilor ruleaza in cadrul componentei de execu ie a sistemului de operare folosind aceleasi clase i servicii disponibile in platforma de aplicatii.

V.    Componentele de baza ale unei aplicatii Android

Android are la baza concepte asemanatoare oricarei aplicatii de tip desktop ce se dezvolta in prezent, cu diferenta ca aceste concepte sunt "impachetate" oarecum diferit, cu scopul de a face telefoanele mobile mai rezistente la "prabusire"[2].

Activitatile. "Piatra de temelie" pentru dezvoltarea interfetei unei aplicatii de tip Android o constituie activitatea. Prin analogie, activitatea se aseamana cu fereastra unei aplicatii de tip desktop. Desi este posibil pentru activitati sa nu aiba o interfata, de cele mai multe ori codul sursa va fi "impachetat" sub forma unui serviciu sau furnizor de date.

Furnizori de continut. Furnizorii de continut ofera un nivel de abstractizare pentru orice tip de data depozitata pe dispozitivul mobil si este accesibila pentru aplicatii multiple. Modelul de dezvoltare Android incurajeaza utilizatorul sa faca propriile date disponibile si pentru alte aplicatii, mentinand in acelasi timp un control complet asupra modului in care datele dumneavoastra sunt accesate.

Intentii. Intentiile reprezinta mesaje ale sistemului, mesaje ce sunt transmise in interiorul dispozitivului Android, si al caror principal rol este acela de a "anunta" aplicatiile de eventimentele viitoare (de la schimbarea statusului hardware-ului - ex: card SD inserat -, date ce urmeaza sa fie primite - ex: sosirea unui mesaj SMS -, pana la evenimente specifice aplicatiilor). Nu numai ca se poate raspunde la aceste intentii, dar se pot crea si altele noi, pentru a lansa diferite aplicatii sau pentru a primi notificare atunci cand anumite situatii au loc.

Serviciile. Activitatile, furnizorii de continut si intetiile au termen de viata de scurta durata si ele pot fi oprite in orice moment. Serviciile, pe de alta parte, sunt programate sa ruleze continuu, iar la nevoie ele sunt dezvoltate independent de orice aplicatie.

Alte componente

Android vine cu o serie de caracteristici incorporate, cu scopul de a facilita dezvoltarea aplicatiilor.   

Retea. Dispozitivele Android sunt, in general, "pregatite" pentru conexiunea la Internet, prin diferite mijloace de comunicare. Este permis accesul la Internet, indiferent de aplicatia care urmeaza sa fie dezvoltata.

Multimedia. Dispozitivele Android sunt capabile sa inregistreze fisiere audio sau video. Cu toate aceastea, de preferat este sa se studieze in detaliu capacitatile dispozitivului, pentru ca acestea pot varia de la o versiune la alta. Printre capacitatile multimedia incorporate se identifica: realizarea de fotografii, utilizarea microfonului pentru efectuarea de inregistrari, ascultarea fisierelor audio sau video, etc.

GPS. Toate dispozitivele Android au acces la furnizorii de locatii, precum GPS, care pot furniza aplicatiei informatii cu privire la locul exact unde se afla pe "fata pamantului" dispozitivul dumneavoastra. De exemplu, acest lucru este util in cazul in care v-a fost furat dispozitivul, deoarece puteti urmari miscarile si locatia exacta a acestuia.

Sercivii telefonice. Bineinteles, dispozitivele Android sunt telefoane mobile, fapt ce presupune efectuarea de apeluri telefonice, trimiterea si primirea de mesaje SMS, precum si orice alte operatii specifice tehnologiei actuale a telefoniei mobile.

VI. Dezvoltarea unei aplicatii Android folosind API-ul GoogleMaps

GoogleMaps reprezinta una din numeroasele aplicatii utilizate de platforma Android. Pentru dezvoltarea aplicatiei Android din cadrul acestei lucrari se apeleaza la instrumentul GoogleMaps si se urmareste atingerea urmatoarelor obiective:

  • integrarea GoogleMaps in aplicatia Android;
  • posibilitatea utilizatorului de a efectua operatia de zoom asupra hartii;
  • vizualizarea GoogleMaps din diferite perspective;
  • adaugarea unui marcator pe harta pentru o locatie specificata;
  • afisarea coordonatelor unui punct de pe harta.

VI.1 Crearea proiectului Android

In primul rand, se deschide mediul de lucru Eclipse si se creeaza un nou proiect Android (File/ New Android project). Denumiti proiectul "GoogleMaps".

La o privire mai atenta a fisierului AndroidManifest.xml generat la crearea aplicatiei, se observa faptul ca tag-ul <manifest> cuprinde, in mod obligatoriu, un namespace, precum si un pachet java specific aplicatiei. Aplicatia dezvoltata pe parcursul acestei lucrari contine o singura Activitate cu o clasa intitulata GoogleMaps.

Ori de cate ori este utilizat simbolul "@" in cadrul fisierului AndroidManifest.xml, se face referire la informatiile stocate intr-unul din fisierele de resurse. In acest caz, atributul eticheta (label) este obtinut de la resursa de tip string app_name, definita in alta parte a aplicatiei. Activitatea contine o singura definitie a tag-ului IntentFilter,    acest tag fiind foarte des intalnit in aplicatiile de tip Android.

Actiunea android.intent.action.MAIN indica faptul ca acesta este punctul de intrare pentru aplicatie, in timp ce categoria android.intent.category.LAUNCHER plaseaza activitatea in fereastra de lansare. Este posibila existenta mai multor tag-uri Activity intr-un fisier AndroidManifest.xml, lucru ce ar determina vizibilitatea mai multor ferestre de lansare.

Pentru a putea integra GoogleMaps in aplicatia Android, trebuie modificat fisierul AndroidManifest.xml, prin adaugarea tag-ului <uses-library> si a permisiunii de conectare la Internet:

  • <uses-library android:name='com.google.android.maps' />
  • android.permission.INTERNET.

Se disting doua posibilitati de modificare a acestui fisier: prin utilizarea instrumentelor disponibile in Manifest editor, sau prin scrierea directa a liniilor de cod in AndroidManifest.xml. Codul sursa al acestui fisier modificat este prezentat in continuare:

VI.2 Modificarea interfetei aplicatiei

Urmatorul pas in dezvoltarea aplicatiei il presupune afisarea GoogleMaps pe dispozitiv.

Incepand cu versiunea Android sdk 1.0, este necesara cererea expresa a unei chei Api pentru a putea utiliza GoogleMaps in diversele aplicatii Android. Pentru a genera o astfel de cheie trebuie parcurse o serie de etape[3], prezentate pe scurt in continuare:

  • in primul rand, trebuie localizat certificatul de depanare SDK situat in folderul "C:Documents and Settings<username>Local SettingsApplication DataAndroid". Fisierul cheii de depanare este debug.keystore. Dupa ce ati localizat cheia de depanare trebuie sa extrageti amprenta MD5 cu ajutorul instrumentului Keytool.exe inclus in pachetul de instalare JDK. Aceasta amprenta este necesara pentru obtinerea cheii Api pentru GoogleMaps. Aplicatia Keytool.exe se gaseste in fisierul

"C:Program FilesJava<JDK_version_number>bin";

  • pentru a extrage amprenta MD5 trebuie executata urmatoarea comanda

keytool.exe -list -alias androiddebugkey -keystore 'C:androiddebug.keystore' storepass android -keypass android in CommandPrompt la adresa unde este localizat Keytool.exe pe calculator;

  • copiati amprenta digitala MD5 generata si navigati la urmatoarea adresa web https://code.google.com/android/maps-api-signup.html. Urmati instructiunile pentru a obtine cheia Api necesara.

In cele ce urmeaza este prezentat codul sursa aferent fisierului main.xml, fisier situat in foderul res/layout. De remarcat ca in interioul tag-ului <com.google.android.Maps.MapView> s-a utilizat cheia Api obtinuta anterior.

In fisierul GoogleMaps.java, se extinde clasa GoogleMaps prin clasa de baza MapActivity, pentru a se putea integra harta Google in aplicatia Android (vezi codul sursa afisat in continuare). Metoda setContentView() permite crearea interfetei principale a aplicatiei, sub forma unui layout, definita in fisierul main.xml din directorul res/layout.

Figura 6 prezinta harta Google integrata in aplicatia Android dezvoltata.

Figura6. GoogleMaps integrat in aplicatia Android

VI.3 Afisare mod Zoom In / Zom Out

Dupa ce a fost integrat GoogleMaps pe dispozitivul virtual Android, harta din figura precedenta se poate "trage" in oricare parte se doreste, iar ecranul se updateaza instant cu noua locatie. Totusi, o problema importanta o constituie imposibilitatea de a mari sau micsora harta pe o anumita locatie, motiv pentru care, unul din obiectivele lucrarii este acela de a permite utilizatorilor efectuarea unor astfel de operatii.

In cadrul acestui paragraf, se vor prezenta pasii ce trebuie parcursi pentru ca utilizatorii sa poata efectua zoom in/zoom out asupra hartii integrate pe dispozitivele lor.   

In primul rand, se adauga tag-ul <LinearLayout> in fisierul main.xml. Acest tag este necesar pentru a putea introduce cele doua controale zoom (in / out) in aplicatia GoogleMaps. Apoi, in fisierul GoogleMaps.java se importa urmatoarele biblioteci de clase necesare,

import com.google.android.maps.MapView.LayoutParams;   

import android.view.View;

import android.widget.LinearLayout;

si totodata, se adauga dupa linia ce implementeaza interfata setContentView(R.layout.main)    codul sursa prezentat mai jos:

Practic, s-a creat o instanta MapView, careia i-au fost atribuite controalele zoom si apoi corelate cu tag-ul <LinearLayout> adaugat anterior.

Figura 7. Aplicatia GoogleMaps cu instrumentul de zoom incorporat

In cazul de fata, s-a optat pentru ca instrumentul de zoom sa fie afisat in partea de jos a ecranului emulatorului - android:layout_alignParentBottom='true'. Dupa rularea aplicatiei, se poate observa aparitia controalelor marire/micsorare pe ecran, ori de cate ori este apasata harta (vezi figura 7).

VI.4 Vizualizarea GoogleMaps din diferite perspective

In mod implicit, GoogleMaps este afisat in mod "harta". Pentru a putea vizualiza harta din perspectiva unui satelit, se poate apela metoda setSatellite() a clasei MapView ca mai jos:

mapView.setSatellite(true);

De asemenea, se mai poate opta pentru afisarea hartii din perspectiva strazilor prin apelarea metodei setStreetView(), si anume:

mapView.setStreetView(true);

Figura 8 afiseaza modurile de vizualizare GoogleMaps din cele doua pespective: cea a satelitului, respectiv a strazilor.

Figura 8. Afisarea GoogleMaps din perspectivele: satelit si strazi

VI.5 Afisarea unei anumite locatii

In mod implicit, aplicatia GoogleMaps afiseaza harta Statelor Unite ale Americii, prima oara cand se incarca. Cu toate acestea, se poate seta programatic, ca aplicatia sa afiseze orice locatie se doreste. In acest caz, se utilizeaza metoda animateTo() a clasei MapController.   

Pentru a se putea realiza aceasta operatie se va modifica codul sursa aferent clasei GoogleMaps, prezentat in continuare:




 
In codul sursa prezentat anterior se observa crearea unei instante MapView si apoi atribuirea acestei instante unui obiect MapController (mc). De asemenea, obiectul GeoPoint este utilizat pentru a reprezenta o anumita locatie geografica.
De remarcat ca, pentru aceasta clasa, latitudinea si longitudinea unei locatii sunt reprezentate in micro grade, lucru ce presupune salvarea coordonatelor ca si valori intregi. De exemplu, latitudinea cu valoarea , trebuie multiplicata cu 106 (1E6), pentru a obtine valoarea intreaga
Pentru a naviga harta catre o anumita locatie, se utilizeaza metoda animateTo() a clasei MapController (o instanta obtinuta de la obiectul MapView). Metoda setZoom() permite specificarea nivelului de zoom dorit in momentul rularii aplicatiei. In figura 9 este prezentata harta Galatiului, intrucat coordonatele introduse in codul sursa prezentat anterior sunt specifice localitatii Galati.

.
Figura 9. Navigarea intr-o anumita locatie pe harta


VI.6 Adaugarea de marcatori pe harta

De cele mai multe ori, utilizatorul doreste sa adauge un marcator pentru a indica o locatie de interes propriu. Pe parcursul acestui paragraf va fi prezentat modul in care se pot introduce in aplicatia dezvoltata astfel de marcatori.
In primul rand se va crea o imagine de tip .gif care sa contina forma unui "ac". Odata creata imaginea, ea se va copia in folderul res/drawable al proiectului. Pentru un efect mai bun, imaginea creata trebuie sa aiba fundalul transparent, pentru a nu acoperi diferite parti ale hartii atunci cand imaginea este adaugata.
Pentru a adauga un marcator pe harta, trebuie definita o clasa, care sa extinda clasa Overlay, si inserate anumite biblioteci de clase, la fel ca in codul sursa prezentat mai jos:





In clasa MapOverlay definita, trebuie suprascrisa metoda draw(), pentru a se putea desena imaginea unui ac pe harta. In mod particular, de remarcat ca locatia geografica (reprezentata printr-un GeoPoint, p) trebuie transcrisa prin coordonate specifice ecranului (mapView.getProjection().toPixels(p, screenPts)).
Obiectivul urmarit este ca varful acului sa indice pozitia unei anumite locatii. Pentru aceasta, trebuie stabilita inaltimea imaginii (50 pixeli) de la coordonata y a punctului de desenare si apoi desenarea efectiva a acului la acea locatie. Pentru a adauga marcatorului, se creeaza o instanta a clasei MapOverlap si se adauga la lista Overlay disponibila pe obiectul MapView, conform codului sursa prezentat in continuare. Figura 10 prezinta modul de afisare al acului pe harta, la o locatie specificata.


Figura 10. Adaugarea unui marcator pe harta

VI.7 Afisarea coordonatelor unui punct de pe harta

Un alt obiectiv urmarit pe parcursul dezvoltarii acestei aplicatii Android il reprezinta reperarea coordonatelor unei locatii (latitudine, longitudine) care sa corespunda cu zona atinsa pe ecran.

Acest lucru permite aflarea cu usurinta a unei locatii, proces ce poarta numele de Geocoding. Dupa ce s-a adaugat un overlay pe harta, se suprascrie metoda onTouchEvent() a clasei Overlay. Aceasta metoda se declanseaza ori de cate ori utilizatorul atinge harta. Metoda are doi parametrii - MotionEvent si MapView. Parametrul MotionEvent presupune determinarea momentului cand utilizatorul ridica degetul de pe ecran, apeland metoda getAction(). Conform codului sursa prezentat mai jos, daca utilizatorul a atins ecranul si apoi apor a ridicat degetul, se va afisa latitudinea si longitudinea locatiei atinse. Figura 11 afiseaza coordonatele    unui punct de pe harta.

Figura 11. Afisarea coordonatelor unui punct de pe harta

Concluzii

Astfel, datorita facilitaților de portabilitate, a accesului nerestricționat la stiva de aplicații ale producatorului, proiectul Android ofera șansa oricarui utilizator de dispozitive mobile cu puține cunoștințe in domeniul programarii de a crea aplicații unice și inovative, iar prin intermediul Android Market-ului sa se livreze aceste aplicații la utilizatorii finali.

BIBLIOGRAFIE

John F. DiMarzio,    Android -A programmers guide, Editura The McGrawHill Companies, 2008.

Reto Meier, Professional Android Application Development, EdituraWrox, 2008.

Mark Murphy, Beginning Android, Editura Apress, 2009.

Frank Ableson, Charlie Collins, Unlocking Android: A developer's guide, Editura Manning, 2009.

Chris Haseman, Android Essentials, Editura Apress, 2009.

Using Google Maps in Android - https://www.devx.com/wireless/Article/39145/0/page/3.

https://www.android.com/about/.

https://en.wikipedia.org/wiki/Google_Android

https://developer.android.com/sdk/android-1.6-highlights.html .

https://developer.android.com/guide/tutorials/views/index.html.

https://developer.android.com/reference/android/widget/Toast.html.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 3302
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved