proiect GPS Tracker permite cineva pentru a urmări un GPS activat telefon mobil folosind Google Maps. Pentru acest proiect am folosit un telefon mobil Motorola i355 pe rețeaua Sprint / Nextel.
Trebuie să aveți un plan de date, astfel încât să puteți face actualizări pe site-ul dvs. de la telefonul. Vă rugăm să citiți fișierul README.txt din descărcarea de instrucțiuni de instalare. Sper să vă bucurați proiectul. Dacă aveți întrebări, nu ezitați să le cereți pe forum.
Există două proiecte disponibile. Primul proiect este construit cu .NET și Microsoft SQL Server. Al doilea proiect este construit cu PHP si MySQL. Dacă aveți sugestii, vă rugăm să nu ezitați să mă lase să știu. Ambele proiecte folosi java (J2ME), la telefon.
Cum Functioneaza:
Nici unul dintre codul pentru acest proiect este foarte dificil, dar nu cuprind o serie de niveluri și limbi care pot fi necunoscut pentru unii. Figura 1 arată fluxul de date de la telefon la Google map.
Telefon
Să începem cu codul de pe telefon. Această aplicație este scris în Java folosind Java 2 Micro Edition (J2ME). Java este foarte similar cu C #. După cum te uiți prin codul, singurul lucru care ar putea confunda un C # programator este vectorul. Un vector java este destul de mult un C # ArrayList, o gamă dinamică. Există 2 clase în aplicația, LBSMidlet7 și Qworker. Un MIDlet este o aplicație care rulează pe telefoanele mobile. Aruncăm o privire la definiția de clasă. Se extinde clasa MIDlet și pune în aplicare o interfață LocationListener. Asta înseamnă că avem nevoie pentru a pune toate definițiile metoda de care interfață în clasa noastră. Vom ajunge la asta într-un pic, acum să ne uităm la constructorul.
Facem 2 lucruri in constructor. Vom crea un obiect QWorker și să-l "această" și site-ul care vom fi încărcarea la. Metoda getAppProperty devine atribute din fișierul JAD. Deschideți fișierul JAD în editorul de texte favorit și nu veți vedea pagina web pe care le veți trimite date GPS pentru. Observați cum ne trece "acest" la obiect GWorker? Asta e obiectul LBSMidlet7. Aruncati o privire rapidă la clasa QWorker, se extinde clasa Subiect. De aceea noi numim worker.start () în constructorul LBSMidlet7. Vrem să înceapă fir nostru muncitor.
Când porniți un fir, ceea ce faci este crearea unui obiect si apoi rularea run () metodă care obiect. Aruncăm o privire la metoda run. Acesta are o buclă fără sfârșit și în bucla primul lucru ce face este queue.wait numesc (). Uită-te la definirea coada. Coada este un tip de date abstract (ADT), doar ca o coadă la o bancă, introduceți coada în spatele liniei și se lasă coada atunci când vei ajunge în fața liniei. Uită-te la definirea coadă, e vectorul nostru (matrice dinamic). Când apelați wait () pe un obiect dintr-o clasă care extinde clasa fir, se pune ca obiect să doarmă. Gândiți-vă că un pic. Când ne-am lovit acea linie, obiectivul nostru QWorker acum asteapta ... Ce-l asteapta? Vom ajunge la asta într-un minut. Înainte de a face acest lucru, să ia o privire la cheie sincronizate. Observați că este ambalaj coada. Ceea ce nu este pune un sistem de blocare pe coada și spune toate celelalte procese nu atingeți coada până la acea mica bloc de cod se face cu ea.
Ok, deci acum am început un fir lucrător și pune-l la culcare. Să ne întoarcem acum la clasa LBSMidlet7 și să ia o privire la metoda startApp (). În ciclul de viață al unui MIDlet, constructorul este numit o dată și apoi metoda startApp () este numit în continuare. De fapt, poate fi numit de mai multe ori, ca, de exemplu, atunci când închideți un telefon cu clapeta, apoi deschideți-l din nou. Ce se întâmplă este că aplicația este suspendată și atunci când întoarceți telefonul deschis din nou, startApp () este numit din nou. In startApp (), vom ajunge de afișare noastră și apoi vom crea o LocationProvider dacă nu a fost deja creată și vom crea un alt thread ... ce ne crea toate aceste fire? Buna intrebare. Atunci când un MIDlet (app) este suspendat, firele o cercetare care sunt create continua să fie difuzate. Care ne permite să obțineți datele noastre GPS și trimite-l la serverul nostru în timp ce facem alte chestii importante, cum ar fi apeluri telefonice make.
LocationProvider este ceea ce devine datele noastre GPS. Mai întâi vom crea un criteriu, suntem folosind implicit, dar puteți seta chestii de genul precizie, timp de răspuns etc. În continuare vom crea nostru de amplasare Ascultător. E destul de mult doar ceea ce se pare ca. Aici puteți seta intervalul de cât de des doriți să obțineți date GPS. Este setat în prezent la 60, care este în secunde. Când datele vine, metoda locationUpdated () se numește. Acesta este un alt una dintre metodele necesare în interfața LocationListener. Aici vom crea un alt fir și apelați getLocation (). GetLocation () metoda primeste coordonatele GPS, creează o querystring care vom trimite la serverul de web un pic mai târziu și apoi solicită worker.addToQueue în clasa QWorker.
Să ne întoarcem pe la clasa QWorker și a vedea ce se întâmplă în această metodă. Adauga querystring la coada și apoi solicită queue.notify (). Ghici ce queue.notify () nu? Se trezeste fir nostru dormit QWorker și spune că pentru a ajunge la locul de muncă! Observați că apelurile noastre la coada sunt din nou înfășurat într-un bloc sincronizat. Vă rugăm practica filetat sigur ... Când notificare () este numit pe un fir, ceea ce face este reveni la metoda run () și să execute următoarea linie de cod imediat după care am spus coada sa astepte (). Deci, acum suntem aproape gata să trimită datele GPS pentru serverul de web. Avem o serie de linii interesante de cod acolo. În primul rând numim peekInQueue (), care devine querystring din coada, dar lasă-l acolo pentru moment. Apoi, trimite querystring la metoda getUrl care încearcă să trimită querystring la serverul nostru web. Dacă e de succes, putem elimina querystring din coada. Dacă nu, plecăm querystring în coada de așteptare și să încerce să-l trimită la serverul web din nou mai târziu.
De ce în lume nu avem această coadă complicat aici? Mă bucur că ai întrebat. Pot exista momente când primiți datele GPS, dar nu sunt de fapt într-o zonă care are o conexiune telefon mobil. Dacă nu avem o conexiune telefon mobil, nu putem trimite datele noastre GPS la server-ul nostru. Deci rămânem querystring noastră în coada noastră și să așteptăm până când ne întoarcem într-o zonă cu posibilitatea conectării telefon mobil. Poti sa ma auzi acum?
Ei bine, am petrecut un pic destul de corectă a timpului explica codul telefonului. E un pic mai complicat, dar este important să știi ce se întâmplă dacă doriți să luați codul și face modificări la acesta pentru a se potrivi nevoilor dumneavoastră. Iată un articol bun pe site-ul Sun pentru a vă informa despre mai multe capabilități de servicii Locul de amplasare Bazat API. Chiar acum, querystring noastră ar trebui să fie de a ajunge la site-ul nostru, să ajungă din urmă să-l și a vedea ce se întâmplă.
Ce este nou în această versiune:
Detalii soft:
Versiune: 0.3.1
Incarca data: 2 Jun 15
Licenţă: Gratuit
Popularitate: 5
Comentariile nu a fost găsit