Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete...

60
UNIVERSIT ` A degli STUDI di ROMA TOR VERGATA Ingegneria dell’Informazione - Ind. Sistemi Sviluppo di un applicativo di localizzazione GPS per Google Android FRANCESCO SERAFINI Relatore: Prof.ssa Berta Buttarazzi Anno Accademico 2008 / 2009

Transcript of Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete...

Page 1: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

UNIVERSITA degli STUDI di ROMATOR VERGATA

Ingegneria dell’Informazione - Ind. Sistemi

Sviluppo di un applicativo di

localizzazione GPS per

Google Android

FRANCESCO SERAFINI

Relatore:

Prof.ssa Berta Buttarazzi

Anno Accademico 2008 / 2009

Page 2: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Indice

Prefazione 3

Introduzione 4

1 Concetti di base 6

1.1 GIS - Geographical Information System . . . . . . . . . . . . . 7

1.1.1 Funzionamento dei sistemi GIS . . . . . . . . . . . . . 8

1.2 Aree di applicazione . . . . . . . . . . . . . . . . . . . . . . . 10

1.3 Geolocalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.1 GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.2 NMEA . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.4 Peer to peer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4.1 Localizzazione . . . . . . . . . . . . . . . . . . . . . . . 15

1.4.2 STUN . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.5 Comunicazione mobile . . . . . . . . . . . . . . . . . . . . . . 15

1.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.5.2 GPRS - UMTS . . . . . . . . . . . . . . . . . . . . . . 18

2 Descrizione del progetto 20

2.1 Dispositivi mobili . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.1.1 Acquisizione della posizione . . . . . . . . . . . . . . . 21

2.1.2 Connettivita verso la rete . . . . . . . . . . . . . . . . 21

2.1.3 Funzionamento del dispositivo all’interno di una rete . 21

2.2 Nodo centrale . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Sviluppo del progetto 23

3.1 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2 Fasi di sviluppo dell’applicativo . . . . . . . . . . . . . . . . . 25

3.2.1 Mappe . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1

Page 3: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

INDICE 2

3.2.2 Sviluppo del supernodo . . . . . . . . . . . . . . . . . . 32

Conclusioni 34

Appendici 36

A Creazione dell’interfaccia 36

A.1 Android Manifest . . . . . . . . . . . . . . . . . . . . . . . . . 36

A.2 R.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

B Android e Google Maps 39

B.1 AndroidMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

B.2 MapOverlay . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

B.3 MyLocationListener . . . . . . . . . . . . . . . . . . . . . . . . 51

C Altre classi di utilita 53

C.1 HTTPSend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

C.2 Punto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

C.3 Utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Bibliografia 59

Page 4: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Elenco delle figure

1.1 Somma di layer che rappresentano una mappa . . . . . . . . . 7

1.2 Proiezione dati GIS sulla mappa . . . . . . . . . . . . . . . . . 8

1.3 Esempio di dati raster . . . . . . . . . . . . . . . . . . . . . . 9

1.4 Satelliti intorno alla terra . . . . . . . . . . . . . . . . . . . . 11

1.5 Rappresentazione di una rete P2P . . . . . . . . . . . . . . . . 14

1.6 Funzionamento del protocollo STUN . . . . . . . . . . . . . . 16

1.7 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.8 Piu dispositivi connessi ad un access point Wi-Fi . . . . . . . 17

1.9 GPRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1 Rappresentazione grafica del progetto . . . . . . . . . . . . . . 20

3.1 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2 Schermata in stand-by del sistema operativo Google Android . 25

3.3 Rappresentazione di un punto sulla mappa . . . . . . . . . . . 27

3.4 Piu utenti presenti nel sistema . . . . . . . . . . . . . . . . . . 28

3.5 Cliccando sul punto, viene visualizzato l’indirizzo e coordinate 29

3.6 Si puo fare lo Zoom fino alla posizione desiderata . . . . . . . 30

3.7 Passare alla visualizzazione via satellite . . . . . . . . . . . . . 31

3

Page 5: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Prefazione

Negli ultimi 5 anni si e registrata una crescita continua di servizi web per

la pianificazione di viaggi e vacanze. Questa crescita ha portato sempre piu

persone ad organizzare le proprie vacanze in autonomia, con un sensibile de-

cremento della spesa e senza la necessita di intermediari (agenzie di viaggio

ecc..). Societa come Lastminute.com, Expedia.it, o le stesse compagnie aeree,

permettono a chiunque, con facilita, di prenotare voli o notti in albergo at-

traverso il web. Questo fenomeno ha modificato sensibilmente l’approccio di

molte persone nei confronti delle proprie vacanze, portandole a svincolarsi dal

concetto di viaggio organizzato, con riferimenti, orari e luoghi solitamente pre-

fissati. La tecnologia puo venire in aiuto del viaggiatore attraverso strumenti

di informazione e comunicazione, che lo rendono totalmente indipendente

nella gestione del proprio soggiorno.

Dispositivi mobili, come palmari o smartphone, si trasformano in assistenti

di viaggio, fornendo informazioni turistiche, o comunque di interesse, legate al

luogo in cui ci si trova. Analogamente, diventa fondamentale la possibilita di

restare in contatto con tutti gli elementi del gruppo, data l’assenza di figure

di riferimento come guide o agenti di viaggio.

Nasce quindi l’esigenza di sviluppare un sistema di comunicazione basato

su rete IP orientato a dispositivi mobili, che sia in grado di coordinare e faci-

litare gli spostamenti di viaggiatori che si muovono in gruppo. E’ ragionevole

pensare che chi usufruisce di questi servizi, viaggi con almeno un telefono

cellulare, un personal computer o un palmare. A tale proposito il progetto

vertera su argomenti legati alla comunicazione mobile, alla geolocalizzazione

ed al trasferimento dati peer to peer.

4

Page 6: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Introduzione

Il lavoro svolto consiste nello sviluppo di un’applicazione che permetta a di-

spositivi mobili di determinare e condividere la propria posizione attraverso la

rete. La piattaforma utilizzata e un framework J2ME, sviluppato da Google

con il nome Android.

La scelta di questa piattaforma e legata principalmente alla disponibilita

di codice sorgente (Android e rilasciato con licenza open-source) e al successo

consolidato dei prodotti Google, di cui Android ne costituisce l’avanguardia.

Soprattutto, rappresenta il perfetto collegamento tra il dispositivo mobile e i

servizi remoti di cui fa uso, entrambi prodotti da Google (es. Google Maps).

L’applicazione e in grado di connettersi ad una sorgente di coordinate

spaziali (GPS), tracciarle, rappresentarle su di una mappa (geolocalizzazione)

e inviarle, attraverso la rete, ad altri dispositivi. Questi potranno visualizzare

sulla stessa mappa, sia la propria posizione, che quella ricevuta, in modo da

costruire dinamicamente un sistema di tracciatura dei nodi presenti nella rete.

Trattandosi di un dispositivo non ancora in commercio, e stato utilizzato un

emulatore rilasciato da Google, come plug-in del noto IDE Eclipse.

5

Page 7: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Capitolo 1

Concetti di base

La possibilita di determinare, via GPS o rete cellulare, la propria posizione

sul globo terrestre, abbinata alla sua ritrasmissione mediante GPRS/UMTS,

rende oggi tecnicamente possibile la fornitura di servizi a valore aggiunto

basati sulla localizzazione, indicati con la sigla LBS acronimo di Location

Based Services.

Dato che il concetto di localizzazione puo assumere una portata differen-

te, a seconda delle finalita perseguite, tali servizi hanno conseguentemente

un campo di applicazione molto vasto, che abbraccia le applicazioni destina-

te alla navigazione su strada, alla gestione delle emergenze ed alla sicurezza

delle persone, delle cose o degli animali, ma anche quelle relative all’intrat-

tenimento, alla comunicazione sociale ed a quella di natura commerciale (in-

formazioni sulla vicinanza di ristoranti, alberghi, centri commerciali, stazioni

di rifornimento, ecc....).

Da un punto di vista tecnologico il funzionamento dei sistemi di localizza-

zione puo essere incentrato su una rete cellulare oppure esterno, a seconda che

la sorgente delle informazioni rientri o meno sotto il controllo di un operatore

di comunicazioni.

Alla prima categoria appartengono le reti GSM/UMTS, mentre nel secon-

do gruppo rientrano la rete satellitare GPS (Global Positioning System),

i sistemi di posizionamento peer to peer o quelli basati su reti wireless.

L’architettura complessiva prevede, di regola, il coinvolgimento di tre en-

tita: un fornitore di servizi, l’utente ed un operatore che agisce da interme-

diario, trasmettendo i dati di localizzazione al fornitore che li combina con

quelli geografici per erogare i servizi richiesti.

6

Page 8: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 7

1.1 GIS - Geographical Information System

Un sistema informativo territoriale (in inglese Geographical Information

System o GIS) e un insieme di strumenti software in grado di produrre,

gestire e analizzare dati spaziali, associando a ciascun elemento geografico

una o piu descrizioni alfanumeriche.

Figura 1.1: Somma di layer che rappresentano una mappa

L’espressione Geographical Information System caratterizza quei program-

mi informatici in grado di georeferenziare le informazioni e fornire risposte a

problemi di natura territoriale. Questi dispositivi rappresentano una innova-

zione epocale nella gestione e nella produzione cartografica. Essi si basano sul-

la fusione di due innovazioni informatiche: i sistemi di disegno computerizzato

(CAD) e i data base relazionali (DBMS).

Il primo sistema ha permesso il disegno computerizzato delle entita geo-

grafiche e il secondo l’immagazzinamento dei dati e delle informazioni legate

a queste entita.

La fusione di questi due sistemi nei GIS ha permesso di analizzare un’en-

tita geografica, sia per la sua completa natura geometrica (e simbolica), sia

per il suo totale contenuto informativo, superando il problema delle rappre-

sentazioni simboliche e in scala.

Page 9: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 8

1.1.1 Funzionamento dei sistemi GIS

Diversamente dai programmi di disegno assistito da calcolatore o dai modelli

di cartografia numerica, i GIS dispongono di specifici strumenti di analisi

quali la ricerca di elementi distribuiti nel territorio e la loro selezione per

attributi (ad esempio: la selezione di tutte le strade di un ambito territoriale

con flussi di traffico), la rappresentazione di aree di influenza, la scomposizione

delle immagini in livelli (layer o theme, come le curve di livello, il reticolato

idrografico, etc.) e la loro, sovrapposizione (map overlay), la generazione

di modelli digitali del terreno, la scelta della modalita di rappresentazione

mediante il cambio di scala o di proiezione.

I GIS hanno due componenti:

• componente grafica

• componente alfanumerica

La parte grafica (geografica) e georeferenziata, ossia il posizionamento

spaziale del dato avviene tramite sistemi di proiezione basati su convenzioni

specifiche (esempio unita di misura).

Figura 1.2: Proiezione dati GIS sulla mappa

Utilizzare lo stesso sistema di proiezione implica:

• sovrapposizione di dati geografici

• maggiori possibilita di analisi

I tipi di dati possono invece essere di tre tipi:

Page 10: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 9

• dati raster : costituiti da una matrice di celle che generano un’immagine

non interrogabile ed e utilizzato per la gestione di immagini (nel caso dei

GIS, immagini telerilevate: fotografie da aereo o immagini satellitari)

che vengono acquisite punto per punto, mediante scanner.

• dati vettoriali : rappresentano i campi attraverso punti, linee, superfici

che definiscono gli oggetti cui vengono associati gli attributi.

Figura 1.3: Esempio di dati raster

Il formato vettoriale e utilizzato per la gestione delle cartografie numeriche

che vengono acquisite per vettori, generalmente mediante tavola digitalizza-

trice. Tale formato e piu integrato del precedente ai processi di risposta alle

interrogazioni.

Page 11: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 10

1.2 Aree di applicazione

L’utilita di un GIS e evidente:

• In tutti i settori in cui l’impiego della cartografia geografica o topogra-

fica (settori militari, industriali, amministrativi etc.) risulta strategico:

come la gestione dei fondi per la difesa di uno stato; nella scelta su do-

ve collocare nuove cliniche e ospedali, fondamentale per i responsabili

del settore sanitario; oppure nella scelta, altrettanto fondamentale per

una societa di trasporti, dei percorsi da seguire per effettuare le proprie

consegne.

• In tutti i settori di impiego e sviluppo della cartografia geotematica,

geologica, geomorfologia, idrogeologica, delle risorse, forestale, ambien-

tale. Una compagnia forestale, ad esempio, deve sapere dove piantare

o tagliare degli alberi e deve conoscere strade e sentieri per accedervi;

un servizio geologico deve conoscere la distribuzione di frane, sorgenti,

cave sondaggi, etc..

• In tutti i settori di pianificazione territoriale: un ente pubblico che

gestisce il territorio impiega GIS per la redazione e lo sviluppo dei piani

urbanistici (piani regolatori, piani territoriali di coordinamento o piani

strutturali); un turista o chiunque si trovi a effettuare un viaggio deve

fare delle scelte sul luogo in cui recarsi, su come recarvisi e sul posto in

cui eventualmente alloggiare.

Page 12: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 11

1.3 Geolocalizzazione

1.3.1 GPS

Il Global Positioning System (abbreviato in GPS), e un sistema di po-

sizionamento su base satellitare, a copertura globale e continua, gestito dal

dipartimento della difesa statunitense.

Nel 1991 gli USA aprirono al mondo il servizio con il nome SPS (Standard

Positioning System), con specifiche differenziate da quello militare deno-

minato PPS (Precision Positioning System). In pratica veniva introdotta

la cosiddetta Selective Availability (SA) che introduceva errori intenzio-

nali nei segnali satellitari allo scopo di ridurre l’accuratezza della rilevazio-

ne, consentendo precisioni solo nell’ordine di 100-150 m. Tale degradazione

del segnale e stata disabilitata dal mese di maggio 2000, mettendo cosı a

disposizione degli usi civili la precisione attuale di circa 10-20 m.

Figura 1.4: Satelliti intorno alla terra

Attualmente ci sono 31 satelliti attivi nella costellazione GPS. I satelliti

supplementari migliorano la precisione del sistema permettendo misurazioni

Page 13: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 12

ridondanti. Al crescere del numero di satelliti, la costellazione e stata modi-

ficata secondo uno schema non uniforme che si e dimostrato maggiormente

affidabile in caso di guasti contemporanei a piu satelliti.

Il sistema di navigazione si articola nelle seguenti componenti:

• un complesso di minimo 24 satelliti, divisi in gruppi di quattro su ognuno

dei sei piani orbitali (distanti 60◦ fra loro e inclinati di 55◦ sul piano

equatoriale)

• 2 cicli al giorno

• una rete di stazioni di tracciamento (tracking station)

• un centro di calcolo (computing station)

• due stazioni di soccorrimento (injection stations)

• un ricevitore GPS

Il principio di funzionamento si basa su un metodo di posizionamento

sferico, che consiste nel misurare il tempo impiegato da un segnale radio a

percorrere la distanza satellite-ricevitore. Conoscendo il tempo impiegato dal

segnale per giungere al ricevitore e l’esatta posizione di almeno 3 satelliti

per avere una posizione 2D (bidimensionale), e 4 per avere una posizione

3D (tridimensionale), e possibile determinare la posizione nello spazio del

ricevitore stesso. Tale procedimento, chiamato trilaterazione, utilizza solo

informazioni di distanza ed e simile alla triangolazione, dal quale tuttavia

si differenzia per il fatto di fare a meno di informazioni riguardanti gli angoli.

La precisione puo essere ulteriormente incrementata grazie all’uso di siste-

mi come il WAAS (statunitense) o l’EGNOS (europeo), perfettamente com-

patibili tra di loro. Consistono in uno o due satelliti geostazionari che inviano

dei segnali di correzione. La modalita Differential-GPS (DGPS) utilizza un

collegamento radio per ricevere dati DGPS da una stazione di terra e ottenere

un errore sulla posizione di un paio di metri. La modalita DGPS-IP sfrutta,

anziche onde radio, la rete Internet per l’invio di informazioni di correzione.

Esistono in commercio ricevitori GPS (esterni), interfacciabili mediante

porta USB o connessioni senza fili come il Bluetooth, che consentono di rea-

lizzare navigatori GPS su vari dispositivi: palmari, PC, computer portatili,

Page 14: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 13

e, se dotati di sufficiente memoria, anche telefoni cellulari. Per la navigazio-

ne esistono software appositi, proprietari o open source che utilizzano una

cartografia, anch’essa pubblica o proprietaria.

1.3.2 NMEA

NMEA 0183 (o piu comunemente NMEA) e uno standard di comunicazione

di dati utilizzato soprattutto in nautica e nella comunicazione di dati satel-

litari GPS. L’ente che gestisce e sviluppa il protocollo e la National Marine

Electronics Association.

Questo protocollo si basa sul principio che la fonte, detta talker, puo

soltanto inviare i dati (sentences) e la ricevente, detta listener, puo soltanto

riceverli.

Page 15: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 14

1.4 Peer to peer

Generalmente per peer-to-peer (o P2P) si intende una rete di computer o

qualsiasi rete informatica che non possiede nodi gerarchizzati come client o

server fissi (clienti e serventi), ma un numero di nodi equivalenti (pari, in

inglese peer appunto) che fungono sia da cliente che da servente verso altri

nodi della rete. I nodi sono indipendenti (autonomi) e localizzati ai bordi

(edge) di Internet.

Figura 1.5: Rappresentazione di una rete P2P

Questo modello di rete e l’antitesi dell’architettura client-server. Mediante

questa configurazione qualsiasi nodo e in grado di avviare o completare una

transazione.

I nodi equivalenti possono differire nella configurazione locale, nella velo-

cita di elaborazione, nell’ampiezza di banda e nella quantita di dati memo-

rizzati. L’esempio classico di P2P e la rete per la condivisione di file (File

sharing).

Il termine peer-to-peer si riferisce a una classe di sistemi e applicazio-

ni che utilizzano risorse distribuite per eseguire una funzionalita (critica) in

modo decentralizzato. In Microsoft tendono a definire con il termine peer-to-

peer una rete di due o piu computer in cui tutti gli elaboratori occupano la

stessa posizione gerarchica. Tale modalita e normalmente conosciuta con il

Page 16: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 15

termine Gruppo di Lavoro, in antitesi alle reti in cui e presente un dominio

centralizzato.

1.4.1 Localizzazione

Al fine di garantire la comunicazione tra i vari peer, e necessario l’utilizzo di

un servizio di localizzazione.

Tale servizio puo essere rappresentato da un server, o piu banalmente da

un file (come nel caso dei .torrent), che serve da indice, sincronizza i vari

utilizzatori che condividono la banda e fornisce il flusso di dati iniziale, che

poi i vari nodi si scambiano.

Quindi, sebbene tecnicamente sia un server, in pratica, dopo aver fornito il

flusso dati iniziale ed aver messo in comunicazione i vari utenti, si disinteressa

della comunicazione che avviene tra di essi, ed il sistema diventa totalmente

peer to peer.

1.4.2 STUN

Esiste tuttavia la possibilita che uno o piu peer si trovi dietro un NAT, una

tecnica utilizzata dai router che consiste nel modificare gli indirizzi IP dei

pacchetti in transito su un sistema di rete.

Come potrebbero questi arrivare a conoscere il proprio indirizzo pubblico,

da comunicare al proxy cui registrarsi, le porte UDP disponibili e la modalita

di NAT adottata?

Qui entra in gioco STUN, un protocollo client/server che permette a par-

ticolari applicazioni di scoprire la presenza ed i tipi di NAT e firewall presenti

tra loro e la rete pubblica.

STUN permette a questi programmi di conoscere gli indirizzi con cui il

dispositivo NAT li sta rendendo visibili alla rete pubblica.

1.5 Comunicazione mobile

1.5.1 Wi-Fi

Wi-Fi, abbreviazione di Wireless Fidelity, e un termine che indica dispositivi

che possono collegarsi a reti locali senza fili (WLAN) basate sulle specifiche

IEEE 802.11.

Page 17: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 16

Figura 1.6: Funzionamento del protocollo STUN

Le reti Wi-Fi sono infrastrutture relativamente economiche e di veloce

attivazione e permettono di realizzare sistemi flessibili per la trasmissione di

dati usando frequenze radio, estendendo o collegando reti esistenti ovvero

creandone di nuove.

L’architettura internet e del tutto simile ai tradizionali ISP che forniscono

un punto di accesso agli utenti che si collegano da remoto.

Figura 1.7: Wi-Fi

La fonte di connettivita a banda larga puo essere via cavo (ADSL o

HDSL), oppure via satellite. Oggi esistono connessioni a internet satellitari

bidirezionali, che consentono alte velocita di trasferimento dei dati sia in

download che in upload. La trasmissione satellitare ha, tuttavia, tempi di

latenza elevati; il tempo di attesa prima che inizi l’invio dei pacchetti, detto

tempo di latenza, e dell’ordine di 1-2 secondi, e quindi un tempo molto grande

se confrontato ai pochi centesimi di secondo necessari ad una connessione

DSL.

Page 18: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 17

A partire dalla fonte di banda, si puo espandere la rete attraverso la

tecnologia Wi-Fi. L’installazione delle antenne e semplice. Si tratta di anten-

ne piccole: normalmente sono scatolotti larghi circa 20 cm e spessi qualche

centimetro, ma possono essere anche piu piccole.

Le antenne wi-fi generalmente sono parabole poste sui tralicci della cor-

rente elettrica e dietro i campanili (che tipicamente sono i punti piu alti nel

paesaggio nazionale). Cio evita un onere elevato per la costruzione di torrette

dedicate. Le antenne delle singole case sono poste sui tetti. E importante

porre in alto i trasmettitori perche in assenza di barriere in linea d’aria il

segnale dell’access point copre distanze di gran lunga maggiori. Le antenne

direttive che amplificano il segnale dell’access point, a parita di distanza in

cui e ricevibile il segnale, sono utilizzabili da piu utenze se poste in alto.

Figura 1.8: Piu dispositivi connessi ad un access point Wi-Fi

Page 19: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 18

Con un access point e possibile coprire con banda larga fino a una di-

stanza di 300 metri teorici (uso domestico) se non vi e alcuna barriera in

linea d’aria. In presenza di muri, alberi o altre barriere il segnale decade a

150 metri.

Tuttavia, con 2-3 antenne direzionali dal costo ancora inferiore la coper-

tura dell’access point sale a 1 km. Il segnale delle antenne direzionali, diver-

samente da quello dell’access point, e sufficientemente potente (in termini di

Watt di potenza trasmissiva) da mantenere lo stesso raggio di copertura di 1

km, inalterato anche in presenza di barriere in linea d’aria.

1.5.2 GPRS - UMTS

Il General Packet Radio Service (GPRS) e una delle tecnologie di telefonia

mobile. E stato progettato per realizzare il trasferimento di dati a media ve-

locita, usando i canali TDMA della rete GSM. Inizialmente si era pensato di

ampliare il GPRS per integrarvi altri sistemi; cio non e avvenuto, anzi sono

stati gli altri sistemi, con le relative reti di trasmissione, ad essere modifica-

ti per essere resi compatibili con lo standard GSM, unica tipologia di rete

cellulare in cui il GPRS e utilizzato.

La massima velocita di una connessione GPRS e circa uguale a quella

ottenibile tramite modem collegato alla normale rete telefonica analogica, e

cioe fra 4 e 5 kB/s, a seconda del modem impiegato. Il tempo di latenza e

piuttosto alto: per averne un ordine di grandezza si consideri che un’opera-

zione di ping (acronimo di Packet Internet Groper) dura di solito 600-700 ms

(a volte anche 1 s).

Normalmente viene data una priorita piu bassa al GPRS rispetto al ca-

nale audio, e per questo motivo, la qualita effettiva della connessione varia

grandemente. In effetti la maggior parte delle limitazioni non sono di natu-

ra tecnica, e quindi le connessioni GPRS potrebbero, in teoria, essere molto

piu performanti di quanto non siano nelle attuali implementazioni nel mondo

reale.

Universal Mobile Telecommunications System (UMTS) e la tecnologia

di telefonia mobile di terza generazione (3G), successore del GSM. Il sistema

UMTS supporta un transfer rate (tasso di trasferimento) massimo di 1920

kb/s. Le applicazioni tipiche attualmente implementate, usate ad esempio

dalla reti UMTS in Italia, sono tre: voce, videoconferenza e trasmissione

dati a pacchetto. Ad ognuno di questi tre servizi e assegnato uno specifico

Page 20: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 1. CONCETTI DI BASE 19

Figura 1.9: GPRS

transfer rate, per la voce 12,2 kb/s, 64 kb/s per la videoconferenza e 384 kb/s

per trasmissioni di tipo dati. UMTS e quindi in grado, potenzialmente, di

consentire per la prima volta l’accesso, a costi contenuti, di dispositivi mobili

al World Wide Web di Internet.

Dal 2004 sono presenti anche in Italia l’UMTS 2 e l’UMTS 2+ (si legga 2

plus), due estensioni del protocollo UMTS, che funzionano sulle attuali reti

UMTS e raggiungono velocita rispettivamente di 1,8 e 3 Mb/s.

Le attuali reti UMTS sono state potenziate mediante i protocolli High-

Speed Downlink Packet Access (HSDPA), e High-Speed Uplink Packet Access

(HSUPA) con una velocita massima teorica di scaricamento dati in download

di 14,4 Mb/s e in upload di 7,2 Mb/s. Con il lancio di tariffe flat su tecnologia

HSDPA, e con l’implementazione della tecnologia HSUPA (che migliore la

velocita in upload), i servizi definiti a banda larga mobile possono essere

considerati come alternativa alle connessioni ADSL fisse.

Page 21: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Capitolo 2

Descrizione del progetto

Il sistema che si vuole sviluppare e costituito da una serie di dispositivi mo-

bili in grado di rilevare la propria posizione (longitudine, latitudine) e di

scambiarla con altri utenti via rete, coordinati da un nodo centrale.

Figura 2.1: Rappresentazione grafica del progetto

2.1 Dispositivi mobili

Per dispositivo mobile si intende un PDA o uno Smartphone, che attraverso

un’antenna GPS, sia in grado di rilevare e trasmettere, con frequenza stabilita,

la propria posizione ad altri dispositivi presenti nella rete.

20

Page 22: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 2. DESCRIZIONE DEL PROGETTO 21

2.1.1 Acquisizione della posizione

Affinche il dispositivo sia in grado di localizzare se stesso e necessaria un’inter-

faccia verso un sistema satellitare di posizionamento globale (GPS). Questa

interfaccia e solitamente costituita da un’antenna GPS, connessa direttamen-

te al dispositivo, o tramite collegamento radio bluetooth. Questa comunica

la posizione al dispositivo con una serie di stringhe definite nel protocollo

NMEA.

2.1.2 Connettivita verso la rete

A questo punto, il dispositivo deve rendere nota la propria posizione invian-

dola a tutti gli elementi della rete. Questo avviene attraverso interfacce radio

basate su diffusi protocolli di comunicazione, come 802.11 (Wi-Fi), UMTS,

HSDPA ecc..

2.1.3 Funzionamento del dispositivo all’interno di una

rete

La rete e strutturata in maniera tale da permettere ad ogni nodo di avere una

mappa quanto piu possibile aggiornata della posizione di tutti gli altri nodi.

Questo significa che ogni nodo ricevera ed inviera informazioni a tutti i nodi

connessi in un dato momento.

E’ gia stato definito il modo in cui il dispositivo comunica informazioni

relative a se stesso, ma e importante definirne il comportamento in fase di

ricezione.

La ricezione prevede che il dispositivo abbia gia stabilito, tramite il nodo

centrale, un collegamento con uno o piu nodi.

Le informazioni che questi inviano contribuiranno a costruire un catalogo

dinamico rappresentabile su di una mappa come serie di punti georeferenziati.

Page 23: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 2. DESCRIZIONE DEL PROGETTO 22

2.2 Nodo centrale

Il nodo centrale e costituito da un server, che ha la funzione di rendere possi-

bile la ricerca di nodi ed il collegamento fra di essi. L’utilizzo di un nodo cen-

trale, si rende necessario per collezionare, e rendere disponibili, informazioni

sui nodi connessi (nome, indirizzo ip) e, soprattutto, per aiutare questi ultimi

a stabilire connessioni in presenza di impedimenti come NAT o Firewall.

La prima funzione del supernodo ricorda il servizio di risoluzione dei

nomi (DNS), operando pero in maniera dinamica, sulla base degli indirizzi

con cui ogni dispositivo e collegato alla rete IP. Fin qui il ruolo del supernodo

e limitato ad una sorta di rubrica telefonica, dato che, una volta nota la

referenza di un nodo, e possibile accedervi. Tuttavia bisogna considerare il

fatto che non sempre la referenza di un nodo sia quella effettiva. Un esempio

e dato dalla presenza di sistemi di mascheramento dell’indirizzo IP (NAT),

che impediscono connessioni dirette in ingresso.

Per superare questo genere di problemi, si dota il supernodo di funzionalita

di rete a piu basso livello (IP), in maniera da farlo operare come un ponte fra

due dispositivi altrimenti non in grado comunicare.

Page 24: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Capitolo 3

Sviluppo del progetto

Per perseguire l’obiettivo, sara utilizzata una piattaforma di sviluppo stan-

dard (J2ME) su un dispositivo di nuovissima generazione come lo smartphone

Android di Google.

3.1 Android

Android e una piattaforma open source per telefoni cellulari, basata sul siste-

ma operativo Linux e sviluppata dall’Open Handset Alliance. La piattaforma

ha a disposizione delle librerie dedicate, come il database SQLite o SGL e

OpenGL dedicate alla grafica, un application framework, la Dalvik virtual

machine (una Java virtual machine modificata) come ambiente di runtime

e una serie di applicazioni preinstallate come un browser, una rubrica o un

calendario.

Il 12 novembre 2007 l’OHA ha rilasciato il software development kit (SDK)

che include: strumenti di sviluppo, librerie, un emulatore del dispositivo, la

documentazione (in inglese), alcuni progetti di esempio, tutorial, FAQ, e altro.

Pesa 58 Megabyte ed e installabile su qualsiasi computer x86 che usa come

sistema operativo Windows XP o Vista, Mac OS X 10.4.8 e successivi, o

Linux. E anche possibile utilizzare il plug-in per Eclipse. L’SDK e stato

aggiornato alla versione 0.9 il 18 agosto 2008, questa nuova versione pesa

90 Megabyte, ed e ormai la definitiva , saranno infatti minime le modifiche

effettuate con il rilascio della versione 1.0, di cui saranno dotati i primi device.

23

Page 25: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 24

Figura 3.1: Android

Il primo dispositivo mobile dotato della piattaforma Android e il T-Mobile

G1, prodotto dalla societa taiwanese HTC e commercializzato dal carrier

telefonico T-Mobile.

Il prodotto e stato presentato il 23 Settembre a New York, mentre la data

di uscita nel mercato e prevista per il 22 Ottobre 2008. Le caratteristiche

principali del dispositivo sono: tastiera QWERTY, schermo touchscreen da

3.2 pollici con risoluzione di 320x480 pixel, supporto per la connettivita 3G

UMTS/HSDPA a 7,2 Mbps, 192 MB di RAM e 256 MB di memoria flash.

Il dispositivo sara inzialmente distribuito negli USA e nel Regno Unito, e

sono previsti entro la fine 2009 nuovi dispositivi assemblati da altre case

produttrici. Il CEO di Google ha inoltre ribadito che Android e adattabile a

qualsiasi telefono cellulare, e una nutrita schiera di appassionati sta tentando

gia il porting della piattaforma su dispositivi non ufficialmente supportati e

con sistema operativo diverso.

Page 26: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 25

Figura 3.2: Schermata in stand-by del sistema operativo Google Android

3.2 Fasi di sviluppo dell’applicativo

Il programma applicativo e stato sviluppato simulando il comportamento di

Android con un emulatore.

Si tratta di un plug-in per Eclipse, che consente di aiutare lo sviluppatore

a controllare i vari aspetti relativi alla corretta esecuzione del software. E’

infatti possibile definire un percorso GPS, caricando un file KML (Keyhole

Markup Language) nel plug-in.

Questo file e costituito da una serie di coordinate geografiche, che Eclipse

provvedera ad inviare all’emulatore, con cadenza di un secondo, simulando

cosı il tragitto compiuto da una persona.

Page 27: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 26

3.2.1 Mappe

Le mappe utilizzate per la visualizzazione grafica della posizione di ogni uten-

te, sono le Google Maps. Il motivo di questa scelta, e la piena compatibilita,

e facilita di interazione, tra i prodotti Google. Infatti nell’SDK di Android,

sono presenti delle API, che permettono di rappresentare, in maniera quasi

immediata, un punto GPS (GeoPoint) sulla Google Map.

public void draw (Canvas canvas , MapView mapView , boolean

shadow ) {// I n i z i a l i z z o i l Paint

Paint pa int = new Paint ( ) ;

pa int . s e tTextS i z e (14) ;

pa int . s e tF i l t e rB i tmap ( true ) ;

pa int . s e tAnt iA l i a s ( true ) ;

pa int . s e t S t y l e ( S ty l e .FILL AND STROKE) ;

pa int . setARGB(255 , 255 , 255 , 255) ;

// Setup per l o s fondo

Paint pa int2 = new Paint ( ) ;

pa int2 . setARGB(150 , 100 , 100 , 100) ;

Point c = new Point ( ) ;

for ( OverlayItem p : mItemList ) {GeoPoint punto = p . getPoint ( ) ;

mapView . g e tP ro j e c t i on ( ) . t oP i x e l s ( punto , c ) ;

RectF f = new RectF ( c . x − ( (11 ∗ p . g e tT i t l e ( ) . l ength ( ) ) /

2) , c . y − 50 , c . x + ((11 ∗ p . g e tT i t l e ( ) . l ength ( ) ) /

2) , c . y − 30) ;

canvas . drawRect ( f , pa int2 ) ;

// Draw our name

canvas . drawText (p . g e tT i t l e ( ) , c . x − ( (7 ∗ p . g e tT i t l e ( ) .

l ength ( ) ) / 2) , c . y − 35 , pa int ) ;

}super . draw ( canvas , mapView , shadow ) ;

MapOverlay . boundCenterBottom ( defaultMarker ) ;

}

Page 28: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 27

Figura 3.3: Rappresentazione di un punto sulla mappa

Page 29: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 28

Figura 3.4: Piu utenti presenti nel sistema

Page 30: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 29

Figura 3.5: Cliccando sul punto, viene visualizzato l’indirizzo e coordinate

Page 31: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 30

Figura 3.6: Si puo fare lo Zoom fino alla posizione desiderata

Page 32: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 31

Figura 3.7: Passare alla visualizzazione via satellite

Page 33: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 32

3.2.2 Sviluppo del supernodo

Il supernodo e costituito da un applicativo server, scritto in PHP,con indi-

rizzo pubblico (raggiungibile), collegato ad un database MySQL, che memo-

rizza le coppie ID/CoordinateGPS dei dispositivi.

Il server riceve tre tipi di sollecitazione :

• il dispositivo notifica il proprio ID e le proprie coordinate al server, che

aggiorna la propria tabella, in base ai nuovi dati ricevuti.

<?

// Link a l DB

include ("configDb.php" ) ;

$ long = $ l a t = $myId = 0 ;

i f ( $ POST [ "latitudine" ] and $ POST [ "longitudine" ] and

$ POST [ "myId" ] ) {$ l a t = $ POST [ "latitudine" ] ;

$ long = $ POST [ "longitudine" ] ;

$myId = $ POST [ "myId" ] ;

$q = "REPLACE INTO tesi.coord SET ‘userid‘ = ’" . $myId .

"’, ‘lat‘ = ’" . $ l a t . "’, ‘long‘ = ’" . $ long . "’, ‘ip‘

= ’" . $ SERVER[ ’REMOTE_ADDR’ ] . "’" ;

mysql query ( $q , $ l i nk ) ;

echo mysql error ( $ l i nk ) ;

}?>

• il dispositivo richiede al server l’indirizzo di un dato utente a partire

dall’identificativo, che risponde con il dato piu recente di cui dispone.

<?php

// Link a l DB

include ("configDb.php" ) ;

Page 34: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 33

$ id = 0 ;

i f ($ POST [ "id" ] | | $ GET [ "id" ] ) {i f ($ POST [ "id" ] ) $ id = $ POST [ "id" ] ;

i f ($ GET [ "id" ] ) $ id = $ GET [ "id" ] ;

i f ( $ id == ’all’ ) {$q = "SELECT * FROM tesi.coord WHERE 1 AND ip <> ’" .

$ SERVER[ ’REMOTE_ADDR’ ] . "’ GROUP BY userid ORDER

BY date DESC" ;

$ r e s u l t = mysql query ( $q , $ l i nk ) ;

i f ( i s r e s o u r c e ( $ r e s u l t ) && (mysql num rows( $ r e s u l t ) )

) {while ( $row = mysql fetch assoc ( $ r e s u l t ) ) {echo $row [ "userid" ] . "\t" ;

echo "geo:" . $row [ "lat" ] . "," . $row [ "long" ] . "#" ;

echo "\n" ;

}}}

. . .

?>

• il dispositivo richiede al server l’intera lista di utenti, che provvede a for-

nire tutte le relazioni ID/CoordinateGPS che possiede in quel momento.

<?php

. . .

else {$q = "SELECT * FROM tesi.coord WHERE userid = ’" . $ id .

"’ ORDER BY date DESC LIMIT 0, 1" ;

$ r e s u l t = mysql query ( $q , $ l i nk ) ;

i f ( i s r e s o u r c e ( $ r e s u l t ) && (mysql num rows( $ r e s u l t )

== 1) ) {

Page 35: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

CAPITOLO 3. SVILUPPO DEL PROGETTO 34

$row = mysql fetch assoc ( $ r e s u l t ) ;

echo $row [ "userid" ] . "\t" ;

echo "geo:" . $row [ "lat" ] . "," . $row [ "long" ] . "#" ;

}}}?>

Page 36: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Conclusioni

Il lavoro svolto si e rivelato un interessante caso di studio su applicazioni

e tecnologie all’avanguardia, di immediato interesse in diversi campi. L’ap-

plicativo, nonostante sia stato presentato come un navigatore turistico, puo

essere adottato in molti altri ambiti, come ad esempio il controllo flotte (es.

autotrasporto), o, piu in generale, nel campo della sicurezza per il controllo

di elementi mobili.

La semplicita di utilizzo e di sviluppo, offerta dalla piattaforma Android,

ha permesso di creare lo strumento presentato, con un alto livello di affidabi-

lita e accesso, pur utilizzando risorse complesse come mappe e funzionalita di

geolocalizzazione. Inoltre, per ulteriori sviluppi, e prevista l’integrazione di

funzionalita avanzate, per le quali l’applicativo e predisposto (autenticazione

avanzata, gestione di gruppi indipendenti, voip e scambio dati).

35

Page 37: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Appendice A

Creazione dell’interfaccia

Al fine di poter sviluppare un sistema grafico per Google Android, prima di

iniziare a scrivere righe di codice, bisogna impostare alcune variabili necessarie

al software per poter sfruttare le risorse della piattaforma.

A.1 Android Manifest

AndroidManifest.xml e un file richiesto per qualsiasi applicazione. Si trova

nella cartella principale, e descrive le variabili globali del package, tutte le

componenti (activities, services, ecc..), nonche l’implementazione delle classi,

che tipo di dati gestiscono, e dove possono essere lanciati.

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

<mani fe s t xmlns :andro id="http://schemas.android.com/apk/res

/android"

package="com.android.demo.gpsAndroid" andro id :ver s ionCode=

"1"

android:vers ionName="1.0.0">

<uses−permis s ion android:name="android.permission.

READ_CONTACTS" />

<uses−permis s ion android:name="android.permission.

ACCESS_LOCATION" />

<uses−permis s ion android:name="android.permission.

ACCESS_GPS" />

<uses−permis s ion android:name="android.permission.

ACCESS_ASSISTED_GPS" />

36

Page 38: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE A. CREAZIONE DELL’INTERFACCIA 37

<uses−permis s ion android:name="android.permission.

ACCESS_MOCK_LOCATION" />

<uses−permis s ion android:name="android.permission.

ACCESS_COARSE_LOCATION" />

<uses−permis s ion android:name="android.permission.

ACCESS_WIFI_STATE" />

<uses−permis s ion android:name="android.permission.

ACCESS_NETWORK_STATE" />

<uses−permis s ion android:name="android.permission.

ACCESS_FINE_LOCATION" />

<uses−permis s ion android:name="android.permission.INTERNET

" />

<app l i c a t i o n andro id : i c on="@drawable/icon" and r o i d : l a b e l="

@string/app_name">

<uses−l i b r a r y android:name="com.google.android.maps" />

<a c t i v i t y and r o i d : l a b e l="@string/app_name" android:name="

.GpsAndroid">

<in tent− f i l t e r>

<ac t i on android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.

LAUNCHER" />

</ intent− f i l t e r>

</ a c t i v i t y>

<a c t i v i t y android:name=".AndroidMap" />

</ app l i c a t i o n>

</ mani f e s t>

A.2 R.java

Il file R.java e un indice di tutte le risorse definite nel progetto. Viene usato

dal sistema come scorciatoia per l’accesso alle risorse incluse nei file. Viene

generato automaticamente da Eclipse, durante la programmazione.

/∗ AUTO−GENERATED FILE . DO NOT MODIFY.

∗∗ This c l a s s was a u t o m a t i c a l l y generated by the

Page 39: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE A. CREAZIONE DELL’INTERFACCIA 38

∗ aapt t o o l from the resource data i t found . I t

∗ shou ld not be modi f ied by hand .

∗/

package com . android . demo . gpsAndroid ;

public f ina l class R {public stat ic f ina l class a t t r {}public stat ic f ina l class drawable {public stat ic f ina l int bubble=0x7f020000 ;

public stat ic f ina l int i con=0x7f020001 ;

public stat ic f ina l int marker=0x7f020002 ;

public stat ic f ina l int marker1=0x7f020003 ;

public stat ic f ina l int marker3=0x7f020004 ;

}public stat ic f ina l class id {public stat ic f ina l int conta ine r=0x7f050000 ;

public stat ic f ina l int mapview=0x7f050001 ;

public stat ic f ina l int t ext1=0x7f050003 ;

public stat ic f ina l int zoom holder=0x7f050002 ;

}public stat ic f ina l class l ayout {public stat ic f ina l int main=0x7f030000 ;

public stat ic f ina l int map=0x7f030001 ;

public stat ic f ina l int rows=0x7f030002

}public stat ic f ina l class s t r i n g {public stat ic f ina l int app name=0x7f040001 ;

public stat ic f ina l int h e l l o=0x7f040000 ;

public stat ic f ina l int show map=0x7f040002 ;

public stat ic f ina l int toggle map=0x7f040004 ;

public stat ic f ina l int vuoto=0x7f040003 ;

}

Page 40: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Appendice B

Android e Google Maps

B.1 AndroidMap

La classe AndroidMap si occupa della parte grafica del programma. Gestisce

l’attivita di tutto cio che riguarda la mappa, inclusa l’inizializzazione del

provider GPS, la creazione dei menu ed il recupero delle proprie coordinate.

package com . android . demo . gpsAndroid ;

import . . . .

public class AndroidMap extends MapActivity {// =================================================

// CLASSE INTERNA

// =================================================

/∗∗∗ Classe per l a g e s t i o n e d e i segnapos to da mettere s u l l a

mappa

∗/private class MapOverlay extends ItemizedOverlay<

OverlayItem> {. . . . . . .

}

/∗∗∗ L i s t e n e r che g e s t i s c e i l cambio d i c o o r d i n a t e GPS

39

Page 41: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 40

∗∗ @author Francesco

∗/private class MyLocationListener implements

Loca t i onL i s t ene r {. . . . . .

}

// ================================================

// v a r i a b i l i

// ================================================

private stat ic f ina l int TOGGLEMAP = 0 ;

private MapView mMapView ;

private View zoomView ;

public stat ic GeoPoint p ;

public stat ic GeoPoint myLoc = null ;

public St r ing coords ;

public Drawable defaultMarker ;

public ArrayList<GeoPoint> l i s t aGeoPo in t s ;

public ArrayList<Punto> l i s t aPun t i ;

private LocationManager lm ;

private Loca t i onL i s t ene r l o c a t i o nL i s t e n e r ;

public MapControl ler mc ;

public MapOverlay ol , myOl , netOl ;

// =================================================

// Metodi

// =================================================

/∗∗∗ Metodo per l a c r e a z i o n e d i Overlay d e l l a mappa a

p a r t i r e d a l l a l i s t a d i

∗ punt i g e o g r a f i c i

∗∗ @param l i s t a

∗/public void createMarks ( ArrayList<GeoPoint> l i s t a ) {

// Creo l ’ o v e r l a y

Page 42: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 41

o l = new MapOverlay ( defaultMarker ) ;

// Aggiungo i punt i d e l l a l i s t a p r e s i d a l l a r u b r i c a

o l . addItems ( l i s t a ) ;

o l . go ( ) ;

mMapView . getOver lays ( ) . add ( o l ) ;

}

/∗∗∗ Creo aggiungo un u l t e r i o r e Overlay se t ro vo punt i d a l l a

r e t e

∗/public void createMarksFromNet ( ) {

// Prendo i punt i

ArrayList<Utente> array = new HTTPSend( ) . ge tLocat i ons ( ) ;

mMapView . i n v a l i d a t e ( ) ;

// Aggiunge un Overlay

netOl . mItemList . c l e a r ( ) ;

try {for ( Utente utente : array ) {netOl . addItem ( utente . getCoordinate ( ) , utente . getNome ( ) )

;

}} catch ( Exception e ) {e . pr intStackTrace ( ) ;

}

// v a i

netOl . go ( ) ;

// Tog l i e q u e l l o v e c c h i o

i f (mMapView . getOver lays ( ) . conta in s ( netOl ) ) {mMapView . getOver lays ( ) . remove ( netOl ) ;

}// mette q u e l l o nuovo

mMapView . getOver lays ( ) . add ( netOl ) ;

Page 43: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 42

}

/∗∗∗ Metodo usato per c a r i c a r e i l punto c l i c c a t o , e t u t t i i

punt i d e l l a l i s t a

∗/public void getCoords ( ) {Bundle ex t ra s = ge t In t en t ( ) . getExtras ( ) ;

this . coords = ext ra s . g e tS t r i ng ("coords" ) ;

// punto c l i c c a t o n e l l a l i s t a

p = getPoint ( this . coords ) ;

// punt i d e l l a l i s t a

l i s t aGeoPo in t s = new ArrayList<GeoPoint >() ;

this . l i s t aPun t i = GpsAndroid . l i s t aPun t i ;

}

/∗∗∗ A p a r t i r e d a l l a s t r i n g a i n s e r i t a , que s to metodo

f o r n i s c e in output

∗ l ’ o g g e t t o GeoPoint c o r r i s p o n d e n t e .

∗∗ l a s t r i n g a in input deve e s s e r e n e l formato : ” geo : xx .

yyyyyy , xx . yyyyyy#”

∗∗ @param i n p u t S t r

∗ S t r i n g a d i input

∗ @return GeoPoint

∗/public stat ic GeoPoint getPoint ( CharSequence inputStr ) {f ina l St r ing geoPattern = "(geo

:[\\-]?[0-9]{1,3}\\.[0-9]{1,6}\\,

[\\-]?[0-9]{1,3}\\.[0-9]{1,6}\\#)" ;

// Compila and usa e s p r e s s i o n i r e g o l a r i

Pattern pattern = Pattern . compi le ( geoPattern ) ;

Matcher matcher = pattern . matcher ( inputStr ) ;

boolean matchFound = matcher . f i nd ( ) ;

Page 44: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 43

i f (matchFound ) {// Prendi per buona l a prima occorrenza

St r ing groupStr = matcher . group (0) ;

// Fai i l parse d e l l a Lat/Long

St r ing l a t i dud i n e = groupStr . sub s t r i ng ( groupStr . indexOf (

":" ) + 1 ,

groupStr . indexOf ("," ) ) ;

S t r ing l ong i t ud in e = groupStr . sub s t r i ng ( groupStr . indexOf

("," ) + 1 ,

groupStr . indexOf ("#" ) ) ;

Float l a t = Float . par seF loat ( l a t i dud i n e ) ;

Float l o n g i t = Float . par seF loat ( l ong i t ud in e ) ;

// Crea i l GeoPoint in base a Lat/Long

p = new GeoPoint ( ( int ) ( l a t ∗ 1000000) , ( int ) ( l o n g i t ∗1000000) ) ;

}return p ;

}

@Override

protected boolean i sRouteDisp layed ( ) {return fa l se ;

}

/∗∗∗ Conf iguraz ione d e l l a Mappa

∗/public void setupMap ( ) {

// Qualche impostaz ione per l a mappa

setContentView (R. layout .map) ;

mMapView = (MapView) findViewById (R. id . mapview ) ;

mMapView . s e tC l i c k ab l e ( true ) ;

mMapView . s e t S a t e l l i t e ( fa l se ) ;

mc = mMapView . g e tCon t r o l l e r ( ) ;

// Aggiunge i l c o n t r o l l o d e l l o zoom

LinearLayout zoom = ( LinearLayout ) findViewById (R. id .

zoom holder ) ;

Page 45: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 44

zoomView = mMapView . getZoomControls ( ) ;

zoomView . setLayoutParams (new ViewGroup . LayoutParams (

ViewGroup . LayoutParams .WRAPCONTENT,

ViewGroup . LayoutParams .WRAPCONTENT) ) ;

zoom . addView ( zoomView) ;

mMapView . displayZoomControls ( true ) ;

// l i v e l l o d i zoom

mc. setZoom (11) ;

// Creo i markers da v i s u a l i z z a r e s u l l a mappa

defaultMarker = getResources ( ) . getDrawable (R. drawable .

marker ) ;

de faultMarker . setBounds (0 , 0 , de faultMarker .

g e t In t r in s i cWidth ( ) ,

de faultMarker . g e t I n t r i n s i cH e i g h t ( ) ) ;

// Creo g l i o v e r l a y per l a mia p o s i z i o n e e q u e l l a d e g l i

a l t r i

myOl = new MapOverlay ( defaultMarker ) ;

netOl = new MapOverlay ( defaultMarker ) ;

}

public void i n i t i a l i z eGPS ( ) {// uso LocationManager per o t t e n e r e l a p o s i z i o n e GPS

lm = ( LocationManager ) getSystemServ ice ( Context .

LOCATION SERVICE) ;

l o c a t i o nL i s t e n e r = new MyLocationListener ( ) ;

lm . requestLocat ionUpdates ( LocationManager .GPS PROVIDER,

0 , 0 ,

l o c a t i o nL i s t e n e r ) ;

}

public stat ic St r ing getMyId ( ) {// E ’ un emulatore , q u i n d i passo a mano i l mio i n d i r i z z o

/∗ re turn java . net . InetAddress . ge tLoca lHos t ( ) .

getHostAddress ( ) ; ∗/

Page 46: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 45

return "Francesco" ;

}

@Override

public void onCreate ( Bundle savedIns tanceState ) {super . onCreate ( savedIns tanceState ) ;

// S e t t a g g i per l ’ i n i z i a l i z z a z i o n e d e l l a mappa

setupMap ( ) ;

// I n i z i a l i z z o i l p r o v i d e r GPS

i n i t i a l i z eGPS ( ) ;

// Imposto t u t t e l e c o o r d i n a t e d i cu i ho b i sogno

getCoords ( ) ;

// Creo i marks da a p p l i c a r e s u l l a l i s t a

createMarks ( this . l i s t aGeoPo in t s ) ;

Toast . makeText ( this , getMyId ( ) , Toast .LENGTH SHORT) . show

( ) ;

try {mc. animateTo (p) ;

} catch ( Nul lPo interExcept ion e ) {Toast . makeText ( this , "Errore nel punto selezionato" ,

Toast .LENGTH SHORT) . show ( ) ;

}

// Crea i marks p rend end o l i d a l l a r e t e

Thread crea = new Thread ( ) {public void run ( ) {try {while ( true ) {Thread . s l e e p (1000) ;

showAdressResults . sendEmptyMessage (0 ) ;

}

} catch ( Inter ruptedExcept ion e ) {e . pr intStackTrace ( ) ;

Page 47: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 46

}}} ;c r ea . s t a r t ( ) ;

}

/∗∗∗ Handler che chiama l a fun z io ne che prende i punt i d a l l a

r e t e

∗/private Handler showAdressResults = new Handler ( ) {@Override

public void handleMessage ( Message msg) {createMarksFromNet ( ) ;

}} ;

public boolean onCreateOptionsMenu (Menu menu) {super . onCreateOptionsMenu (menu) ;

menu . add (0 , TOGGLE MAP, 0 , R. s t r i n g . toggle map ) ;

return true ;

}

public boolean onMenuItemSelected ( int f e a tu re Id , MenuItem

item ) {switch ( item . getItemId ( ) ) {case TOGGLEMAP:

i f ( this .mMapView . i s S a t e l l i t e ( ) )

this .mMapView . s e t S a t e l l i t e ( fa l se ) ;

else

this .mMapView . s e t S a t e l l i t e ( true ) ;

return true ;

}return super . onMenuItemSelected ( f ea ture Id , item ) ;

}}

Page 48: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 47

B.2 MapOverlay

La classe MapOverlay e una classe interna a AndroidMap, e cura la gestione

dei layer. In particolare si occupa della creazione di overlay per la stampa dei

punti sulla mappa, in base alle coordinate degli utenti.

private class MapOverlay extends ItemizedOverlay<

OverlayItem> {// ========================================

// v a r i a b i l i c l a s s e i n t e r n a

// ========================================

private ArrayList<OverlayItem> mItemList = new ArrayList<

OverlayItem >() ;

// ========================================

// metodi c l a s s e i n t e r n a

// ========================================

/∗∗∗ Contrut tore

∗/public MapOverlay ( Drawable pMarker ) {super ( pMarker ) ;

mItemList . c l e a r ( ) ;

}

/∗∗∗ Aggiunge i marker in base a i punt i d e l l a l i s t a

∗∗ @param l i s t a

∗/public void addItems ( ArrayList<GeoPoint> l i s t a ) {

// Qui aggiungo i marker

int i = 0 ;

for ( GeoPoint po int : l i s t a ) {mItemList . add ( i++, new OverlayItem ( point , po int . t oS t r i ng

( ) ,

Page 49: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 48

po int . t oS t r i ng ( ) ) ) ;

}}

public void addItems ( ArrayList<GeoPoint> l i s t a , ArrayList<

Str ing> myIds ) {// Qui aggiungo i marker

int i = 0 ;

for ( GeoPoint po int : l i s t a ) {mItemList . add ( i++, new OverlayItem ( point , myIds . get ( i ) ,

po int

. t oS t r i ng ( ) ) ) ;

}}

public void addItem ( GeoPoint punto ) {mItemList . add (new OverlayItem ( punto , punto . t oS t r i ng ( ) ,

punto

. t oS t r i ng ( )

+ "1" ) ) ;

}

public void addItem ( GeoPoint punto , S t r ing myId) {mItemList . add (new OverlayItem ( punto , myId , punto . t oS t r i ng

( ) ) ) ;

}

@Override

protected OverlayItem create I tem ( int pIndex ) {return mItemList . get ( pIndex ) ;

}

@Override

public void draw (Canvas canvas , MapView mapView , boolean

shadow ) {// I n i z i a l i z z o i l Paint

Paint pa int = new Paint ( ) ;

pa int . s e tTextS i z e (14) ;

pa int . s e tF i l t e rB i tmap ( true ) ;

Page 50: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 49

pa int . s e tAnt iA l i a s ( true ) ;

// Setup a c o l o r f o r our l o c a t i o n

pa int . s e t S t y l e ( S ty l e .FILL AND STROKE) ;

pa int . setARGB(255 , 255 , 255 , 255) ; // Nice s t r o n g Android

−Green

Paint pa int2 = new Paint ( ) ;

pa int2 . setARGB(150 , 100 , 100 , 100) ;

Point c = new Point ( ) ;

for ( OverlayItem p : mItemList ) {GeoPoint punto = p . getPoint ( ) ;

mapView . g e tP ro j e c t i on ( ) . t oP i x e l s ( punto , c ) ;

RectF f = new RectF ( c . x − ( (11 ∗ p . g e tT i t l e ( ) . l ength ( ) )

/ 2) ,

c . y − 50 , c . x + ((11 ∗ p . g e tT i t l e ( ) . l ength ( ) ) / 2) ,

c . y − 30) ;

canvas . drawRect ( f , pa int2 ) ;

// Draw our name

canvas . drawText (p . g e tT i t l e ( ) , c . x

− ( (7 ∗ p . g e tT i t l e ( ) . l ength ( ) ) / 2) , c . y − 35 , pa int ) ;

}

super . draw ( canvas , mapView , shadow ) ;

MapOverlay . boundCenterBottom ( defaultMarker ) ;

}

/∗∗∗ Metodo per a p p l i c a r e l e a g g i u n t e d i marker a l l a c l a s s e

∗/public void go ( ) {populate ( ) ;

}

/∗∗

Page 51: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 50

∗ Questo metodo v iene chiamato quando s i c l i c c a su un

marker , e mostra

∗ l e i n f o r m a z i o n i d e l punto c l i c c a t o ( via , cap e c i t t a )

∗/@Override

protected boolean onTap( int pIndex ) {

Geocoder g = new Geocoder (AndroidMap . this , Loca le . ITALY) ;

try {GeoPoint punto = mItemList . get ( pIndex ) . getPoint ( ) ;

Address l o c a t = g . getFromLocation (

(double ) punto . getLat itudeE6 ( ) / 1000000 ,

(double ) punto . getLongitudeE6 ( ) / 1000000 , 1) . get (0 ) ;

double l a t = Double . valueOf ( mItemList . get ( pIndex ) .

getSn ippet ( )

. s p l i t ("," ) [ 0 ] ) / 1000000;

double l on = Double . valueOf ( mItemList . get ( pIndex ) .

getSn ippet ( )

. s p l i t ("," ) [ 1 ] ) / 1000000;

Toast . makeText (

AndroidMap . this ,

mItemList . get ( pIndex ) . g e tT i t l e ( ) + "\n"

+ lo c a t . getAddressLine (0 ) + " - "

+ lo c a t . getAddressLine (1 ) + "\n" + "("

+ l a t + " , " + lon + ")" ,

Toast .LENGTH SHORT) . show ( ) ;

} catch ( Exception e ) {

Toast . makeText (AndroidMap . this , "Non trovato!" ,

Toast .LENGTH SHORT) ;

}

return true ;

}

Page 52: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 51

@Override

public int s i z e ( ) {return mItemList . s i z e ( ) ;

}}

B.3 MyLocationListener

E’ l’implementazione dell’interfaccia LocationListener. Viene usata per ri-

cevere notifiche dal gestore della locazione (LocationManager) ogni volta

che c’e una modifica della propria posizione. I metodi di questa classe sono

chiamati se il Listener e stato registrato dal gestore del GPS, attraverso il

metodo requestLocationUpdates(...)

private class MyLocationListener implements

Loca t i onL i s t ene r {/∗∗ Ogni v o l t a che cambia l a mia p o s i z i o n e , agg iorno i l

punto s u l l a

∗ mappa , e comunico l a mia p o s i z i o n e a l s e r v e r

∗/public void onLocationChanged ( Locat ion l o c ) {i f ( l o c != null ) {// Prendo i l punto in cu i mi t rov o

myLoc = new GeoPoint ( ( int ) ( l o c . ge tLat i tude ( ) ∗ 1E6) ,

( int ) ( l o c . getLongitude ( ) ∗ 1E6) ) ;

mMapView . i n v a l i d a t e ( ) ;

// Aggiunge l ’ o v e r l a y per l a mia p o s i z i o n e

myOl . mItemList . c l e a r ( ) ;

myOl . addItem (myLoc , AndroidMap . getMyId ( ) ) ;

myOl . go ( ) ;

// Tog l i e l ’ u l t imo o v e r l a y s

i f (mMapView . getOver lays ( ) . conta in s (myOl) ) {

Page 53: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE B. ANDROID E GOOGLE MAPS 52

mMapView . getOver lays ( ) . remove (myOl) ;

}

// . . . e aggiungo q u e l l o nuovo

mMapView . getOver lays ( ) . add (myOl) ;

// Comunico l a mia p o s i z i o n e a l s e r v e r

new HTTPSend( ) . send (AndroidMap . getMyId ( ) , myLoc) ;

}}

@Override

public void onProviderDisabled ( S t r ing prov ide r ) {}

@Override

public void onProviderEnabled ( St r ing prov ide r ) {}

@Override

public void onStatusChanged ( St r ing provider , int s tatus ,

Bundle ex t ra s ) {}}

Page 54: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Appendice C

Altre classi di utilita

C.1 HTTPSend

Classe che gestisce la comunicazione con il server. Viene chiamata dal Lo-

cationListener, cioe ogni volta che varia la propria posizione, e la invia al

server, mantenendone cosı aggiornate le coppie ID/Coordinate. Inoltre pren-

de dal server le posizioni degli altri utenti attualmente presenti nel sistema,

permettendone la stampa sulla mappa.

package com . android . demo . gpsAndroid ;

import . . .

public class HTTPSend {Defau l tHttpCl i ent h t t p c l i e n t ;

HttpResponse response ;

public HTTPSend( ) {h t t p c l i e n t = new Defau l tHttpCl i ent ( ) ;

}

public void send ( St r ing myId , GeoPoint p) {// Toast . makeText ( AndroidMap . t h i s , p . t o S t r i n g ( ) ,

// Toast .LENGTH SHORT) . show () ;

HttpPost ht tpos t = new HttpPost (

"http://www.ac.infn.it/seraf/tesi/putcoords.php" ) ;

53

Page 55: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE C. ALTRE CLASSI DI UTILITA 54

double l a t i t u d i n e = (double ) p . getLat itudeE6 ( ) / 1000000;

double l o ng i t ud in e = (double ) p . getLongitudeE6 ( ) /

1000000;

L i s t<NameValuePair> nvps = new ArrayList<NameValuePair >()

;

nvps . add (new BasicNameValuePair ("latitudine" , "" +

l a t i t u d i n e ) ) ;

nvps . add (new BasicNameValuePair ("longitudine" , "" +

long i tud in e ) ) ;

nvps . add (new BasicNameValuePair ("myId" , myId) ) ;

try {httpos t . s e tEnt i ty (new UrlEncodedFormEntity ( nvps , HTTP.

UTF 8) ) ;

// Post , check and show the r e s u l t ( not r e a l l y

s p e c t a c u l a r , but

// works ) :

re sponse = h t t p c l i e n t . execute ( ht tpos t ) ;

} catch ( Exception e ) {Log . e ("httpPost" , e . getMessage ( ) ) ;

e . pr intStackTrace ( ) ;

}}

public GeoPoint getLocat ion ( int id ) {

URL myFileUrl = null ;

try {myFileUrl = new URL(

"http://www.ac.infn.it/seraf/tesi/getpath.php?id=" +

id ) ;

} catch ( MalformedURLException e ) {e . pr intStackTrace ( ) ;

}try {HttpURLConnection conn = (HttpURLConnection ) myFileUrl

. openConnection ( ) ;

conn . setDoInput ( true ) ;

Page 56: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE C. ALTRE CLASSI DI UTILITA 55

conn . connect ( ) ;

InputStream i s = conn . getInputStream ( ) ;

BufferedInputStream b i s = new BufferedInputStream ( i s ) ;

/∗∗ Read b y t e s to the Buf fer u n t i l t h e r e i s noth ing more

to read (−1) .

∗/ByteArrayBuffer baf = new ByteArrayBuffer (50) ;

int cur rent = 0 ;

while ( ( cur r ent = b i s . read ( ) ) != −1) {baf . append ( (byte ) cur r ent ) ;

}

/∗ Convert the Bytes read to a S t r i n g . ∗/St r ing t e s t o = new St r ing ( baf . toByteArray ( ) ) ;

return AndroidMap . getPoint ( t e s t o ) ;

} catch ( IOException e ) {e . pr intStackTrace ( ) ;

}

return null ;

}

public ArrayList<Utente> ge tLocat i ons ( ) {ArrayList<Utente> array = new ArrayList<Utente >() ;

URL myFileUrl = null ;

try {myFileUrl = new URL(

"http://www.ac.infn.it/seraf/tesi/getpath.php?id=all" )

;

} catch ( MalformedURLException e ) {e . pr intStackTrace ( ) ;

}try {HttpURLConnection conn = (HttpURLConnection ) myFileUrl

. openConnection ( ) ;

conn . setDoInput ( true ) ;

conn . connect ( ) ;

Page 57: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE C. ALTRE CLASSI DI UTILITA 56

InputStream i s = conn . getInputStream ( ) ;

BufferedInputStream b i s = new BufferedInputStream ( i s ) ;

/∗∗ Read b y t e s to the Buf fer u n t i l t h e r e i s noth ing more

to read (−1) .

∗/ByteArrayBuffer baf = new ByteArrayBuffer (50) ;

int cur rent = 0 ;

while ( ( cur r ent = b i s . read ( ) ) != −1) {baf . append ( (byte ) cur r ent ) ;

}

/∗ Convert the Bytes read to a S t r i n g . ∗/St r ing t e s t o = new St r ing ( baf . toByteArray ( ) ) ;

S t r ing [ ] tokens = t e s t o . s p l i t ("\n" ) ;

for ( S t r ing k : tokens ) {St r ing [ ] a = k . s p l i t ("\t" ) ;

array . add (new Utente (AndroidMap . getPoint ( a [ 1 ] ) , a [ 0 ] ) ) ;

}return array ;

} catch ( Exception e ) {e . pr intStackTrace ( ) ;

}

return null ;

}}

C.2 Punto

Semplice classe che serve a contenere informazioni sul punto in cui si trova

ogni utente presente nel sistema, come il suo nome e le sue coordinate.

package com . android . demo . gpsAndroid ;

Page 58: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE C. ALTRE CLASSI DI UTILITA 57

/∗∗∗ Classe che deve contenere i n f o r m a z i o n i r e l a t i v e a l punto

che verr a po i

∗ stampato s u l l a mappa

∗∗ @author Francesco

∗/public class Punto {private St r ing id , nome , coords ;

/∗∗∗ C o s t r u t t o r e

∗/public Punto ( St r ing id , S t r ing nome , S t r ing coords ) {this . id = id ;

this . nome = nome ;

this . coords = coords ;

}

public St r ing getCoords ( ) {return coords ;

}

public St r ing get Id ( ) {return id ;

}

public St r ing getNome ( ) {return nome ;

}}

C.3 Utente

L’unico scopo di questa classe e, una volta istanziata in un oggetto, di avere

una lista di Utenti da poter gestire, e stamparne la posizione sulla mappa,

partendo dalle coordinate.

Page 59: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

APPENDICE C. ALTRE CLASSI DI UTILITA 58

package com . android . demo . gpsAndroid ;

import com . goog l e . android . maps . GeoPoint ;

public class Utente {GeoPoint coord inate ;

S t r ing nome = new St r ing ( ) ;

public Utente ( GeoPoint p , S t r ing n) {this . c oo rd ina te = p ;

this . nome = n ;

}

public GeoPoint getCoordinate ( ) {return coord inate ;

}

public St r ing getNome ( ) {return nome ;

}}

Page 60: Sviluppo di un applicativo di localizzazione GPS per Google … do gruppo rientrano la rete satellitare GPS (Global Positioning System), i sistemi di posizionamento peer to peer o

Bibliografia

Bibliografia

[1] J. Rosenberg et al. STUN - Simple Traversal of User Datagram Protocol

(UDP) Through Network Address Translators (NATs) . IETF RFC 3489,

marzo 2003.

[2] T. Imielinski et al. GPS-Based Addressing and Routing. IETF RFC 2009,

novembre 1996.

[3] J. Arkko et al. Internet Protocol Version 6 (IPv6) for Some Second and

Third Generation Cellular Hosts. IETF RFC 3316, aprile 2003

[4] P. Srisuresh et al. State of Peer-to-Peer (P2P) Communication across

Network Address Translators (NATs) IETF RFC 5128, marzo 2008.

Riferimenti

[5] General Packet Radio Service, Wikipedia,

http://it.wikipedia.org/wiki/GPRS

[6] Universal Mobile Telecommunications System, Wikipedia,

http://it.wikipedia.org/wiki/Umts

[7] Sistema informativo territoriale, Wikipedia,

http://it.wikipedia.org/wiki/Sistema informativo territoriale

[8] Peer to Peer, Wikipedia, http://it.wikipedia.org/wiki/P2p

59