Localizarea Si Monitorizarea Unui Autovehicul Folosind Api
Localizarea și monitorizarea unui autovehicul folosind API
Cuprins
Introducere
Capitolul 1. Prezentarea limbajului Java și Google Maps
1.1 Caracteristici JAVA
1.2 Platforme
1.3 Un limbaj compilat și interpretat
1.4 Structura limbajului
1.5 Platforma Google Maps
1.6 Curtis Wong, principal researcher, Microsoft Researcher
1.7 Tipuri de hartă și coordonatele hărților
Capitolul 2. Android
2.1 Istoric și componente
2.2 Servicii bazate pe Android
2.3 Hărți, Geocoding, și Servicii de localizare
2.4 Ceea ce rulează în spatele aplicațiilor
2.5 Modelul de securitate Android și conceptul securității
Capitolul 3. Descrierea aplicației
Bibliografie
Motivația temei
Pornind de la zicala: "Daca nu ești pe Internet nu exiști", putem deduce ușor motivele pentru care necesitatea unui site pentru noi sau pentru firme este necesar. În secolul 21 nevoia de cel puțin un site de prezentare pentru o firma sau o companie este o necesitate deoarece clienții sau potențialii clienți asteaptă ca la o distanță de un click și la orice oră să afle informații minime despre firmă, date de contact, experiență sau portofoliu, serviciile sau produsele pe care le oferă.
Prezența pe Internet este un aspect esențial al oricarei afaceri. O aplicație de monitorizare reprezintă deschiderea firmei către lumea întreagă. Un procent însemnat al firmelor din mediul urban au acces la Internet. Astfel un site web reprezintă cea mai ieftină metodă de promovare și publicitate. Aplicațiile web sunt soluții specializate, cu funcționalități ridicate și atractive pentru asigurarea unei bune relații și o interactivitate cu clienții.
Localizarea GPS este una dintre cele mai eficiente metode care îi ajută pe managerii parcurilor auto să gestioneze flota de mașini din subordine, să facă economie de carburant și să eficientizeze folosirea timpilor șoferilor și agenților de vânzări. Cu o simplă analiză a traseelor parcurse de vehicule în zilele precedente precum și a planului de livrări din zilele următoare un manager poate decide mai ușor ce rute trebuie urmate de către fiecare șofer / agent de vânzări pentru ca timpul de lucru să fie folosit la maxim iar carburanții consumați să fie în cantitate minimă.
În acest secol informația este unul dintre cele mai importante bunuri ale unei organizații, probabil inferioară doar resurselor umane. Fiecare aspect al societății, inclusiv mediul de afaceri este influențat de faptul că trăim într-o societate informațională în care aproape totul este interconectat. Asta nu înseamnă că fiecare aspect al vieții este online, ci mai degrabă că, indiferent dacă cineva participă sau nu, el este afectat de acest aspect.
Introducere
Acest document reprezintă o revizuire actuală si unele tendințe viitoare care pot afecta modul în care lucrăm astazi cu Internetul. Am notat și cateva lucruri referitoare la creșterea bruscă a utilizării de aplicații web în afaceri și câteva schimbări amenințătoare în lumea prezentă în mod constant online.
Lucrarea îsi propune să prezinte într-o formă unitară și accesibilă tehnologiile fundamentale folosite în aplicatiile bazate pe API-uri.
Acestă lucrare cuprinde trei capitole în care sunt prezentate noțiunile generale necesare pentru dezvoltare unei aplicați folosind tehnologia Java și Android.
În primul capitol sunt prezentate noțiuni generale ale limbajului de programare Java. Am vorbit despre Platforma Google Maps și serviciile folosite Google Transit, Google Street View, Earth View dar și vizualizarea 3-D.
În cel de-al doilea capitol sunt prezentate hărțile, serviciile de localizare, cum rulează astfel de aplicații și conceptul de securitare.
Capitolul trei cuprinde noțiuni despre aplicația dezvoltată ce are ca scop monitorizarea unui autovehicul folosind un smart phone cu sistem de operare de tip Android, aplicația înregistrarează și monitorizează traseul uni autovehicul și salvarea datelor pentru a putea fi vizualizate sau analizate mai târziu, aplicația folosește GPS-ul telefonului, API furnizat de google maps și internetul.
Prezentarea limbajului Java și Google Maps
Caracteristici JAVA
Limabajul de programare Java s-a transformat într-un interval scurt într-una din cele mai populare opțiuni pentru dezvoltarea de aplicații, indiferent de domeniul sau complexitatea lor datorită următoarelor caracteristici:
Simplitate – elimină supraîncarcarea operatorilor, moștenirea;
Complet orientat pe obiect – elimină complet stilul de programare procedural;
Securitate este un limbaj de programare foarte sigur, furnizânt mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamică a codului pentru detectarea secvențelor periculoase, impunerea unor reguli stricte pentru rularea proceselor la distanță etc.;
Neutralitate arhitecturală – comportamentul unei aplicații Java nu depinde de arhitectura fizică a mașiniii pe care rulează;
Portabilitate – Java este un limbaj indepentent de platforma de lucru, aceea și aplicație rulânt fără nici o modificare și fără a necesita recompilarea ei pe sisteme de operare diferite cum ar fi Windows, Linux, Mac OS, Solaris etc. lucru care aduce economii substanțiale firmelor dezvoltatoare de aplicații;
Performanță – deși mai lent decât limbajele de programare care generează executabile native pentru o anumită platformă de lucru, compilatorul Java asigură o performanță ridicată a codului de octeți, astfel încat viteza de lucru puțin mai scăzut nefiind un inpediment în dezvoltarea de aplicații oricât de complexe;
Platforme
Limbajul de programare Java a fost folosit la dezvoltarea unor tehnologii dedicate rezolvării unor probleme din cele mai diverse domenii. Aceste tehnologii au fost grupate în platforme de lucru, ce reprezintă seturi de librării scrise în limbajul Java, precum și diverse programe utilitare, folosite pentru dezvoltarea de aplicații sau componente destinate unei anumite categorii de utilizatori:
J2SE (Standart Edition)
Este platforma standart de lucru ce oferă suport pentru crearea de aplicații independente și appleturi.
J2ME (Micro Edition)
Folosind Java, programarea dispozitivelor mobile este extrem de simplă, platforma de lucru J2ME oferind suportul necesar scrierii de programe dedicate acestui scop.
J2EE (Enterprise Edition)
Această platformă oferă API-ul necesar dezvoltării de aplicații complexe, formate din componente ce trebuie să ruleze în sisteme eterogene, cu informații memorate în baze de date distribuite etc.
Un limbaj compilat și interpretat
Interpretare: instrucțiunile sunt citite linie cu linie de un program numit interpretor și traduse în instrucțiune mașina. Avantajul acestei soluții este simplitatea și portabilitatea, dezavantajul fiind, viteza de execuție redusă.
Compilare: codul sursă al programelor este transformat de compilator într-un cod ce poate fi executat direct de procesor, numit cod mașina. Avantajul este execuția extrem de rapidă, dezavantajul fiind lipsa de portabilitate, codul compilat într-un format de nivel scăzut nu poate fi rulat decât pe platforma de lucru pe care a fost compilat.
Codu de octeți este diferit de codul mașina. Codul mașina este reprezentat de o succesiune de instrucțiuni specifice unui anumit procesor și unei anumite platforme de lucru reprezentate în format binar astfel încat să poată fi executat făra a mai necesita nici o prelucrare.
Codurile de octeți sunt seturi de instrucțiuni care seamănă cu codul scris în limbaj de asamblare și sunt generate de compilator independent de mediul de lucru. În timp ce codul a fost creat, codul de octeți este interpretat de mediul Java și de aceea poate fi rulat pe orice platformă pe care este instalat mediul de execuție Java.
Prin mașina virtuală Java (JVM) înțelegem mediul de execuțe al aplicațiilor Java. Pentru ca un cod de octeți să poată fi executat pe un anumit calculator, pe acesta trebuie să fie instalată o mașin virtuală Java. Acest lucru este realizat automat de către distribuția J2SDK.
Structura limbajului
Cuvintele rezervate în Java sunt cele din C++ cu câteva excepții. Acestea nu pot fi folosite ca nume de clase, interfețe, variabile sau metode (true, false, null nu sunt cuvinte cheie, dar nu pot fi nici ele folosite ca nume în aplicație).
Identificatorii sunt șiruri de caractere (litere sau cifre Java) și reprezint numele dat unei variabile, clase sau funcții. Ca identificator poate fi folosit orice șir de caractere ce satisface condițiile:
șirul începe cu o literă Java și nu cu o cifră Java
șirul este diferit de orice cuvânt cheie
șirul este diferit de null, false, true.
Fiecare variabilă și expresie în Java are tip cunoscut în timpul compilării. Tipurile de date limiteză valorile pe care o variabilă le poate memora sau pe care le poate produce o expresie, limiteză operațile suportate de aceste valori și determină înțelesul acestor operați.
În Java există trei categori de tipuri de date: primitive, referința și null. Tipurile primitive sunt tipurile boolean și numerice. Tipurile numerice sunt tipurile integrale (byte, shot, int, long, și char) și tipurile în virgulă flotantă (float și double). Tipurile referință sunt tipurile clasă, interfață și tablou. În Java pornim de la preniza că “orice este un obiect” astfel încât toate tipurile de date ar trebui să fie definite de clase iar variabilele defapt să memorize de fapt instanțele acestor adrese.
Un obiectiv în Java este o instanță creată dinamic a unui tip de clasă sau a unui tablou creat dinamic. Valorile unui tip referința sunt referințe la obiecte. Toate obiectele inclusiv tablourile, suportă metode ale clasei Object. În alte limbaje formatul și dimensiunea tipurilor primitive de date folosite într-un program pot depinde de platforma pe care rulează programul. În Java acest lucru nu mai este valabil, orice dependență de o anumita platformă specifică fiind eliminată.
Tipul null este special, acesta neavând nume, deci este imposibil să declarăm o variabilă de tip null sau să o convertim la orice tip referință.
Numele tipurilor sunt folosite în declarați, conversi, în expresi de careare a instanței unei clase, în expresii de creare a tablorilor și în expresii folosite de operatorul instanceof.
Varibilele pot fi de tip primitive sau referință la obiecte (tip referință)
Declararea variabilelor: Tip NumeleVariabilei.
Inițilarizarea variabilelor: Tip NumeleVarialiei = valoare.
Declararea constantelor: final Tip NumeleVariabilei.
Evident, există posibilitatea de a declara și inițializa mai multe variabile sau constant de același tip într-o singură instrucțiune astfel:
Tip variabila1=[valoare1], variabil2=[valoare2],….,;
Convenția de numire a variabilelor în Java include, printre altele, următoarele criterii:
Variabile finale (constante) se scriu cu majuscule.
Variabile care nu sunt constante se scriu astfel: prima literă mica iar dacă numele variabilei este format din mai mulți atomi lexicali, atunci primele litere ale celorlalte atomi se scriu cu majuscule.
Exemple:
final double PI=3.14;
final int MAXIM 10 = 10, MINIM = 0;
int nume = 100;
char nume=a, nume2=r, nume3=t, nume4=i;
long numarElemente = 1234523L;
String nume = ”I Love Java” ;
În funcție de locul în care declarate variabilele se împart următoarele categorii:
membre, declarate în interiorul unei clase, vizible pentru Variabile toate metodele clasei respective cât si pentru alte clase în funcție de nivelul lor de acces.
Parametri metodele, vizibile doar în metoda respectivă.
Variabile locale, declarate într-o metoda, vizibile doar în metoda respectivă.
Variabile locale, declarate într-un bloc de cod vizibile doar în blocul respectiv.
Platforma Google Maps
Google Maps este un serviciu gratuit oferit de corporația Google, destinat vizualizării hărților propriu-zise sau personalizate, precum și furnizării de informații legate de firmele locale (adrese, informatii de contact sau oferire de trasee).
Platforma Google Maps are integrate, pe lângă aplicația de baza, o serie de servicii precum Google Transit, Google Streettri metodele, vizibile doar în metoda respectivă.
Variabile locale, declarate într-o metoda, vizibile doar în metoda respectivă.
Variabile locale, declarate într-un bloc de cod vizibile doar în blocul respectiv.
Platforma Google Maps
Google Maps este un serviciu gratuit oferit de corporația Google, destinat vizualizării hărților propriu-zise sau personalizate, precum și furnizării de informații legate de firmele locale (adrese, informatii de contact sau oferire de trasee).
Platforma Google Maps are integrate, pe lângă aplicația de baza, o serie de servicii precum Google Transit, Google Street View, Earth View sau hărți individualizate ale altor site-uri care o folosesc. Construit intr-un mod „user friendly”, Google Maps pune la dispoziția utilizatorilor imagini prin satelit care se pot mări si marca, oferă coordonate și trasee exacte pentru diferite destinații, optimizând și ușurând pe cât posibil accesul celor care îl folosesc. Google Maps poate fi de asemenea accesat de pe telefonul mobil.
Toate aplicațiile cu hărțile API ar trebui să încarce hărțile folosind o cheie API. Folosirea unei chei API ne permite să monitorizăm hărțile aplicației și ne asigură că Google poate contacta cererea noastră dacă este necesar. Dacă utilizarea aplicației depașește limitele de utilizare, trebuie să încărcăm API Maps folosind o cheie API, în scopul de a achiziționa cote suplimentare.
Street View este o funcționalitate populară din Google Maps, fiind disponibilă în peste 55 de țări. Actualizarea imaginilor Street View este una dintre cele mai frecvente solicitări venite din partea utilizatorilor de Google Maps. Street View permite utilizatorilor să exploreze și să viziteze virtual zone, orașe, drumuri prin imagini panoramice de la nivelul străzii. Funcționalitatea este disponibilă si în Google Earth și versiunea mobilă a Google Maps.
Figura 1.1. Vizualizare străzi
Street View pentru Google Maps a fost lansat in Romania la sfarsitul anului 2010, fiind primul serviciu localizat introdus după deschiderea biroului Google din Romania in noiembrie 2010. Cea mai recentă actualizare a imaginilor Street View din Romania a fost realizată in aprilie 2013, dupa un adevarat „maraton” al mașinilor Street View si triciclului Google (Google Trike). Acoperirea Street View in Romania a fost extinsă atunci cu sute de localități si peste 40.000 km, aproape toate țara fiind disponibilă în Street View. De asemenea, pe Google Maps au fost adăugate imagini panoramice pentru zeci de atracții turistice din Romania.
Înainte de a publica imaginile, Google aplica efect de estompare pe fețele oamenilor din imaginile Street View, precum si pe numerele de inmatriculare ale masinilor, pentru a proteja intimitatea indivizilor. Dupa publicare, orice utilizator poate raporta imagini pentru a fi eliminate, accesând secțiunea „Raportați o problemă” din colțul din dreapta jos al fiecarei imagini.
Figura 1.2. API Project
Pentru a încarca codul Maps API după ce pagina a terminat de încarcat cu JavaScript este nevoie de injectarea propriului <script> tag-ul, ca răspuns la un eveniment window.onload sau un apel de funcție, dar este nevoie pentru a instrui în plus, API bootstrap Maps JavaScript pentru a întârzia executarea de cod aplicată până la codul API Maps JavaScript este complet încărcată.
Împreună cu indicații rutiere, Google Maps oferă accent egal la traseu de mers pe jos și opțiuni de transport public.
Prin această caracteristică se face strălucit. Google Maps afișează un calendar curat, pas cu pas a întregului transport in comun. Google Maps este un serviciu gratuit oferit de corporatia Google, destinat vizualizării hărților propriu zise sau personalizate, precum si furnizării de informații legate de firmele locale (adrese, informatii de contact sau oferire de trasee).
Actualizată la sfârșitul lunii aprilie, aplicația Google Maps pentru Android a adus diverse îmbunătățiri minore și a implementat o metodă pentru upload-ul multiplu al imaginilor, însă se pare că versiunea 9.8 ascunde și câteva trucuri interesante pentru accesarea rapidă a evenimentelor din calendar sau a rezervărilor pentru localuri, hoteluri sau zboruri.
Utilizarea câmpurilor de căutare și pentru introducerea unor comenzi mai mult sau mai puțin documentate nu este o noutate pentru Google, utilizatorii aducându-și aminte probabil de exemple precum salvarea offline a unor hărți din Google Maps sau recenta apelare Find my Phone din Google Search. Noua versiune 9.8 a aplicației Google Maps pentru Android folosește și ea un truc similar, câmpul de text folosit pentru căutarea unei adrese putând fi folosit și pentru accesarea rapidă a unor informații personale indexate de Google.
Comenzile recent introduse în cadrul interfeței Google Maps pentru Android sunt My events, My flights, My hotels și My reservations, iar utilizarea lor va aduce la iveală informațiile personale stocate în contul Gmail și indexate de către Google. Această metodă de acces la informațiile din calendar sau Inbox nu este chiar nouă, Google Search și Google Now permițând deja apelarea manuală sau prin intermediul comenzilor vocale a acestor comenzi, dar integrarea cu serviciul de navigație Google Maps le face mai utile în situațiile în care aveți oricum nevoie și de ghidare.
Dacă integrarea Google Search sau Google Now funcționează în browser-ul Chrome indiferent de platformă, integrarea comenzilor My events, My flights, My hotels și My reservations funcționează momentan doar în cazul aplicației Google Maps pentru Android.
Curtis Wong, principal researcher, Microsoft Researcher
Curtis Wong, principalul cercetător de la Microsoft pe durata a 30 de luni a dezvoltat ideile și prototipurile care au stat la baza proiectului “GeoFlow” care a fost numit mai târziu Power Map cu ajutorul Business Group Startup (SBG) în Microsoft. Acest proiect a fost susținut de SBG oferind o parte din resurse. Tehnologia vizualizării 3-D a devenit o piesă cheie, împreună cu putere view-ului, capabilităților business-intelligence ale puterii BI în excel.
Echipa a fost înântată de ceea ce au construit, au petrecut o mulțime de timp în explorarea diferitelor tipuri de funcționalități ale produsul final. A fost extrem de util pentru el să fie în măsură să prezinte în mod specific cum o caracteristică ar putea lucra cu diferite reprezentări și tipuri de date, ceea ce a făcut mai ușor pentru toată lumea să aibă o înțelegere comună a unei caracteristici. Aceasta a permis managerilor de program pentru a obține o înțelegere profundă a caracteristicilor și a ajutat echipa de dezvoltare să înteleagă mai bine modul de construire.
Ca în orice proiect au existat timpi limită și constrangeri de buget care au avut un rol important. Echipa a simplificat foarte mult procesul de cartografiere a datelor pentru un singur click. În aprilie, când au previzualizat Power Map, încă numit GeoFlow la acel moment, utilizatorii trebuiau să desemneze care coloana de masă conținea informații de locație, care vor fi folosite pentru a geocodifica datele. Pentru novici complet, acest lucru ar putea fi fost un punct de confuzie, echipa a permis Power Map de a recunoaște geocodare adecvată automat și apoi selectați datele corecte, proiectand-o pe o hartă, și zoom în aparat de fotografiat pentru a arăta datele. Acest lucru este realizat prin un singur clic pe butonul de alimentare. O altă caracteristică nouă, uimitor este capacitatea utilizatorului de a alegere a parcelei de date pe o hartă plană sau un glob, în funcție de reprezentare funcțională cea mai bună.
Echipa Power Map mereu a monitorizat îndeaproape feedback-ul de de la clienți și utilizarea care a examina punctele potențiale ale confuziei sau sugerează îmbunătățiri necesare. O caracteristică populară solicitată este geopolitic cod regiunile ZIP, județ, stat, țară / regiune, care este acum disponibil. Geocoding-ul de regiuni, cum ar fi coduri poștale sau județe se face automat, iar granițele fac mai ușor pentru a vizualiza și compara datele pentru fiecare regiune. Un strigăt mare la Bing Maps pentru furnizarea datelor din spatele acestui lucru și fiind un colaborator mare cu acest proiect de ani de zile și un exemplar al porții One Microsoft mult timp înainte. Această echipă a făcut muncă teribilă și a contribuit la frumoasele ghidajele stil pământ în Power Map.
Tipuri de hartă și coordonatele hărților
Am notat câteva chestii legate de tipurile de hărți, putem afișa folosind Google Maps API Javascript.API un obiect MapType de a deține informații cu privire la aceste hărți. Un MapType este o interfață care definește ecranul și utilizarea harta si transmite sistemului coordonate de la ecran la coordonatele lumii (pe harta). Fiecare MapType trebuie să conțină câteva metode de a gestiona recuperarea și eliberare de plăci, și proprietăți care definesc comportamentul său vizual.
Lucrările interioare ale tipuri de hărți în Maps API este un subiect avansat. Cei mai multi dezvoltatorii pot folosi pur și simplu tipurile de hartă de bază menționate mai jos. Cu toate acestea, puteți defini, de asemenea, propriile harti folosind personalizate tipuri de hărți sau modifica prezentarea de tipuri de hărți existente, folosind maps.style. Atunci când furnizam tipuri de hărți personalizate, va trebui să înțelegem cum modificam harta de pe harta de tip registrul.
Există patru tipuri de hărți disponibile în Google Maps API. În plus față de cele familiare Google Maps API sprijină, de asemenea alte tipuri de hărți.
Următoarele tipuri Harta sunt disponibile în Google Maps API:
MapTypeId.ROADMAP afișează vizualizarea harta rutieră implicit. Acesta este tipul de hartă implicit.
MapTypeId.SATELLITE afiseaza imagini satelitare Google Earth
MapTypeId.HYBRID afișează un amestec de opinii normale și prin satelit
MapTypeId.TERRAIN afișează o hartă fizică pe baza informațiilor teren.
Ai modifica tipul de hartă în utilizarea de către Harta prin setarea proprietatea mapTypeId, fie în cadrul constructorului prin setarea opțiunilor sale Harta opoziție, sau prin apel setMapTypeId () metoda hărții. Cele implicit de proprietate mapTypeID la MapTypeId.ROADMAP.
StyledMapType vă permite să personalizați prezentarea hărților Google Base standard schimbarea displaiului vizual de elemente precum drumuri, parcuri și zone construite pentru a reflecta un alt stil decât cea utilizată în tipul de hartă implicit.
Google Maps API V3 JavaScript suportă acum afișarea și gestionarea tipurilor de hărți personalizate, permițându-vă să puneti în aplicare propria harta de imagini sau țiglă suprapuneri.
Mai multe posibile implementari hartă de tip există în API V3:
Seturi de țiglă standard constând din imagini care reprezintă împreună hărți cartografice complete. Aceste seturi de țiglă sunt cunoscute ca tipuri harta de bază. Aceste tipuri de hărți acționează și se comportă la fel ca tipurile harta implicite existente: FOAIE DE PARCURS, SATELIT, hibride și teren. Puteți adăuga personalizat hartă tipul la un Harta de mapTypes matrice a permite UI în Hărți API pentru a trata personalizat hartă tipul ca un tip de hartă standard, (prin includerea acestora în controlul MapType, de exemplu).
Suprapuneri Placi de imagine care afișează în partea de sus a tipurilor harta de bază existente. În general, aceste tipuri de hărți sunt folosite pentru a spori un tip de hartă existent pentru a afișa informații suplimentare și sunt adesea constrâns să locații specifice și / sau nivele de zoom. Rețineți că aceste placi pot fi transparente, permițându-vă pentru a adăuga caracteristici pentru a hărților existente.
Non-image tipuri de hărți, care vă permit să manipuleze afișarea hartă informații la nivelul cel mai fundamental.
Fiecare dintre aceste opțiuni se bazează pe crearea unei clase care implementeaza interfata MapType. În plus, clasa ImageMapType oferă un comportament built-in pentru a simplifica crearea de MapTypes de imagini.
Înainte de a explica clase care pun în aplicare MapType, este important să înțelegem cum Google Maps determină coordonate și decide care părți ale harta sunt corecte pentru afișare. Va trebui să pună în aplicare logică similară pentru orice MapTypes de bază sau de acoperire.
Există mai multe sisteme de coordonate care utilizează Google Maps API:
Valorile pentru latitudine și longitudine care fac referire la un punct de pe lumea unic. (Google utilizează standardul sistem geodezic mondial WGS84.)
Coordonate mondial care fac referire la un punct de pe hartă unic.
Coordonate de placi de ceramica care fac referire la o piesă specifică pe hartă la nivel de zoom specific.
Ori de câte ori Maps API are nevoie pentru a traduce o locație în lume într-o locație pe o hartă (ecranul), aceasta trebuie să traducă în primul rând valorile de latitudine și longitudine într-o "lume" coordonate. Această traducere este realizată folosind o proiecție pe hartă. Google Maps folosește proiecția Mercator în acest scop. Ați putea defini, de asemenea, propria proiecție implementarea interfetei google.maps.Projection. (Rețineți că interfețe în V3 nu sunt clase "subclasă", ci sunt pur și simplu specificații pentru clasele definite de tine.)
Pentru comoditate în calculul coordonatelor pixeli ne asumăm o hartă la nivel de zoom 0 este un singur țiglă din dimensiunea țiglă de bază. Apoi definim coordonatele lume relativ la coordonatele pixel la nivel de zoom 0, folosind proiecția pentru a converti latitudini și longitudini la pozițiile pixelilor de pe acest țiglă bază. Această lume coordonate este o valoare în virgulă mobilă măsurată de la originea proiecție hărții la locul specific. Rețineți că, deoarece această valoare este o valoare în virgulă mobilă, ar putea fi mult mai precis decât rezoluția curentă a imaginii afișată pe hartă. O lume coordonată este independentă de nivelul de zoom curent.
Coordonarea lumii în hărțile Google se măsoară de la origine proiecția Mercator (de colțul de nord-vest a hărții la 180 de grade longitudine și aproximativ 85 de grade latitudine) și creșterea în direcția x spre est (dreapta) și creșterea în direcția y spre sud (jos). Deoarece de bază țiglă Mercator Google Maps este de 256 x 256 pixeli, coordonatele lumii utile spatiuluide {0 – 256}, {0-256}.
Figura 1.3. Coordonatele hărții
Fiecare funcție de activarea JavaScript este folosită pentru a schimba diferitele părți ale hărții.
Cele mai utilizate sunt de a schimba centrul și zoom nivelul hărții. De cele mai multe ori,
oameni muta doar locație la o hartă la alta. De exemplu, dacă sunt afișatelocațiile unui lanț cafea, harta ar trebui să se concentreze pe fiecare dintre locațiile de cafeamagazine. Urmatorul cod creaza un obiect google.maps.LatLng care va fi de intrarea (funcției setCenter). Cele 41.0579 și 29.0340 valorile sunt latitudinea șilongitudine de Istanbul, Turcia respectiv. Va înlocui aceste valori coordona cu dumneavoastrăcoordonate valori proprii pentru a schimba centrul hărții. Această funcție va fi schimbată numai centrul de hartă, nu nivelul de zoom.
var istanbul = new google.maps.LatLng(41.0579,29.0340);
map.setCenter(istanbul);
Dacă dorim să mărim sau să micșorăm din hartă în scopul de a acoperi / arata o zonă, ar trebui să ne jucăm, de asemeneacu valoarea zoom-ului. De exemplu, magazinul locației dvs cafea la nivel de zoom 6 nu poate furnizaorientări eficiente pentru clienții dumneavoastră. Ar trebui să fie cel puțin la nivelul 15 sau mai multe pentru a vedeanumele străzilor și care este locatia exacta pentru aceasta. Acest lucru se poate face cu următorul cod: map.setZoom (18);
În unele cazuri, nu doriți ca utilizatorii să interacționeze cu harta, cum ar fi fixarea locația de hartă,prin dezactivarea drag mouse-ul sau suluri de pneuri. Acestea sunt câteva exemple de google.maps.
Proprietăți obiect MapOptions-ului. Aceste proprietăți sunt direct legate de proprietățileharții. Dacă doriți să modificați una sau mai multe proprietăți ale hărții, trebuie să creați o JSONopoziție și apelați următoarea funcția de hartă:
map.setOptions ({
draggable: false,
maxZoom: 12
});
Cu setOptions () funcție, puteți activa sau dezactiva controalele implicite, Puteți seta una sau mai multe proprietățicu setOp.
Google Maps nu este doar despre hărți de bază frumoase, cu o calitate cartografic imens sau actualizează în mod regulat imagini din satelit. În viața de zi cu zi, nu ca un programator, ci ca un om de zi cu zi care fără îndoială, folosește Google Maps pentru a căuta locuri; fie că este vorbaMuzeul Metropolitan de Arta din New York, sau un farmacia obișnuit în Roma.
Această informație este în Google Maps, dar cum poți ajunge și servi aceste informații prin intermediulAPI-ul Hărți Google JavaScript?
Biblioteca locuri este acolo tocmai pentru acest scop, și vă permite să caute locuri deutilizarea unor parametri de căutare.
Puteți efectua căutări din apropiere, unde rezultatele de locuri ar fi aproape de locul pe careau furnizat, cel mai frecvent, locația utilizatorului. Puteți căuta pe o rază, saupoate specifica doar un șir de căutare. Puteți solicita chiar pentru detalii suplimentare, cum ar fi relevantfotografii, evaluări de revizuire, numere de telefon și orele pentru anumite locuri.
Aceasta reteta se va concentra pe căutări apropiere folosind biblioteca de locuri de Google MapsJavaScript API.
Puteți efectua trage zoom, fie prin apăsarea butonului de comandă și desen o cutie, sau mai simpludecât, menținând apăsată tasta Shift și atragerea caseta pentru a mări în zona din interiorul cutiei.
Pentru a face acest lucru, am adaugat întâi fișierul sursă de activarea JavaScript-a bibliotecii zoom trageți în rețeta noastră.
După setarea opțiunilor harta și utilizarea hartă instanța putem activa zoom tragerefuncționalitate prin utilizarea enableKeyDragZoom () metoda de hartă instanță.
Această metodă prelungire nu este o parte a Google Maps API JavaScript și vine cubibliotecă keydragzoom. Există câteva opțiuni asociate care sunt încorporate în cadrulClasă KeyDragZoomOptions.
Țineți minte că, în forma sa cea mai simplă, puteți utiliza funcția de zoom cheie trageți decare să îi permită:
map.enableKeyDragZoom ();
Singura diferență ar fi că va trebui să utilizați tasta Shift ca singura ta cale pentru că nu ar fi nici butonul de control zoom trageți.
Proprietățile încorporate în clasa KeyDragZoomOptions sunt toate despre controlulbuton care este plasat sub controlul standard de zoom:
Cele mai multe site-uri și aplicații pot utiliza gratuit Google Maps API. Cu toate acestea, dacă genera în mod constant o cantitate mare de trafic, limitele de utilizare se aplică și va trebui să plătească pentru utilizarea suplimentar.
Dacă credeți că site-ul sau aplicație va genera sarcini mari harta mod constant pe termen lung, ar trebui să ia în considerare una dintre următoarele opțiuni:
Modificați aplicația astfel încât utilizarea de către dvs. este mai mic de 25 000 de harta loturile pe zi.
Aplicațiile considerate de interes public (determinată prin Google la alegerea sa) nu sunt supuse acestor limite de utilizare. De exemplu, o hartă în caz de catastrofă nu este supusă limitelor de utilizare, chiar dacă acesta a fost dezvoltat și / sau este găzduit de către o entitate comercială. În plus, calificându organizații non-profit care demonstrează necesitatea intensificării limite geocodare sau utilizarea internă a Maps API Google pot aplica pentru un API Hărți Google pentru permis de muncă prin intermediul Google Earth Outreach acordă programului.
Android
Istoric și componente
Android este un sistem de operare open source bazat pe Linix sistem pentru dispozitive mobile, cum ar fi smartphone-uri și calculatoare comprimat. Android a fost dezvoltat de Open Handset Alliance, condusă de Google, și alte companii.
Android ofera o abordare unitară pentru dezvoltarea cererii de dispozitive mobile, ceea ce înseamnă că dezvoltatorii trebuie să dezvolte numai pentru Android, iar cererile lor ar trebui să poată rula pe dispozitive diferite produse de Android.
Prima versiune beta a Android Development Kit Software (SDK) a fost lansat de Google în 2007 în cazul în care ca prima versiune comerciala, Android 1.0, a fost lansat în septembrie 2008.
Pe 27 iunie 2012, în cadrul conferinței Google I/O, Google a anunțat următoarea versiune Android, 4.1 Jelly Bean.
Figura 2.1. Logo-ul Android-ului
Jelly Bean este o actualizare progresivă, cu scopul primordial de a îmbunătăți interfața cu utilizatorul, atât în termeni de funcționalitate cât și performanță.
Codul sursă pentru Android este disponibil sub licente libere și deschise de software sursă. Google publică cea mai mare parte a codului, sub Apache License versiunea 2.0, iar restul, modificări nucleului Linux, sub licență GNU General Public 2.
Aplicațiile Android sunt de obicei dezvoltate în limbajul Java folosind Kit Android Software Development.
După dezvoltare aplicațiile Android pot fi ambalate cu ușurință și vândut fie prin intermediul unui magazin, cum ar fi Google Play sau Amazon AppStore.
Android aree putere la sute de milioane de dispozitive mobile in peste 190 de țări din întreaga lume. Este cea mai mare baza instalată de orice platformă mobilă și este în creștere rapidă. În fiecare zi, mai mult de 1 milion de noi dispozitive Android sunt activate la nivel mondial.
Android include biblioteci API pentru a simplifica dezvoltarea implicând hardware-ul dispozitivului. Acestea asigură că nu aveți nevoie de ceva specific implementări de software-ul pentru diferite dispozitive, astfel încât să puteți crea aplicații Android care funcționează cum era de așteptat pe orice dispozitiv care acceptă stiva software Android.
Android SDK include API-uri pentru hardware bazate pe locație (cum ar fi GPS), camera, conexiunile de rețea, Wi-Fi, Bluetooth, accelerometre, ecran tactil, și de gestionare a alimentării.
Componentele de aplicație sunt blocurile de bază ale unei cereri Android. Aceste componente sunt slab cuplate de aplicația AndroidManifest.xml fișier care descrie fiecare componentă a cererii și modul în care acestea interacționează.
Există următoarele patru componente principale care pot fi utilizate în cadrul unei cereri de Android:
Tablelul 2.1 Componentele aplicației
Activities
O activitate reprezintă un singur ecran, cu o interfață de utilizator. De exemplu, o aplicație de e-mail ar putea avea o activitate care afișează o listă de e-mailuri noi, o altă activitate pentru a compune un e-mail, și o altă activitate pentru a citi e-mailuri. Deși activitățile lucrează împreună pentru a forma o experiență de utilizare coerentă în aplicația de e-mail, fiecare este independent de celelalte. Ca atare, o aplicatie diferita poate începe oricare dintre aceste activități (dacă aplicația de e-mail permite). De exemplu, o aplicatie camera poate porni activitatea din aplicația de e-mail pe care compune mail nou, pentru ca utilizatorul să împartă o imagine.
O activitate este implementat ca o subclasă a activității și puteți afla mai multe despre aceasta în ghidul de dezvoltator al activității.
Services
Un serviciu este o componentă care se execută în fundal pentru a efectua operațiuni de lungă de funcționare, sau de a efectua munca pentru procesele de la distanță. Un serviciu nu oferă o interfață de utilizator. De exemplu, un serviciu ar putea juca muzică în fundal în timp ce utilizatorul este într-o aplicație diferită, sau s-ar putea aduce date prin rețeaua fără blocarea interacțiunea utilizatorului cu o activitate. O altă componentă, cum ar fi o activitate, se poate porni serviciul și lăsați-l alerga sau se leaga de ea pentru a interacționa cu ea.
Un serviciu este implementat ca o subclasă a service și puteți afla mai multe despre aceasta în ghidul Servicii dezvoltator.
Broadcast Receivers
Un receptor de difuzare este o componentă care răspunde anunturi de difuzare la nivel de sistem. Multe emisiuni provin din exemplul de sistem pentru, o emisiune anunțând că ecranul sa oprit, bateria este descărcată, sau o imagine a fost capturat. Apps poate iniția, de asemenea, emisiuni-de exemplu, pentru a permite alte aplicații știe că unele date au fost descărcate la aparat și este disponibil pentru ei să folosească. Deși Receptoare de radiodifuziune nu afișa o interfață de utilizator, acestea pot crea o notificare bara de stare pentru a alerta utilizatorul atunci când se produce un eveniment de difuzare. Mai frecvent, însă, un receptor de difuzare este doar un "portal" pentru alte componente și este menită să facă o cantitate foarte minimă de lucru. De exemplu, s-ar putea iniția un serviciu pentru a efectua o muncă în baza eveniment.
Un receptor de difuzare este implementat ca o subclasă a BroadcastReceiver și fiecare emisiune este livrat ca un obiect intenție. Pentru mai multe informații, consultați clasa BroadcastReceiver.
Content Providers
Un furnizor de conținut reușește un set comun de date app. Puteți stoca datele în sistemul de fișiere, o bază de date SQLite, pe web, sau orice alt loc de depozitare persistente aplicația poate accesa. Prin furnizorul de conținut, alte aplicații pot interoga sau chiar modifica datele (dacă furnizorul de conținut permite). De exemplu, sistemul Android oferă un furnizor de conținut care gestionează informațiile de contact a utilizatorului. Ca atare, orice aplicație cu permisiunile corespunzătoare poate interoga parte furnizorul de conținut (cum ar fi ContactsContract.Data) să citească și să scrie informații despre o anumită persoană.
Furnizorii de conținut sunt, de asemenea, utile pentru citirea și scrierea datelor, care este privat aplicația și nu se imparte. De exemplu, nota probei Pad aplicația utilizează un furnizor de conținut pentru a salva note.
Un furnizor de conținut este implementat ca o subclasă a ContentProvider și trebuie să pună în aplicare un set standard de API-uri care permit alte aplicații pentru a efectua tranzacții. Pentru mai multe informații, consultați ghidul de conținut Furnizorii dezvoltator.
Servicii bazate pe Android
Android stă alături de un nou val de sisteme de operare mobile concepute pentru hardware-ul mobil din ce în ce mai puternice. Windows Mobile si iPhone de la Apple ofera acum un mediu mai bogat, simplificat de dezvoltare pentru aplicații mobile. Cu toate acestea, spre deosebire de Android, acestea sunt construite pe sisteme de operare proprietare. Android oferă noi posibilități pentru aplicații mobile, oferind un mediu de dezvoltare deschis construit pe o sursă deschisă kernel Linux. Accesul hardware-ul este disponibil pentru toate aplicațiile printr-o serie de biblioteci API care sunt atent controlate si susținute.
În Android, toate cererile au același statut. Terți și aplicații Android native sunt scrise folosind aceleași API-urile și sunt executate pe același timp alert. Utilizatorii pot elimina și înlocui orice aplicație nativă cu un dezvoltator terț; chiar dialer și acasă ecranele pot fi înlocuite.
Acum este un moment emotionant pentru dezvoltatori mobile. Telefoanele mobile nu au fost niciodată mai populare, și smartphone-uri puternice sunt acum o alegere regulat pentru consumatori. Telefoane elegant și versatil ambalare caracteristicile hardware, cum ar fi GPS, accelerometre, și ecrane tactile sunt o platformă ispititoare pe care se crează aplicații mobile inovatoare.
Hardware Android vor fi proiectate pentru a ispiti consumatorii, dar victorie real este pentru dezvoltatori. Cu dezvoltarea mobile existente construite pe sistemele de operare proprietare care restricționează aplicații de la terți, Android ofera o alternativa deschis și egal. Fără bariere artificiale, dezvoltatorii Android sunt liberi pentru a scrie aplicatii care profită din plin de hardware mobile tot mai puternice. Ca urmare, interesul dezvoltator în dispozitive Android a făcut un eveniment în tehnologia mobilă extrem de anticipat în anul 2008.
Construit pe un cadru open source, și oferind biblioteci SDK puternic și o filosofie deschisă, Android a deschis dezvoltarea de telefon mobil la mii de dezvoltatori care nu au avut acces la instrumente pentru construirea de aplicații mobile. Dezvoltatorii mobile experimentați pot extinde acum în platforma Android, valorificarea caracteristicile unice pentru a îmbunătăți produsele existente sau crearea unora noi inovatoare.
Deoarece Android este un produs, versiune, există doar un număr mic de telefoane mobile disponibile in prezent care îl suportă. Ca în orice eliberare anticipată, există susceptibile de a fi schimbări regulate și îmbunătățiri bibliotecile software și dezvoltare. Explicațiile și exemplele incluse în această carte va oferi fundamentarea și cunoștințele aveți nevoie pentru a scrie aplicații mobile convingătoare folosind SDK curent, împreună cu exibilitatea de a se adapta rapid la îmbunătățiri viitoare.
Suportul de hartă nativ vă permite să creați o serie de aplicații bazate pe hartă. Android vă permite să creați activități interactive care includ hărți Google, ca parte a interfeței de utilizator cu acces complet la hărțile pe care le puteți controla programatic și adnota folosind biblioteca grafică bogată Android.
Servicii bazate pe locație Android gestionează tehnologii precum GPS si tehnologia bazate pe locație de celule GSM Google pentru a determina poziția curentă a dispozitivului. Aceste servicii impun o abstracție de specific detectarea locației tehnologie și vă permit să specificați cerințele minime (de exemplu, acuratețe sau de cost), mai degrabă decât alegerea unui anumit tehnologie. Aceasta înseamnă, de asemenea, că aplicațiile bazate pe locație va funcționa indiferent de ce tehnologie susține receptorul gazdă.
Pentru a combina hărți cu locații, Android include un API pentru înainte și geocodare care vă permite coordonate pentru o adresă, și adresa de poziție.
Android suportă aplicații și servicii destinate pentru a rula invizibil în fundal.
Telefoane mobile moderne sunt de natură dispozitive multifuncționale; Cu toate acestea, dimensiunea lor limitată ecran înseamnă că, în general, numai o cerere interactivă poate fi vizibile în orice moment. Platforme care nu acceptă executarea fundal limita viabilitatea aplicații care nu au nevoie de atenție constantă.
Servicii de fundal face posibilă crearea componentelor aplicației invizibile care realizează prelucrarea automată fără intervenția utilizatorului directă. Executie de fundal permite aplicațiilor să devină determinate de un eveniment și să sprijine actualizări regulate, care este perfect pentru scoruri ale jocurilor de monitorizare sau prețurile pieței, care generează alerte bazate pe locație, sau prioritizarea și pre-de screening apeluri și mesaje SMS.
Hărți, Geocoding, și Servicii de localizare
Strategiile descrise se aplică pe platforma API în Android location. Serviciile de localizare Google API, o parte din Google Play Services, oferă un cadru mai puternic, la nivel înalt, care se ocupă în mod automat furnizorii localizare, mișcare de utilizator și precizie locația. Se ocupa, de asemenea, programarea actualizare locație pe baza unor parametri de consum energetic pe care le furnizați. În majoritatea cazurilor, veți obține o performanță mai bună a bateriei, precum și acuratețea mai adecvate, prin utilizarea API-ulului de localizare.
Una dintre cele mai bune caracteristici de telefoane mobile este portabilitatea lor, asa că nu e de mirare că unele dintre cele mai ispititoare caracteristici Android sunt serviciile pe care vă permit harta de locații fizice.
Puteți crea pe baza de hartă activități folosind Google Maps ca un element de interfață de utilizator. Aveți acces deplin la hartă, permițându-vă să controlați setările de afișare, modificare nivelul de zoom și a muta locația centrat. Utilizarea suprapunerilor, puteți adnota hărți și manipula datele introduse de utilizator pentru a furniza informații și funcționalitate hărții contextualizate.
De asemenea, serviciile bazate pe locație (LBS) – serviciile care vă permit să găsiți locația curentă a dispozitivului. Acestea includ tehnologii precum GPS și tehnologia locație pe bază de celule Google. Puteți specifica locația utilizând în mod explicit nume, sau implicit prin definire un set de criterii în ceea ce privește acuratețea, cost, și alte cerințe.
Hărțile și serviciile bazate pe locație folosi latitudinea și longitudinea pentru a indica locații geografice, dar utilizatorii gândesc în termeni de o adresă. Android oferă un geocoder care acceptă înainte și înapoi geocodare. Folosind geocoderul puteți converti înainte și înapoi între latitudine / longitudine valori și adrese din lumea reală.
Folosit împreună, cartografiere, geocodarea, și servicii bazate pe localizare ccare oferă un set de instrumente puternice pentru încorporarea mobilitții native al telefonului în aplicațiile mobile.
În funcție de dispozitiv, pot exista mai multe tehnologii pe care Android le poate utiliza pentru a determina locația curentă. Fiecare tehnologie, sau locația furnizorulului, va oferi capacități diferite, inclusiv consumul de energie, costul financiar, acuratețe, precum și capacitatea de a determina altitudinea, viteza, sau poziția de informații.
Pentru a obține o instanță a unui furnizor de specific avem:
String providerName = LocationManager.GPS_PROVIDER;
LocationProvider gpsProvider;
gpsProvider = locationManager.getProvider (providerName);
Acest lucru este, în general, util doar pentru a determina abilitățile de un anumit furnizor. Cele mai multe metode de localizare manager necesită doar un nume furnizor pentru a efectua servicii bazate pe localizare.
În cele mai multe scenarii, este puțin probabil că veți dori să alegeți în mod explicit location furnizorulului de utilizat.
Mai frecvent, veți specifica cerințele către un furnizor care trebuie să le îndeplinească și care permite Androidului sa determine cea mai bună tehnologie pentru a utiliza.
Utilizând clasa criteriile se dicteze condițiile unui furnizor în ceea ce privește acuratețea, utilizare de energie (scăzut, mediu, ridicat), costuri, precum și capacitatea de a reveni valori pentru altitudinea, viteza, și care poartă.
Următorul cod crează criteriile care necesită precizie aspru, consum redus de energie, și nu este nevoie de altitudine, rulment, sau viteză. Prestatorul este permis să aibă un cost asociat.
Scopul servicii bazate pe locație este de a găsi locația fizică a dispozitivului.
Accesul la serviciile bazate pe locație este manipulat cu ajutorul Serviciului Location System Manager. Pentru a accesa Location Manager, solicita o instanță a LOCATION_SERVICE folosind metoda getSystemService, așa cum se arată în următorul fragment:
String serviceString = Context.LOCATION_SERVICE;
LocationManager locationManager;
locationManager = (LocationManager) getSystemService (serviceString);
Înainte de a putea utiliza location manager, trebuie să adăugați etichete una sau mai multe utilizări permisiunea de a manifesta pentru a sprijini accesul la hardware LBS.
Următorul fragment arată permisiunile grosiere. Dintre furnizorii implicite, furnizorul GPS necesită permisiunea, în timp ce furnizorul de rețea necesită doar grosier. O aplicație care a fost acordată permisiunea vor avea permisiunea de grosier acordată implicit.
Locația obiectul returnat include toate informațiile poziție disponibil de la furnizorul care a furnizat. Aceasta poate include latitudine, longitudine, rulment, altitudinea, viteza, iar în momentul în care locația fixă a fost luată. Toate aceste proprietăți sunt disponibile folosind metode ajunge pe locația obiectului. In unele cazuri, detalii suplimentare vor fi incluse în Bundle extra.
Cele mai multe aplicații sensibile vor trebui să fie reactive la liber utilizator. Pur și simplu de votare location manager nu se va forța pentru a obține noi actualizări din locația furnizori.
Utilizând metoda requestLocationUpdates pentru a obține actualizări de fiecare dată când actualele schimbări de locație, folosind o LocationListener. LocationListener conțin, de asemenea cârlige pentru schimbări în statutul de furnizor și disponibilitate.
Metoda requestLocationUpdates accepta nici un nume specific locația furnizor sau un set de criterii pentru a determina furnizorului de a utiliza.
Pentru a optimiza eficiență și de a minimiza costul și consumului de energie, puteți specifica, de asemenea, timpul minim și distanța minimă dintre actualizările de schimbare de locație.
Următorul fragment arată codul schelet pentru a solicita actualizări periodice bazate pe un timp minim și distanța.
Geocodare vă permite să traduceți între adrese de străzi și longitudine / latitudine coordonatele hartă. Acest lucru vă poate oferi un context de recunoscut pentru locațiile și coordonatele utilizate în servicii bazate pe locație și pe bază de hărți Activități.
Clasa geocoder oferă acces la două funcții geocodare:
Înainte Geocoding – Găsește latitudinea și longitudinea unei adrese.
Înapoi Geocoding – Găsește adresa străzii pentru o anumită latitudine și longitudine.
Rezultatele de la aceste apeluri vor fi contextualizat, folosind o localizare pentru a define locația obișnuită și limbă. Dacă nu specificați o locație, acesta va presupune implicit locația dispozitivului.
Ambele funcții geocodare returnează o listă de obiecte. Fiecare listă poate conține mai multe rezultate posibile, până la o limită specificați la efectuarea apelului.
Fiecare obiect adresa este populat cu cât mai multe detalii geocoder în măsură să rezolve. Acest lucru poate include latitudinea, longitudinea, numărul de telefon, adresa și datele din ce în ce granulare de la țară, la stradă și numărul casei.
Servicii bazate pe locație, geocoder, și MapViews sunt disponibile pentru a crea aplicații intuitive, de locație caracteristică informațiilor geografice.
Au fost prezentate servicii bazate pe locație, doua poziția geografică actuală a dispozitivului. Puteți, de asemenea sa le folosiți pentru a urmări mișcarea și de a crea alerte de proximitate.
Crearea de aplicații interactive hartă. Utilizarea suprapunerilor și Views, vă adnotat MapViews cu grafica 2D, precum și markeri în formă de OverlayItems și Views (inclusiv ViewGroups și machete).
Geocodare inversă revine adrese de strazi pentru locatii fizice, speci fi de perechi latitudine / longitudine.
Acesta oferă un context de recunoscut pentru locatii returnate de servicii bazate pe localizare.
Pentru a efectua o căutare inversă, treci latitudinea țintă și longitudine cu metoda getFromLocation o geocoder lui. Acesta va reveni o listă de posibile adrese de potrivire. Dacă geocoder nu a putut rezolva orice adrese ed speci fi coordonate, se va intoarce null.
Următorul exemplu arată cum să inversă geocodificată ultima locație cunoscută:
Locul de amplasare = locationManager.getLastKnownLocation (LocationManager.GPS_PROVIDER);
dublu latitudine = location.getLatitude ();
dublu longitudine = location.getLongitude ();
Precizia și granularitatea căutări inverse sunt dependente în totalitate de calitatea datelor în baza de date geocodare; ca atare, calitatea rezultatelor poate varia foarte mult între diferite țări și locales.
Geocodare înainte (sau doar geocodare) determină hartă coordonatele pentru un anumit loc.
Pentru a face o căutare înainte-geocodare, sunați getFromLocationName pe o instanță geocoder. Trece în locația dorită coordonatele și numărul maxim de rezultate pentru a reveni, după cum se arată în fragmentul de mai jos:
Lista <Adresa> rezultat = geocoder.getFromLocationName (aStreetAddress, maxResults);
Lista returnată de adrese poate include mai multe meciuri posibile pentru locația numită. Fiecare rezultat adresa va include latitudine și longitudine și orice informații suplimentare adresa disponibile pentru aceste coordonate. Acest lucru este util pentru a con fi rm că locația corectă a fost rezolvată, precum și furnizarea de adresa speci fi cs atunci când caută repere.
Ca și în cazul geocodării inverse, dacă se constată meciuri, null vor fi returnate. Disponibilitate, acuratețea, și granularitatea rezultatelor geocodare va depinde în întregime de date disponibile pentru zona pe care o căutați.
Când faci înainte căutările, localizarea specifică la crearea obiectului geocoder este deosebit de important. Localizarea oferă contextul geografic pentru interpretarea cereri dvs. de căutare, cât aceleași nume de localizare poate exista în mai multe zone. Acolo unde este posibil, luați în considerare alegerea unui Locale regional pentru a ajuta la evitarea nume loc ambiguitate.
Avantajele folosirii unui sistem GPS:
reducerea costurilor de exploatare pentru vehicule
flotă de vehicule transparentă, previzibilă și controlabilă
minimizarea rulajului în gol
reducerea costurilor administrative,
organizarea optimă a rutelor
control usor si rapid al conducătorilor auto,
un nivel mai ridicat de servicii
monitorizarea vitezei de rulare,
eliminarea drumurilor nepermise
posibilitatea de identificare a șoferilor
separarea drumurilor private și corporative
identificarea responsabililor în cazul infracțiunii sau incidentului,
posibilitatea cererii de ajutor din vehicul pentru șoferi în caz de urgență
monitorizarea rutei si a devierii de pe rută,
monitorizarea temperaturii în spațiul pentru marfă,
monitorizarea nivelului de carburant, precum și detectarea extragerii de carburant din rezervor
acces de oriunde din lume prin intermediul internetului,
investiție redusă în mijloace IT și personal de exploatare,
actualizări de hartă și de baze de date, fără a instala aplicații software
Istoricul UrmarireGPS se întinde pe 5 ani in domeniul tehnologie informației. În 2006, compania a lansat marca UrmarireGPS. Astazi, activitatea UrmarireGPS se desfășoara în domeniile integrare hardware, dezvoltare software, dezvoltare aplicații web și telecomunicații. Analizând cerințele de piață și potențialul tehnologic, specialiștii UrmarireGPS, folosindu-se de experiența acumulata în cadrul companiei au dezvoltat aplicația GPS Live Reporter, parte integrată din produsul UrmarireGPS Professional.
În cadrul procesului de expansiune către piața serviciilor de localizare prin GPS, UrmarireGPS reușește să integreze cu succes o aplicație puternică de monitorizare si raportare (GPS Live Reporter) cu un model de AVL (Automatic Vehicle Locator) de înalta calitate, omologat RAR.
UrmarireGPS Professional vine in sprijinul companiilor cu soluții de eficientizare și optimizare a costurilor implicate în managementul flotelor. Implementarea produsului a adus reduceri de pana la 50% la consumul de carburant, costurile de service și timpii morți (staționări, abateri de la traseu, folosirea vehiculului în interes personal).
Cele mai populare aplicații GPS pentru Android: un top 3 aplicații GPS pentru Android construit dupa impresiile personale in functie de tipul softului folosit. Dacă detineți un smartphone sau o tableta cu sistemul de operare Android, și vă place să călătoriți sau sunteți șofer de meserie atunci puteti folosi una din zecile aplicatii GPS create pentru acest sistem de operare.
Aplicațiile GPS (navigare offline) pentru Android s-au dezvoltat foarte mult în ultimii 2 ani, iar piața este în continuă dezvoltare. Am făcut o prezentare sumară a celor 3 aplicații GPS pentru smartphone sau tableta, aplicații care sunt foarte populare în Europa, și mai mult sau mai puțin la noi în țară unde domină faimosul soft iGO Primo ca primă alegere.
Copilot Live pentru Android
Figura 2.2. Copilot Live pentru Android [6]
Aplicația costă ceva banuți dar se merită, sau o putem instala prin alte metode. Google și Wikipedia sunt integrate, astfel că avem o bază de puncte de interes aproape nelimitată.
Conectăm smartphone-ul la internet (prin rețea 3G sau Wi-fi) cautam pe Wikipedia sau Google un restaurant, un muzeu, etc si vom primi indicații de navigare până în acel loc.
Aplicația este de asemenea sincronizata cu Facebook, astfel ca putem naviga foarte ușor către locația unui prieten. Copilot este o aplicație LIVE. Primim în timp real informații despre trafic, informatii despre condițiile meteo sau informații despre prețul combustibilului.
Rutarea este foarte bună, traseele sunt intuitive și aplicația ține cont de toate datele din trafic dar exista și câteva puncte slabe: Copilot Live consuma foarte repede acumulatorul smartphone-ului, și e puțin mai greu de configurat într-un mod personal; Necesită conexiune Internet 3G pentru a beneficia de punctele forte ale aplicației.
Navigon Europe
Figura 2.3. Navigon Europe [6]
O alta aplicație foarte populară în Europa și la noi este Navigon.
Folosind hărți de la Navteq (la fel ca și iGO Primo) Navigon ne ghidează într-un mod admirabil cu pana la 4 rute alternative la alegere. Interfața este simplă, cu butoane micuțe și cu meniuri clasice: pentru alegerea opțiunilor de baza și suplimentare.
Dupa ce învățăm să lucrăm în acest meniu descoperim că este o aplicație GPS Android calsică și organizarea opținuilor este eficientă și ușor de asimilat. Ghidarea vocala este mai bine lucratș fața de alte aplicații iar alertele de trafic disponibile sunt anunțate în timp rapid pentru reconfigurarea unei rute.
O alta funcție bine pusă la punct este Active Lane assistant care ne avertizează prompt când nu suntem încadrați pe banda corectă, sau la fel când suntem nevoiți se ne încadram pe o altă bandă de circulatie.
Un minus alt softului cel puțin pentru România este prețul mare comparat la venitul mediu din țara noastră.
WisePilot pentru Android
Figura 2.4. WisePilot pentru Android [6]
Este un soft GPS pentru smartphone și tabletă care este puțin cunoscut la noi, dar foarte popular în Europa. WisePilot este foarte popular în primul rând pentru că este una din cele mai compatibile aplicații pentru Android rulând pe foarte multe smnartphone-uri și tablete fără a întâmpina probleme de afișare, sau diferite bug-uri.
Interfața e foarte bine lucrată, avem 4 iconuri principale mari pe un fond luminos,de unde putem alege locația favorita,vizualizarea harții sau o căutare unică apăsând butonul More: putem căuta Places, Person, Business Address si Intersection.
Căutarea după Intersection este foarte utilă când nu avem date exacte despre destinație. Harta rutiera pentru România este bună, cu ceva probleme în localitațiile mici la fel, dar asta este o problemă intâlnită la foarte multe aplicații GPS.
În schimb în orașele mari, baza de date este foarte bună, cu numere de locuințe și o baza de date de puncte de interes foarte bună. Wisepilot folosește ca și Navigon furnizorul de hărți Navteq de aceea rutarea este oarecum asemănătoare.
Afișarea hărții și rutei pe ecran este oarecum simplistă, WisePilot a redus din brizbriz-urile grafice pentru a fi compatibilă și cu telefoane mai slabuțe, sau mai vechi. În schimb avem informațiile de bază, ghidare vocală este corectă și avem 2 funcții bune: un asistent pentru selecția benzii de rulare, si JunctionView – care ne ofera o vizualizare mai buna a intersecțiilor.
Ceea ce rulează în spatele aplicațiilor
Din cauza dimensiunii ecranului limitat de cele mai multe dispozitive mobile, de obicei, o singură cerere este vizibilă și activă pe un dispozitiv la un moment dat. Aceasta oferă un mediu perfect pentru aplicații care rulează în fundal, fără o interfață – răspunde la evenimente, de votare pentru date, sau actualizarea furnizorilor de conținut.
Android oferă clasa de servicii pentru a crea componente de aplicații în mod specific și să se ocupe de operațiunile și funcționalitățile care ar trebui să ruleze în tăcere, fără user interface. Acordurile dintre Android și servicii au o prioritate mai mare decât activități inactive, astfel încât acestea sunt mai puțin susceptibile de a fi ucise atunci când sistemul necesită resurse. De fapt, ar trebui timp pentru a nu termina prematur un serviciu care a fost pornit, acesta va fi repornit imediat ce sunt disponibile resurse suficiente. Prin utilizarea serviciilor, ne putem asigura că aplicațiile continuă să ruleze și să răspundă la evenimente, chiar și atunci când nu sunt în uz activ.
Serviciile care rulează fără un GUI dedicat, dar, la fel ca activitățile și broadcast receivere, ei încă execută în firul principal al procesului aplicației. Pentru a ajuta la menținerea aplicațiilor receptive, trebuie să se mute consumatoare de timp a proceselor (cum ar fi căutările de rețea) în fire de fundal.
Android oferă mai multe tehnici de componente de aplicare (în special servicii) pentru a comunica cu utilizatorii fără activitate oferi o interfață directă. Am descris cum să utilizăm notificările și toasts utilizatorilor politicos să alertă și de actualizare, fără a întrerupe aplicația activă.
Figura 2.5. Arhitectura Android-ului [5]
Toasturile sunt un tranzitor, non-modal mecanism de dialog-box utilizat pentru a afișa informații pentru utilizatori fără fura focus din aplicația activă. Veți învăța să afișați toasts la orice componentă aplicație pentru a trimite mesaje mai puțin deranjante de pe ecran pentru a utilizatorilor.
Unde toast-urile sunt tăcut și tranzitorii, notificările reprezintă un mecanism mai robust pentru alertarea utilizatorilor. Pentru mulți utilizatori, atunci când nu le utilizați în mod activ telefoanele lor mobile, ei stau tăcut și nesupravegheat într-un buzunar sau pe un birou până când sună sau vibrează. Ar trebui un utilizator de aceste alerte, icoane bara de stare sunt folosite pentru a indica faptul că a avut loc un eveniment. Toate aceste antichități sunt disponibile în android ca notificări.
Alarmele furnizate de un mecanism la ore stabilite, în afara controlului a ciclului de viață aplicație. Am descris utilizarea alarmelor pentru a începe services, activități deschise, sau intențiile de difuzare bazate fie pe ceasul sau timpul scurs de la dispozitiv de pornire. O alarmă, chiar și după aplicarea sa proprietar a fost închisă, și poate (dacă este necesar) trezi un dispozitiv de somn.
Spre deosebire de activități, care prezintă o interfață grafică bogată pentru utilizatori, serviciile rulate în fundal – actualizarea furnizorii de conținut,notificări. Ele sunt modul perfect de a efectua prelucrarea regulat sau trata evenimente, chiar și după activitățile aplicației sunt invizibile, inactive sau au fost închise.
Cu nici o interfață vizuală, serviciile sunt pornite, oprite, și controlate de alte componente de aplicare inclusiv alte servicii, activități, și de difuzare receptoare. Dacă cererea dumneavoastră în mod regulat, sau continuu, efectuează acțiuni care nu depind direct de date introduse de utilizator, serviciile pot fi răspunsul.
Servicii începute sunt de o prioritate mai mare decât activități inactive sau invizibile, făcându-le mai puțin probabil să fi reziliat de management timp rulat de resurse. Singura dată când Android va opri un serviciu prematur este atunci când este singura cale pentru o activitate de prim-plan pentru a obține resursele necesare; dacă acest lucru se întâmplă, serviciul va fi repornit automat atunci când devin disponibile resurse.
Aplicațiile care actualizează în mod regulat, dar numai rareori sau intermitent nevoie interacțiunea cu utilizatorul sunt buni candidati pentru punerea în aplicare în servicii. MP3 playere și monitoare sport sunt exemple de aplicații care ar trebui să continue să ruleze și să actualizeze fără o componentă vizuală interactivă (Activity) vizibil.
Alte exemple pot fi găsite în sine stiva software; Android pune în aplicare mai multe servicii, inclusiv Locația Manager, Media Controller și notificările.
Serviciile sunt concepute pentru a rula în fundal, astfel încât acestea trebuie să fie pornit, oprit, și controlate de alte componente de aplicare.
În următoarele secțiuni, am descris cum să creăm un nou serviciu, și cum să înceapă și să se oprească prin utilizarea punctelor de metoda startservice. Am arătat cum să delegăm un serviciu pentru o activitate, oferind o interfață mai bogată pentru interactivitate.
Utilizarea fire de fond este vitală, pentru a evita "Application inactiv" caseta de dialog. Lipsă de reacție este definit în Android ca activități care nu răspund la un eveniment de intrare (cum ar fi apăsarea unei taste) în termen de 5 secunde.
Utilizați fire de fond pentru prelucrare consumatoarelor de timp, inclusiv firul operațiunilor, căutările de rețea, tranzacții de baze de date, și calcule complexe.
Notificările sunt o modalitate pentru aplicațiile dvs. pentru a alerta utilizatorii, fără a utiliza o activitate. Notificările sunt gestionate de managarul de notificări. și includ în prezent capacitatea de a:
afișa informații suplimentare (și să lanseze un intenție) în fereastra extins bara de stare.
Flash lumini / LED-uri.
Vibrații telefon.
Sunet alerte sonore (tonuri de apel, magazin media sunete).
Notificările sunt modul preferat pentru componentele aplicației invizibile (Broadcast Receivere, Servicii, și Activități inactive) pentru a alerta utilizatorii care au avut loc evenimente care necesită o atenție.
Ca o interfață de utilizator metaforă, notificările sunt deosebit de bine adaptate pentru dispozitive mobile. Este probabil că utilizatorii vor avea telefoanele lor cu ei în orice moment, dar destul de puțin probabil că acestea vor fi atent la ei, sau cererea dumneavoastră, în orice moment. În general, utilizatorii vor avea mai multe aplicații deschise în fundal, și nu vor fi atent la nici una dintre ele.
În acest mediu, este important ca aplicațiile să poată alerta utilizatorii atunci când apar speci fi evenimente care necesită atenția lor.
Notificările pot să fi persistat prin repetiție insistentă, sau (mai frecvent), prin utilizarea o pictogramă pe bara de stare. Icoane în bara de stare poate fi actualizat în mod regulat sau extins pentru a afișa informații suplimentare, folosind fereastra de bară.
Modelul de securitate Android și conceptul securității
Am facut câteva notări despre modelul cerere-securitate Android, care este o parte fundamentală a platformei Android. În Android securitatea cuprinde toate fazele ciclului de viață de aplicare, de considerente politice, de design, de timp al rulării controale de frontieră.
În ceea ce privește implementarea, aplicațiile Android trebuie să fie semnate cu un certificat digital, pentru a le instala pe un dispozitiv. În ceea ce privește executarea, Android rulează fiecare cerere în cadrul unui proces separat, fiecare are un ID de utilizator unic și permanent (atribuit la instalare). Acest lucru pune o limită în jurul procesului și previne o aplicație de a avea acces direct la datele altuia.
În plus, Android definește un model de permisiune declarativ care protejează caracteristici sensibile (cum ar fi lista de contacte) și ofere o imagine de ansamblu a unora dintre conceptele de securitate
Android prevede ca cererile să fie semnat cu un certificat digital. Unul dintre avantajele acestei cerințe este că o cerere nu poate fi actualizat cu o versiune care nu a fost publicat de către autorul original. Dacă vom publica o cerere, de exemplu, atunci nu se poate actualiza aplicația noastră cu versiunea dvs. (cu excepția cazului, desigur, să obțineți într-un fel de certificat nostru).
Semnarea unei cereri cu un certificat digital. Un certificat digital este un artefact care conține informații despre tine, cum ar fi numele companiei, adresa, și așa mai departe. Câteva atribute importante ale unui certificat digital include semnatura acestuia și chei publice / private. O cheie publică / privată este, de asemenea numit o pereche de chei. Rețineți că, deși utilizați certificate digitale aici pentru a semna .apk fișiere, puteți, de asemenea, să le utilizeze în alte scopuri (cum ar fi de comunicații criptate). Puteți obține un certificat digital de la o autoritate de certificat de încredere (CA) și puteți genera, de asemenea, un singur folosind instrumente, cum ar fi keytool, pe care vom discuta în scurt timp. Certificatele digitale sunt stocate în depozitele de chei. Un depozit de chei conține o listă de certificate digitale, fiecare dintre care are un alias pe care o puteți utiliza pentru a se referi la acesta în chei.
Semnarea o aplicatie Android nevoie de trei lucruri: un certificat digital, un fișier .apk, și o utilitate care știe cum să se aplice o semnătură digitală la dosar .apk. După cum veți vedea, vom folosi un utilitar gratuit care face parte din Java Development Kit (JDK) distribuția numit jarsigner. Acest utilitar este un instrument de linie de comandă, care știe cum să semneze un fișier .jar folosind un certificat digital.
Acum, să mergem mai departe și să vorbim despre modul în care vă puteți înscrie un fișier .apk cu un certificat digital.
Pentru a instala o aplicație Android pe un dispozitiv, trebuie mai întâi să semneze pachetul Android (.apk fișier) utilizând un certificat digital. Certificatul, cu toate acestea, poate fi auto-semnat, nu aveți nevoie de a cumpăra un certificat de la o autoritate de certificare, cum ar fi VeriSign.
Semnarea cereri dumneavoastră de implementare presupune trei etape. Primul pas este de a genera un certificat keytool (sau un instrument similar). A doua etapă implică ajutorul funcției jarsigner să semneze fișierul .apk cu certificatul generat. Al treilea pas aliniază porțiuni de aplicare pe limitele de memorie pentru memorie mai eficiente
Utilizarea atunci când rulează pe un dispozitiv. Rețineți că, în timpul dezvoltării, ADT plug-in pentru Eclipse are grijă de totul pentru tine: semnarea fișierul .apk și de a face alinierea memorie, înainte de implementarea pe emulator sau un dispozitiv.
Utilitarul keytool gestionează o bază de date de chei private și certificatele lor corespunzătoare (un standard de certificate digitale). Acest navele de utilitate cu JDK și se află în directorul bin JDK.
Am descris mai jos generarea unei chei cu o singură intrare:
1. Creați un folder de a deține chei, cum ar fi c: \ Android \ eliberare \.
2. Deschideți o fereastră instrumente, și executa utilitarul keytool cu parametrii
Documentația Android recomandă să specificați o perioadă de valabilitate suficient de lungă pentru a depasi intreaga durata de viata a cererii, care va include mai multe actualizări cererea. Se recomandă ca validitatea fie de cel puțin 25 de ani. Dacă aveți de gând să publice cererea de pe Android Market, certificatul va trebui să fie valabil, prin cel puțin 3 iulie 2034. Android Market verifică fiecare aplicație, atunci când încărcat pentru a se asigura că va fi valabilă cel puțin până atunci.
Deoarece certificatul în orice actualizare aplicație trebuie să se potrivească certificatul folosit prima dată, asigurați-vă că fișierul depozit de chei este protejat Dacă îl pierzi și nu se poate recrea, nu veți putea actualiza aplicația, și va trebui să emită o cerere cu totul nou în loc.
Spre deosebire de mediul desktop, în cazul în care cele mai multe dintre cererile rula sub același ID de utilizator, fiecare aplicație Android general ruleaza sub propria ID unic. Prin rularea fiecare cerere sub un alt ID, Android creează o delimitare de izolare în jurul fiecare proces. Acest lucru previne o aplicație să acceseze direct datele altă aplicație lui.
Deși fiecare proces are o limită în jurul ei, schimbul de date între aplicații este în mod evident posibil, dar trebuie să fie explicit. Cu alte cuvinte, pentru a obține date de la o altă aplicație, trebuie să treacă prin componentele acestei cereri. De exemplu, puteți interoga un furnizor de conținut de o altă aplicație, puteți invoca o activitate într-o altă aplicație, sau după cum veți vedea în capitolul 15, puteți comunica cu un serviciu de altă aplicație. Toate aceste facilități oferă metode pentru a vă împărtăși informații între aplicații, dar fac acest lucru într-un mod explicit că nu accesa direct care stau la baza de date, fișiere, și așa mai departe.
Securitate Android la limita proces este clar și simplu. Lucrurile devin interesante când începem să vorbim despre protejarea resurselor (cum ar fi date de contact), caracteristici (cum ar fi camera dispozitivului), și propriile noastre componente. Pentru a oferi această protecție, Android definește un sistem de permisiune. Să diseca acum.
Android definește un sistem de permisiunea menit să protejeze resursele și caracteristici pe dispozitiv. De exemplu, aplicațiile, implicit, nu se poate accesa lista de contacte, efectua apeluri telefonice, și așa mai departe. Pentru a proteja utilizatorul de aplicații malware, Android necesită aplicații să solicite permisiuni, dacă au nevoie de a utiliza o facilitate protejată sau resurse. După cum veți vedea în curând, cereri de permisiune merge în fișierul manifest. Instala în timp, programul de instalare APK fie subvenții sau refuză permisiunile solicitate, pe baza semnarea fișierului .apk și / sau feedback-ul din partea utilizatorului. Dacă nu se acordă permisiunea, orice încercare de a executa sau accesa funcția asociată va duce la un eșec permisiune.
Android vă permite să definiți permisiuni personalizate cu cererea dumneavoastră. De exemplu, dacă ai vrut pentru a împiedica anumiți utilizatori de la incepand de una dintre activitățile în cererea dumneavoastră, ai putea face asta prin definirea permisiunea personalizat. Pentru a utiliza permisiuni personalizate, le declara pentru prima dată în fișierul AndroidManifest.xml. După ce ați definit o permisiune, puteți face referire apoi la ea ca parte a definiției dumneavoastră componente. Vă vom arăta cum funcționează acest lucru.
Să creați o aplicație care conține o activitate care nu toată lumea este permis pentru a începe. In schimb, pentru a începe activitatea, un utilizator trebuie să aibă o anumită permisiune. Odată ce aveți aplicația cu o activitate privilegiat, puteți scrie un client care știe cum să cheme activitatea.
Descrierea aplicației
Aplicația dezvoltată are ca scop monitorizarea unui autovehicul folosind un smart phone cu sistem de operare de tip Android, aplicația înregistrează și monitorizează traseul unui autovehicul și salvarea datelor pentru a putea fi vizualizate sau analizate mai târziu, aplicația folosește GPS-ul telefonului, API furnizat de google maps și internetul.
Aplicația la instalare va cere acces la Internet și GPS:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Dupa pornirea aplicației și apăsarea butonului Meniu voi avea următoarea afișare:
Figura 3.1. Interfața aplicației
Mai jos am descris pas cu pas utilizarea aplicației și vom începe cu butonul Start GPS, acest buton va accesa GPS-ul telefonului, va lua locația curentă și va inregistra toate mișcările utilizatorului până la apăsarea butonului de Stop Gps.
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MenuId.START_GPS:
trace("Menu – Start GPS");
if (!this.location_enalbed) {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 10, this); // 20(sec), 10(meter)
myOverlay.enableMyLocation();
myOverlay.enableCompass();
message("Start GPS");
this.location_enalbed = true;
item.setTitle("Stop GPS");
} else {
lm.removeUpdates(this);
myOverlay.disableCompass();
myOverlay.disableMyLocation();
message("Stop GPS");
this.location_enalbed = false;
item.setTitle("Start GPS");
}
break;
Butonul Last Location afișează ultima locație care a fost înregistrată de utilizator:
Figura 3.1. Ultima locație
case MenuId.LAST_LOCATION:
trace("Menu – Last Location");
if(log.size() > 0){
LogPoint p = log.lastPoint();
double lat = p.getLatitudeE6()/1E6;
double lon = p.getLongitudeE6()/1E6;
message("last lat:" + Double.toString(lat) + ", lon:" + Double.toString(lon));
this.setPosition(lat, lon, this.zoom_default);
}
else{
new AlertDialog.Builder(this).setMessage("No Logs. Please Start GPS").setPositiveButton("OK", null).show();
}
break;
Butonul Zoom face zoom in și zoom out în funcție de preferințele și nevoile utilizatorului:
case MenuId.SET_ZOOM:
trace("Menu – Set Zoom");
MapController mc = map.getController();
mc.setZoom(this.zoom_default);
break;
Butonul Satelite/Map oferă utilizatorului posibilitatea de a alege două tipuri diferite de afișare a hărților ROADMAP (normal, default 2D map) și SATELLITE (photographic map).
Figura 3.3. Mod vizualizaree hartă
Butonul Hide Log face posibilă ascundere traseului ca utilizatorul să poată vedea harta fără traseul precedent.
case MenuId.LOG_TOGGLE:
trace("Menu – Log Toggle : " + !log_enabled);
if (this.log_enabled != true) {
map.getOverlays().add(logOverlay);
item.setTitle("Hide Log");
message("logs: " + Integer.toString(log.size()));
log_enabled = true;
} else {
map.getOverlays().remove(logOverlay);
item.setTitle("Show Log");
log_enabled = false;
}
map.invalidate(); // Immediately redraw
break;
Butonul Mai Multe apeleză mai multe controlere: Select Log, Line Color și Export Log.
Figura 3.4. Meniul Mai multe
Butonul Select Log oferă utilizatorului posibilitate de a vizualiza toate traseele care au fost înregistrate de aplicație.
public GpsLog(GpsTracker context){
this.context = context;
this.r = 255;
this.g = 0;
this.b = 0;
this.points = new ArrayList<LogPoint>();
if (this.hasSdCard()){
this.dataDir = new File(this.getDir());
context.trace("data dir : "+ dataDir.getPath());
}
else{
context.trace("SD Card not Found");
new AlertDialog.Builder(context).setMessage("this app uses SD Card").setPositiveButton("OK", null).show();
}
try{
this.loadLog();
}
catch(Exception e){
Log.e("GpsTracker", e.getMessage());
}
}
Figura 3.5. Select Log
Butonul Line Color oferă utilizatorului posibilitate de a alege culoare traseului având trei culori diferite: Roșu, Verde și Albastru:
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch(which){
case 0:
log.setR(255);
log.setG(0);
log.setB(0);
break;
case 1:
log.setR(0);
log.setG(255);
log.setB(0);
break;
case 2:
log.setR(0);
log.setG(0);
log.setB(255);
break;
}
Figura 3.5. Meniul de culori
Butonul Export Log oferă posibilitate de a alege locația unde va fi exportat logul care conține cordonatele stocate.
public void onClick(DialogInterface dialog, int which) {
try{
String name = log.fileNames()[which];
if(!log.hasSdCard()) return;
String fullName = log.getDir() + "/" + name;
Intent it = new Intent();
it.putExtra(Intent.EXTRA_SUBJECT, "GpsTracker Log: " + name);
it.setAction(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + fullName));
it.setType("text/plain");
gpsTracker.startActivity(it);
}
catch(Exception e){
Log.e("GpsTracker", e.getMessage());
}
}
Figura 3.6. Export traseu
Bibliografie
https://developers.google.com/maps/documentation/javascript/maptypes
Google Maps JavaScript API Cookbook by A. Dincer & B. Uraz, (Dec 2013)
https://www.google.com/intx/en/work/mapsearth/products/mapsapi.html
http://blogs.technet.com/b/inside_microsoft_research/archive/2013/09/25/inside-power-map-s-latest-update.aspx
Professional Android Application Development, Reto Meier, Published by Wiley Publishing, Inc., www.wiley.com
http://gpszone.ro/articles.php?article_id=50
Pro Android 4 by Satya Komatineni; Dave MacLean; Apress, (2012)
Bibliografie
https://developers.google.com/maps/documentation/javascript/maptypes
Google Maps JavaScript API Cookbook by A. Dincer & B. Uraz, (Dec 2013)
https://www.google.com/intx/en/work/mapsearth/products/mapsapi.html
http://blogs.technet.com/b/inside_microsoft_research/archive/2013/09/25/inside-power-map-s-latest-update.aspx
Professional Android Application Development, Reto Meier, Published by Wiley Publishing, Inc., www.wiley.com
http://gpszone.ro/articles.php?article_id=50
Pro Android 4 by Satya Komatineni; Dave MacLean; Apress, (2012)
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Localizarea Si Monitorizarea Unui Autovehicul Folosind Api (ID: 149980)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
