Dipartimento di Matematica e Informatica Corso di Laurea in Informatica Progettazione e Realizzazione di un Cruscotto Virtuale Geolocalizzato per Android Relatore: Prof. Federico Bergenti Correlatore: Ing. Andrea Terzi Candidato: Morsia Erica Matricola: 221401 Anno Accademico 2013/2014 Ai miei angeli Indice 1 Introduzione 5 2 Tecnologie di geolocalizzazione 2.1 Analisi delle tecnologie utilizzabili 2.1.1 GPS . . . . . . . . . . . . 2.1.2 GLONASS . . . . . . . . . 2.1.3 GPS Assistito . . . . . . . 2.2 Tecnologie future . . . . . . . . . 2.2.1 Galileo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 10 13 17 21 21 3 Un Applicazione di Tracking 24 3.1 Analisi e specifica dei requisiti . . . . . . . . . . . . . . . . . . 24 3.2 Progettazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4 Capitolo 1 Introduzione Il progetto di questa tesi consiste nel creare un’applicazione per Android che visualizzi un cruscotto, utilizzabile dal proprio smartphone o tablet, che sfrutti le tecnologie di geolocalizzazione per fornire informazioni all’utente. Un’applicazione di geolocalizzazione è un’applicazione che sfrutta la capacità del dispositivo di rilevare la propria posizione geografica nel mondo reale per dare all’utente informazioni o nuove funzionalità. Il progetto dell’applicazione MotoSpeed è nato dall’idea di creare un cruscotto virtuale che sfrutta la geolocalizzazione per ottenere le informazioni; pensato principalmente per i motoveicoli (motocicli, ...), ma utilizzabile con qualsiasi veicolo oppure a piedi. L’applicazione è stata richiesta per la piattaforma Android, utilizzabile sia su tablet che su smartphone. La funzione principale dell’applicazione consiste nel rintracciare, attraverso la geolocalizzazione, la posizione dell’utente in modo più preciso possibile e, grazie alle informazioni del dispositivo, individuare coordinate geografiche, altitudine, velocità. Sfruttando i dati raccolti dal dispositivo possiamo calcolare la distanza percorsa, la velocità media e quella massima. Inoltre è previsto anche un allarme, impostabile dal cliente, sul chilometraggio. Questo allarme è nato come avviso per il conducente, per le motociclette non previste di sensore per il rifornimento, in modo che possa essere impostato con il chilometraggio che manca per il prossimo rifornimento. Attualmente l’allarme è solo visivo. Non è necessario utilizzare tale allarme esclusivamente come notifica per il rifornimento, può anche essere usata, infatti, come semplice avviso di superamento del limite di chilometraggio impostato. È stata prevista anche l’opzione di ripetere la notifica visiva ogni 5 km dall’attivazione del primo allarme. 5 CAPITOLO 1. INTRODUZIONE Per rendere l’applicazione ancora più interessante è stato previsto un tracking del percorso con il salvataggio del tracciato in 3 formati differenti: .csv (formato compatibile con Microsoft Excel), .kml (formato compatibile con Google Earth) e .gpx (formato compatibile con i navigatori satellitari). In questi file viene salvato il percorso istante per istante in modo tale che: nel primo (.csv) si abbia un diario di bordo dettagliato con tutte le informazioni visibili in quel momento sul cruscotto (data, orario, coordinate, velocità attuale, velocità media, velocità massima, distanza percorsa fino a quel momento, ...); negli altri due file (.kml e .gpx) venga registrato il percorso in modo tale che si possa visualizzare il tracciato attraverso altre applicazioni o altri dispositivi. Esistono attualmente altre applicazioni per i dispositivi Android che hanno utilizzi simili, ma non raggruppano tutte queste funzionalità insieme. La funzione che caratterizza l’applicazione è la presenza dell’allarme per il rifornimento. Confrontiamo la nostra applicazione con altre facilmente reperibili su Google Play con funzionalità simili: • esistono applicazioni che mostrano il tracciato percorso, ma che non salvano i file dove poterlo visualizzare in un secondo momento; • altre permettono di vedere la velocità media, massima e attuale, la distanza percorsa ma che non hanno la possibilità di salvataggio del percorso. La nostra applicazione è utilizzabile con ogni mezzo di trasporto. È possibile utilizzarlo anche come conta chilometri da passeggio, esistono già applicazioni specifiche per le passeggiate, che si basano però sul moto ondulatorio del passo, quindi meno precise nel calcolare i chilometri percorsi. Con Motospeed invece si può vedere quanta strada è stata percorsa: è possibile, inoltre, visualizzare in un secondo momento il tracciato della passeggiata, utile anche per le escursioni a piedi o in bicicletta, in quanto traccia esattamente il percorso non necessariamente sul manto stradale. Questa applicazione non è nata come navigatore, ma si possono usare i file creati per vedere l’itinerario percorso oppure, scaricati su appositi dispositivi, usare il tragitto salvato in precedenza come tracciato per il navigatore. Esistono poi applicazioni per la ricerca degli hotel o dei punti di interesse nelle città, oppure degli autovelox. Motospeed, nella versione base attuale, non implementa questa funzionalità. L’applicazione verrà interfacciata in un secondo momento con un database contenente i principali punti di interesse delle città: hotel, ristoranti, autovelox e stazioni di servizio. Quest’ultimo 6 CAPITOLO 1. INTRODUZIONE punto in modo particolare dato il target dell’applicazione rivolto principalmente a conducenti di moto e automobili.Si aggiungerà, inoltre, la possibilità di salvare, attraverso l’interfaccia, i nuovi punti di interesse o autovelox, condivisibili con altri utenti. Attualmente l’applicazione è disponibile sul Google Play gratuitamente nella versione di base, senza pubblicità ( dettagli in Fig.1 e Fig.2 ). Le funzionalità future saranno abilitate nella versione a pagamento con anche la possibilità di login con l’accesso ai propri dati e statistiche anche da pc attraverso un portale in modo da poterli condividere con amici e altri utenti. Per garantire una precisione adeguata per il salvataggio dei dati si sono studiati le tecnologie di geolocalizzazione, vediamo in dettaglio. 7 CAPITOLO 1. INTRODUZIONE Fig. 1: Ricerca di MotoSpeed in Google Play. Fig. 2: Descrizione di MotoSpeed su Google Play. 8 Capitolo 2 Tecnologie di geolocalizzazione La geolocalizzazione è l’identificazione della posizione geografica nel mondo reale di un dato oggetto. Esistono attualmente varie tecnologie che permettono la localizzazione, tra le più conosciute e utilizzate possiamo elencare il sistema GPS, il sistema GLONASS, la localizzazione tramite la rete telefonica e tramite Internet. Le tecnologie di geolocalizzazione sono utilizzate in un ampia gamma di settori che spaziano dagli utilizzi militari (guida di missili intelligenti, tracciamento di traiettorie per azioni militari ...) a quelli civili. Negli ultimi decenni la geolocalizzazione per scopi civili ha avuto un grande sviluppo, ampliando a dismisura i campi in cui è utilizzata. Possiamo infatti trovare aziende specializzate in software per l’utilizzo della geolocalizzazione in molti settori. Nell’agricoltura, ad esempio, la localizzazione satellitare viene utilizzata per guidare trattori nei campi attraverso percorsi predefiniti calcolati in precedenza in modo da ottimizzare la coltura. Le industrie attraverso dispositivi e software appositi possono tracciare i materiali spediti o da spedire in modo da gestire le tempistiche e mantenere la tracciabilità dei prodotti. In campo nautico e aeronautico vengono usate le tecnologie di geolocalizzazione per tracciare le rotte dei veicoli e monitorare il traffico. Inoltre ogni veicolo contiene almeno una scatola nera che registra tutti i dati comprensivi di coordinate geografiche ricavate da un dispositivo interno per la localizzazione. Vengono utilizzate le tecnologie di geolocalizzazione anche dai soccorsi alpini per rintracciare i dispersi sotto le valanghe o nei boschi, la guardia forestale può usarli per scoprire e monitorare i percorsi e le migrazioni degli animali per studiare il loro comportamento. Agenzie di assicurazione hanno iniziato ad installare dispositivi di localizzazione sulle automobili e altri veicoli per poter rintracciare il mezzo in caso di 9 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE furto o incidente in modo da indicare alle autorità competenti la posizione precisa. La diffusione dei navigatori satellitari rende l’utilizzo delle tecnologie di geolocalizzazione un’abitudine di molte persone. Grazie alla diffusione degli smartphone si è iniziato a creare applicazioni non solo per la la navigazione, ma anche per trovare informazioni relative a punti di interesse vicino alla propria posizione, sia per scopi turistici come gli hotel, ma anche quotidiani come, ad esempio, le stazioni di servizio. 2.1 Analisi delle tecnologie utilizzabili Per la nostra applicazione abbiamo studiato le tecnologie utilizzabili attraverso i dispositivi Android: localizzazione GPS e GLONASS, localizzazione attraverso la rete cellulare e la localizzazione attraverso le reti WiFi. Per poter sfruttare la localizzazione mentre si è in viaggio abbiamo scartato la tecnologia di localizzazione tramite la rete WiFi, in quanto non esistono reti WiFi estese su tutto il territorio. Analizziamo quindi le tecnologie utilizzabili. 2.1.1 GPS Il GPS (acronimo di Global Positioning System) è un sistema di posizionamento e navigazione satellitare che fornisce la posizione e l’orario ai ricevitori GPS, questi possono essere dispositivi per la navigazione, ma anche pc, telefoni cellulari e smartphone. La localizzazione GPS è utilizzabile ovunque, sia sulla terra che nelle immediate vicinanze, in cui vi sia un contatto con almeno 4 satelliti del sistema GPS. La localizzazione avviene tramite la trasmissione di un segnale radio da parte di ciascun satellite e l’elaborazione dei valori ricevuti da parte del ricevitore. Il sistema fornisce funzionalità militari e civili e viene gestito, mantenuto e reso accessibile a tutti dal governo degli Stati Uniti d’America. Il servizio fornito può essere utilizzato da chiunque abbia un dispositivo di ricezione GPS. 10 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE Fig. 3: Ricostruzione orbite satelliti del sistema GPS. È nato nel 1973 dal dipartimento di difesa degli Stati Uniti, il progetto del GPS doveva infatti superare i limiti dei sistemi di navigazione precedentemente usati. Nel 1991 il servizio fino ad allora usato solo per scopi militari fu reso disponibile anche per usi civili, i due tipi di utilizzo sono però separati: PPS (Precision Position System) utilizzato dall’esercito statunitense e SPS (Standard Position System) per usi civili, commerciali e scientifici. Per mantenere separati questi utilizzi vengono usati due diversi canali di trasmissione. Nel canale dedicato agli usi civili il Selective Availability (SA) introduceva errori intenzionali in modo da avere precisioni minori, errori di circa 100 metri dalla posizione effettiva. Dal 2000 è stata aumentata la precisione per il servizio civile, ma sono stati introdotti dei limiti in modo che non si riesca a monitorare le operazioni militari attraverso SPS. Attualmente gli USA stanno lavorando alla nuova generazione di GPS (GPS III) con tecnologie sempre più moderne e nuove funzionalità. La struttura del GPS si divide in tre parti: • Space Segment; • Control Segment; • User Segment. Lo Space Segment è composto dai satelliti GPS. I satelliti del sistema GPS sono nella fascia MEO (Medium Earth Orbit), attualmente ci sono 32 satelliti GPS in orbita, il sistema iniziale prevedeva solo 24 satelliti divisi in 6 orbite separate, all’aumentare dei satelliti, utili per la ridondanza delle informazioni e per la precisione, si è abbandonato l’iniziale costellazione è stata modificata secondo uno schema non uniforme, mostrato in Fig.3, che si è dimostrato maggiormente affidabile in caso di guasti contemporanei a più satelliti. 11 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE Il Control Segment è composto da: • una stazione di controllo principale (Master Control Station); • alcune antenne terrestri dedicate; • stazioni di controllo dedicate. La stazione di controllo principale accede a tutte le antenne e le stazioni dedicate al GPS e anche a certe antenne della rete satellitare dell’aeronautica militare statunitense per ottenere capacità di controllo e comando aggiuntive. Le stazioni di controllo dedicate, insieme ad altre stazioni della NGA (National Geospatial-Intelligence Agency) condivise con altri paesi del mondo, controllano le traiettorie dei satelliti. Le informazioni ricavate vengono inviate alla stazione di controllo centrale che, grazie alle antenne terrestri, comunica con i satelliti per i necessari aggiornamenti: sincronizzazione degli orologi atomici a bordo dei satelliti e migliorare la traiettoria. Durante la fase di comunicazione e di aggiornamento il satellite viene disattivato in modo che i terminali degli utenti non possano ricevere informazioni distorte. Il segmento utente (User Segment) è composto da tutti i ricevitori militari che usano il servizio PPS e tutti i ricevitori civili, commerciali e scientifici che usano il servizio SPS. Il sistema GPS si basa su un sistema di posizionamento sferico, che parte dalla misura del tempo impiegato dal segnale radio a percorrere la distanza satellite-ricevitore. Fig. 4: Posizionamento attraverso il sistema GPS. 12 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE Tutti i satelliti GPS al loro interno hanno un orologio atomico molto stabile e sincronizzato dalla stazione di controllo principale con tutto il resto del sistema. I satelliti, quando attivi, continuano ad trasmettere in broadcast la loro posizione e l’orario segnato dal loro orologio interno. I ricevitori GPS, tutti i dispositivi sia di uso militare che civile, monitorano più satelliti, almeno quattro, ricevono le informazioni dei segnali inviati per trovare la propria posizione. Grazie alle informazioni captate il ricevitore calcola attraverso algoritmi (chiamati Navigation Equations) la propria posizione in tre dimensioni convertita poi in coordinate geografiche (latitudine, longitudine e altitudine). Queste coordinate sono misurate su un modello elissoidale della Terra, in futuro sarà possibile calcolarle sul modello di un geoide, molto più vicino alla realtà. Sono necessari almeno quattro satelliti visibili dalla posizione dell’utente, in quanto si devono ricavare le tre coordinate: latitudine, longitudine e altitudine, ma bisogna controllare anche il tempo, infatti il sistema GPS è sincronizzato con orologi atomici di altissima precisione, i dispositivi che ricevono le informazioni però non hanno al loro interno orologi cosı̀ precisi. Se i ricevitori GPS avessero al loro interno un orologio atomico come quelli utilizzati dai satelliti GPS, per calcolare la posizione dell’utente basterebbero solo tre satelliti visibili, ma il tipo di equipaggiamento richiesto aumenterebbe di troppo il costo e la complessità dei dispositivi dei clienti. Le applicazioni più diffuse del sistema GPS in campo civile sono: • navigatori satellitari (terrestri e nautici); • applicazioni per emergenze e/o soccorso (segnalazione di incidenti, infortuni, incendi, ...); • attività sportive all’aria aperta (trekking, alpinismo, cicloturismo, ...). 2.1.2 GLONASS Un altro sistema di geolocalizzazione è GLONASS (GLObal NAvigation Satellite System), è un sistema satellitare di navigazione globale russo, controparte del sistema GPS americano. GLONASS è gestito e monitorato dall’esercito russo. Il progetto di GLONASS nasce negli anni ’80 come sistema di localizzazione per scopi militari. L’Unione Sovietica era impegnata nella guerra fredda in quegli anni e il lancio dei primi satelliti fu mascherato come progetto per determinare la posizione degli aeromobili per l’aviazione civile, dei trasporti 13 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE marittimi e pescherecci dell’Unione Sovietica. Nel 1995 fu completato il lancio di tutti i satelliti previsti dal progetto iniziale. GLONASS era molto efficiente per il posizionamento dei terminali fermi o in movimento molto lento, ma non era altrettanto affidabile sui dispositivi mobili in quanto serviva molto tempo per riuscire ad acquisire il segnale, si parla anche di ore, e quando si riusciva ad ottenere una connessione stabile con il sistema la localizzazione era approssimata con scarti di centinaia di metri. La Russia negli anni successivi fu vittima di una grave crisi finanziaria che portò all’accantonamento del progetto, non avevano fondi nemmeno per mantenerlo attivo, infatti nel 2002 era operativa solo una piccola parte, con molti satelliti fuori uso e senza la possibilità di lanciarne altri. Negli anni successivi, grazie ad accordi economici con altri paesi e la fine della crisi economica interna, si riprese a lavorare al GLONASS lanciando in orbita satelliti di nuova generazione. Nel 2006 venne messo a disposizione dei civili il GLONASS con delle restrizioni di posizionamento: l’accuratezza per gli scopi militari era di 10 metri, mentre per scopi civili aumentava a più di 20 metri. L’anno successivo venne liberalizzato il sistema GLONASS in modo che civili e militari avessero lo stesso servizio, senza restrizioni di alcun tipo e in modo gratuito. Qualche anno dopo, intorno al 2010 il sistema GLONASS tornò pienamente operativo. Il principale problema del sistema GLONASS era la diffusione dei ricevitori: erano infatti molto costosi e poco reperibili, per questo intorno al 2011 si iniziarono a fare i primi accordi con i produttori di ricevitori GPS in modo da crearne dei nuovi compatibili anche con il sistema GLONASS. Il governo russo pianificò anche l’utilizzo forzato del sistema GLONASS nei dispositivi montati sulle automobili russe, ma anche in quelle di case automobilistiche straniere con stabilimenti per la produzione in Russia. Dal 2012 la compatibilità dei dispositivi di geolocalizzazione con il sistema GLONASS è diventata una caratteristica comune grazie all’introduzione della compatibilità del sistema nei chip maggiormente utilizzati per la produzione di smartphone e tablet. Il supporto del sistema GLONASS è garantito da produttori di smartphone come ad esempio Apple (iPhone), Samsung (principalmente la serie Galaxy) e Nokia (Lumia), anche se negli ultimi dispositivi che montano come sistema operativo Android 4.4 (Kit Kat) sono stati rilevati dei problemi nel supporto del sistema GLONASS al contrario dei precedenti. Il sistema GLONASS è formato da 31 satelliti, di cui 24 operativi e altri di scorta per i guasti, orbitanti nella fascia MEO ad un altitudine più bassa di quelli del sistema GPS. I satelliti GLONASS sono disposti su tre piani orbitali di 8 satelliti ognuno, in modo che da ogni punto siano visibili almeno 14 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE 5 satelliti alla volta. Attualmente la precisione di localizzazione del sistema GLONASS è più bassa di quella del sistema GPS, infatti lo scarto della posizione è di 5/10 metri nel piano orizzontale e circa 15 metri nel piano verticale. GLONASS si caratterizza però per la sua precisione più accurata alle alte latitudini, vicino ai poli, che è più affidabile e veritiero del sistema GPS. Esistono attualmente altri progetti su GLONASS: • ERA GLONASS: (in russo con ERA si intende la reazione d’urgenza in caso di incidenti) è un progetto per il monitorare e lanciare allarmi in caso di incidenti, la prima fase di questo progetto è quella di equipaggiare tutte le automobili con ricevitori GLONASS e creare una tecnologia che consenta di lanciare l’allarme in caso di incidente o situazione di pericolo, fornire agli operatori del servizio di emergenza i dati relativi alla posizione in modo da inviare i soccorsi sul posto. La seconda fase del progetto è di equipaggiare con la stessa tecnologia anche i telefoni e creare dei telefoni intelligenti che inviano le richieste d’aiuto in caso di pericolo. • Social GLONASS: è un progetto per aiutare persone con disabilità, anziani e bambini. Questo progetto ha l’obiettivo di aiutare queste persone a viaggiare sicuri e monitorati in modo che non si possano smarrire. Questo progetto è stato pensato principalmente per le persone affette da alzaimer, che spesso non possono o non vogliono uscire di casa per la paura di non ricordarsi dove sono diretti e perdersi, e per i bambini, in Russia infatti molti bambini si sono persi e purtroppo il 10% non è stato ritrovato. Con questo sistema ogni utente può essere monitorato negli spostamenti in modo da non potersi smarrire e ritrovare la strada. 15 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE Analizziamo ora le differenze tra i sistemi GPS e GLONASS. I due sistemi sono simili, in quanto entrambi sono sistemi satellitari con una struttura simile: GPS caratteristica tipo orbita numero orbite altitudine periodo di orbita orologio atomico a bordo crittografia nei segnali GLONASS circolare 6 da 4 satelliti l’una fascia MEO (20.180 Km) 11h 58m si circolare 3 da 8 satelliti l’una fascia MEO (19.140 Km) 11h 15m si si no In Fig.5 confrontiamo le orbite dei sistemi di navigazione satellitare GPS, GLONASS, Galileo e Compass (Medium Earth Orbit) con le orbite di International Space Station (stazione spaziale internazionale) , Hubble Space Telescope (telescopio spaziale Hubble) e Iridium constellation orbit(Low Earth Orbit, costellazione di satelliti per la telefonia satellitare), Geostationary Earth Orbit, e la dimensione della Terra. Fig. 5: Altitudine delle orbite dei satelliti a confronto. 16 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE L’utilizzo coordinato di entrambe le costellazioni ha dei vantaggi notevoli: si possono osservare più satelliti contemporaneamente ottenendo precisioni maggiori e risparmiando sui tempi di acquisizione. La localizzazione sui dispositivi mobili è attualmente molto utilizzata. L’unico difetto, nonostante l’utilizzo coordinato di GPS e GLONASS, è la lentezza con cui il terminale acquisisce la propria posizione al momento dell’accensione, in media infatti impiega 45-90 secondi. Questo ritardo è dovuto alla necessità di ricevere i segnali dai satelliti in vista. Per questo motivo è nato un sistema che integrasse il GPS+GLONASS in modo da avere una posizione anche approssimata in tempi più brevi, questo sistema si chiama GPS Assistito. L’utilizzo dei sistemi satellitari, nei dispositivi come smartphone e tablet, è integrato e non viene indicato il sistema specifico dal quale si ricava la localizzazione, si può quindi pensare che il dispositivo utilizzi solo uno dei sistemi disponibili. Possiamo per questo motivo generalizzare utilizzando d’ora in avanti come unico termine di paragone il sistema GPS, attualmente più conosciuto e di maggiore compatibilità sui dispositivi più diffusi. 2.1.3 GPS Assistito Il GPS Assistito (o Assisted GPS o A-GPS) è un sistema nato per abbattere i tempi necessari alla prima localizzazione durante l’uso di un terminale GPS. Mostra la sua utilità soprattutto nei centri urbani in cui è più difficile acquisire il segnale dei satelliti necessari per iniziare la localizzazione con il GPS. Il GPS Assistito si è molto diffuso associato ai sistemi di localizzazione basati sulla telefonia cellulare. Lo scopo principale di questo sistema è quindi di assistere il ricevitore GPS nel calcolo della posizione in modo approssimato ma veloce per poter sveltire l’acquisizione del segnale dei satelliti GPS. Il sistema si basa sulle reti telefoniche: • dispositivo mobile che si può connettere alla rete cellulare e dotato di sensore GPS; • rete telefonica nazionale; • Assistance Server. 17 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE Fig. 6: Funzionamento GPS Assistito. In generale il funzionamento del GPS Assistito è il seguente: ogni cella di telefonia mobile sul territorio ha una posizione fissa, per implementare questo sistema ogni cella ricava ad ogni istante quali satelliti del sistema GPS sono visibili in quel momento dalla sua posizione. Il terminale A-GPS, che vuole conoscere la propria posizione, si connette attraverso la rete telefonica alla cella e da questa ad un Assistence Server, al quale arrivano le informazioni sui satelliti GPS ricavate dalla cella. Dopo aver elaborato tutte le informazioni ricevute dalla cella, relative sia ai satelliti visibili da essa che la distanza dal terminale dalla cella, il Server invia all’utente, tramite la rete telefonica, una posizione approssimata e i dati relativi ai satelliti visibili da quella zona. È ragionevole assumere che il terminale A-GPS veda i medesimi satelliti che sono visibili alla cella a cui è agganciato, infatti nella rete telefonica le celle coprono aree che vanno da qualche centinaio di metri a più chilometri, grazie alle informazioni scambiate tra le celle e i dispositivi (ad esempio attenuazione del segnale, scambio di cella, ...) si può capire approssimativamente la posizione del dispositivo. Il terminale, grazie le informazioni ricevute dal Server, sa quali satelliti cercare senza dover perdere tempo prezioso nell’interrogare i satelliti oltre la linea dell’orizzonte. La localizzazione, quindi, inizia in modo più veloce del solo utilizzo del GPS. Ci sono due tipi di GPS Assistito attraverso la rete mobile: • A-GPS MSB • A-GPS MSA 18 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE A-GPS MSB Nella modalità MSB (Mobile Station Based) il terminale è in grado di acquisire da Server informazioni sui satelliti (tempo e posizione) e sfruttare questi dati per la ricezione GPS. In caso di assenza di connessione con la rete telefonica, il terminale resta in grado di calcolare la propria posizione funzionando come un normale ricevitore GPS. Pressoché tutti gli smartphone moderni funzionano in questo modo. A-GPS MSA Nella modalità MSA (Mobile Station Assisted) il server fornisce al terminale i dati di assistenza, attraverso i quali vengono acquisiti i segnali dai satelliti. Tali segnali vengono fotografati e inviati in pacchetti al server che calcola la posizione che viene trasmessa al terminale tramite la rete mobile. In caso di assenza di connessione, il terminale non è in grado di funzionare in modo autonomo come un normale terminale GPS. Non è possibile quindi calcolare la posizione in assenza di connessione dati. Non consideriamo questo caso di A-GPS in quanto, come prima accennato, non è utilizzato negli smartphone. 19 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE Per scegliere quale tecnologia utilizzare per la nostra applicazione abbiamo confrontato tutte le caratteristiche dei due sistemi:GPS e A-GPS MSB (che per semplicità chiameremo solo A-GPS o GPS assistito). caratteristiche GPS A-GPS Fonti delle infor- segnali radio dai satelliti segnali radio dai satelliti mazioni per la GPS e Assistance Server tramilocalizzazione te la rete telefonica per le comunicazioni cellulari. Velocità i terminali GPS possono im- i terminali A-GPS determipiegare anche qualche minu- nano la posizione più veloto per trovare la posizione, cemente perché hanno una perché serve più tempo per connessione migliore con le stabilizzare una connessione celle della rete telefoniche con almeno quattro satelliti. piuttosto che con i satelliti, riuscendo comunque a ricavare una posizione approssimata. Affidabilità i terminali GPS possono de- la posizione determinata terminare la posizione con tramite il GPS Assistito è un accuratezza di un metro. meno accurata di quella calcolata dal GPS, in particolare all’inizio della localizzazione quando il server invia una posizione approssimata in base alla cella e alla distanza da essa. Costi i terminali GPS comunica- l’utilizzo del sistema A-GPS no direttamente con i satel- ha un costo, è infatti basato liti del sistema GPS in mo- sul trasferimento dati nella do gratuito, quindi non ha rete mobile, si deve quincosti aggiuntivi. di pagare il costo della connessione per poter utilizzare questo servizio. Si è deciso di non utilizzare la tecnologia del GPS Assistito per la nostra applicazione. Nonostante i vantaggi in termini di tempo all’inizio della localizzazione, la posizione inizialmente ricavata dal sistema A-GPS, essendo 20 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE approssimata, a volte non coincide con la localizzazione effettuata dal sistema GPS, l’errore di posizionamento sarebbe troppo elevato, nell’ordine delle centinaia di metri. Questo comporterebbe un problema non solo nelle mappe salvate, ma anche nel calcolo della velocità in quanto prima di trovare la giusta posizione le coordinate possono variare nel giro di pochi secondi di molti metri, il dispositivo quindi calcola velocità molto elevate anche se l’utente è fermo nello stesso punto. È stato, per questi motivi, preferito l’utilizzo del solo GPS in quanto, pur mettendo più tempo nella ricezione del segnale, non rileva variazioni di posizione cosı̀ grandi ed è preciso fin dalla prima localizzazione. 2.2 Tecnologie future Abbiamo analizzato anche la possibilità di sfruttare nuove tecnologie in futuro, cercando di tenere l’applicazione il più possibile distaccata dalla tecnologia di localizzazione utilizzata. Infatti attualmente si stanno sviluppando nuove tecnologie di geolocalizzazione che a breve saranno operative, ad esempio il progetto Galileo. 2.2.1 Galileo È un GNSS (Global Navigation Satellite System), attualmente in fase di sviluppo da parte dell’Unione Europea e dell’Agenzia Spaziale Europea (ESA). Uno degli obiettivi di Galileo è quello di fornire un sistema di geolocalizzazione molto preciso su cui l’Europa può fare affidamento, in modo da diventare indipendente dai provider americani (GPS) e russi (GLONASS). L’utilizzo di Galileo ad una bassa precisione sarà fornito gratuitamente, mentre l’alta precisione sarà disponibile per tutti gli utenti che pagheranno un prezzo commerciale. L’idea del progetto Galileo è nata nel 1999 con la creazione di un team di ingegneri provenienti da Germania, Francia, Italia e Inghilterra. L’Unione Europea ha reso ufficiale il progetto Galileo nel 2003 e si è iniziata la realizzazione. Galileo inizierà a fornire i primi servizi nel 2015, ma l’attivazione completa è prevista per il 2020. Il sistema di Galielo è composto da: 21 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE • 30 satelliti in orbita: 24 funzionanti e 6 di ricambio. Orbitanti su tre diversi piani nella fascia MEO (Medium Earth Orbit). • Controllo centrale, in Germania. • Centro della missione, in Italia. • Stazioni di traking e salvataggio. Questo sistema è stato pensato principalmente per usi civili, al contrario dei sistemi più military-oriented come GPS e GLONASS. Il sistema GPS, ad esempio, è identificato come military-oriented in quanto il governo USA si riserva il diritto di limitare la precisione immettendo nei dati forniti errori intenzionali in modo da non fornire un servizio troppo accurato; inoltre, in caso di necessità, l’esercito americano può spegnere le comunicazioni dei satelliti per gli usi civili e utilizzare solo la parte militare delle comunicazioni. Galileo invece prevede lo spegnimento delle funzionalità solo in casi estremi di conflitti mondiali, ma manterrà la stessa precisione sia per gli utilizzi civili che militari. Ci sono stati accordi tra Unione Europea e Stati Uniti in modo da garantire la coesistenza di Galileo e GPS e la possibilità di un utilizzo combinato dei due sistemi. Questo permetterà agli utenti già utilizzatori dei servizi GPS di poter iniziare ad usufruire anche dei servizi offerti da Galileo senza dover cambiare il dispositivo. I principali servizi che Galileo si propone di implementare sono: • Open Access Navigator: servizio di localizzazione disponibile senza cambiare i dispositivi e con precisione al di sotto del metro. • Commercial Navigation (criptato): servizio di localizzazione a pagamento con precisione fino al centimetro. Galileo intende fornire una precisione orizzontale e verticale con errori al massimo di un metro e migliorare il servizio di posizionamento alle alte latitudini rispetto ai sistemi esistenti. • Safety of Life Navigation: servizio gratuito per applicazioni in cui la precisione della posizione è essenziale. • Public Regulated Navigation (criptato): disponibilità della localizzazione anche se i servizi degli altri provider non sono disponibili. 22 CAPITOLO 2. TECNOLOGIE DI GEOLOCALIZZAZIONE • Search And Rescue: Galileo prevede di fornire una funzione di search and rescue (SAR) globale, ovvero un servizio di soccorso utilizzabile da tutti gli utenti di Galileo. Per garantire questo servizio i satelliti saranno dotati di un transponder che riceverà segnali di soccorso dal trasmettitore dell’utente e li invierà al Rescue Co-ordination Centre che avvia le operazioni di salvataggio. Allo stesso tempo il sistema fornisce un segnale all’utente informandolo che la sua situazione è stata rilevata e che stanno per arrivare i soccorsi. Quest’ultima funzionalità è stata considerata un importante aggiornamento rispetto ai sistemi già esistenti (come GPS); i quali possono essere utilizzati per indicare situazioni di emergenza che necessitano soccorso, ma che non inviano un feedback all’utente. Naturalmente questa tecnologia essendo ancora in fase di sviluppo non è al momento utilizzabile per la nostra applicazione, ma appena sarà operativa si potrà decidere di integrare o sostituire l’attuale tecnologia utilizzata con quella nuova. 23 Capitolo 3 Un Applicazione di Tracking MotoSpeed è un cruscotto virtuale, pensato principalmente per i motoveicoli. È stato deciso di implementare le funzionalità di un cruscotto standard (orario, velocità e distanza) e di fornire all’utente altre informazioni utili sul tracciato (velocità media, velocità massima, coordinate geografiche). Attualmente l’applicazione base consente di effetuare il tracking del percorso organizzando le informazioni in due file di diverse estensioni (.kml .gpx). Le estensioni multiple dei file forniscono all’utente la possibilità di visualizzare il percorso effettuato su più supporti (Google Earth o navigatori satellitari). Inoltre è possibile salvare le informazioni visualizzate istante per istante in un file .csv per recuperare informazioni sul tracciato in un momento successivo. In futuro MotoSpeed permetterà di condividere, tramite login su una piattaforma web, i percorsi effettuati e di mantenere uno storico delle informazioni dei tracciati. 3.1 Analisi e specifica dei requisiti Durante la fase di analisi e specifica dei requisiti sono state individuate le seguenti funzionalità da implementare: • visualizzazione del cruscotto e informazioni aggiuntive: ora, velocità attuale, distanza percorsa, coordinate geografiche, altitudine, velocità massima e velocità media; • salvataggio dei dati in file con possibilità di fermare e riattivare il salvataggio; • allarme per il rifornimento; 24 CAPITOLO 3. UN APPLICAZIONE DI TRACKING • ripetizione dell’allarme; • cambio della lingua di visualizzazione. Alcune di queste funzionalità sono attive di default, senza interazione da parte dell’utente (visualizzazione del cruscotto, visualizzazione delle informazioni aggiuntive, salvataggio dei file), altre invece possono essere attivate o disattivate dall’utente. Analizziamo in dettaglio ogni funzionalità: 1. Visualizzazione del cruscotto e informazioni aggiuntive: vengono raccolti i dati necessari per la visualizzazione del cruscotto e vengono calcolate le informazioni aggiuntive come la distanza percorsa, la velocità media e la velocità massima relativa. 2. Salvataggio dati nei file: All’apertura della schermata cruscotto si iniziano a salvare le informazioni raccolte in 3 file con nome “coordinate aaaaMMgg hhmmss” con estensioni .csv, .gpx e .kml. Alla ricezione del primo segnale GPS viene effettuato il primo salvataggio in automatico. Da questo momento l’utente, dall’interfaccia cruscotto può abilitare o disabilitare il salvataggio toccando sull’apposito pulsante. Anche dopo lo stop del salvataggio i dati vengono salvati negli stessi file fino alla fine della localizzazione corrente. I dati possono essere salvati su file separati fermando la registrazione e avviandone una nuova. 3. Allarme per il rifornimento: è possibile impostare un allarme visivo che segnalerà all’utente la necessità di effettuare rifornimento in base ai chilometri percorsi durante la sessione di registrazione corrente. L’allarme deve essere impostato prima dell’inizio della registrazione e rimane fisso per tutta la durata della registrazione. Questa impostazione rimane in memoria anche all’avvio delle successive sessioni di utilizzo dell’applicazione. L’allarme può essere disattivato in qualsiasi momento della registrazione toccando l’apposito pulsante. 4. Ripetizione dell’allarme: questa funzionalità può essere attivata o disattivata in qualsiasi momento dell’utilizzo. Dopo l’attivazione dell’allarme di rifornimento, tale allarme verrà notificato ogni 5 km in modo da ricordare ripetutamente all’utente che il carburante sta per esaurire. Toccando il pulsante di stop allarme rifornimento viene fermata anche la ripetizione. 25 CAPITOLO 3. UN APPLICAZIONE DI TRACKING 5. Cambio della lingua: è possibile cambiare la lingua in qualsiasi momento dell’utilizzo dell’applicazione. Tuttavia la modifica avverrà solamente al prossimo cambio di schermata. Attualmente sono supportate le seguenti lingue: inglese e italiano. Per la programmazione è stato utilizzato Android Developer Tool versione 22.3.0 che comprende Eclipse e vari tool per la programmazione Android. È stata richiesta la compatibilità con i sistemi Android dalla versione 4.0 in poi. Tale opzione viene impostata nel file AndroidManifest.xml. Il file AndroidManifest.xml contiene tutte le informazioni essenziali dell’applicazione Android: tra cui la definizione del nome, della versione , dei permessi e delle caratteristiche dell’applicazione. L’attributo minSdkVersion indica il minimo API Level richiesto dall’applicazione per essere eseguita. Il valore indica quale API Level è supportato a seconda della versione di Android compatibile con l’applicazione. Nel nostro caso il valore 14 indica che la nostra applicazione è compatibile con la versione 4.0 (ice cream sandwitch) in poi. L’attributo targetSdkVersion indica l’API Level massimo in cui viene garantito il corretto funzionamento dell’applicazione, nel nostro caso abbiamo scelto la compatibilità fino all’ API Level 19, ovvero la versione 4.4 di Android. Infine l’applicazione necessita dei seguenti permessi per poter implementare tutte le funzionalità, anche essi indicati nell’AndroidManifest: <uses-permission android:name = \android.permission.ACCESS\_FINE\_LOCATION" /> <uses-permission android:name = \android.permission.WRITE\_EXTERNAL\_STORAGE" /> <uses-permission android:name = \android.permission.READ\_EXTERNAL\_STORAGE" /> Questi permessi vengono accettati dall’utente al momento del download dell’applicazione dal Play Store. ACCESS FINE LOCATION consente l’accesso ad una localizzazione precisa 26 CAPITOLO 3. UN APPLICAZIONE DI TRACKING derivante dalle fonti di localizzazione come il GPS. WRITE EXTERNAL STORAGE e READ EXTERNAL STORAGE consente la scrittura e la lettura della memoria del dispositivo in modo da poter salvare i file creati dall’applicazione. 3.2 Progettazione L’applicazione si compone di due activity (un menù principale nel quale si scelgono le opzioni e il cruscotto virtuale) e un service che riceve le informazioni dal GPS e scrive i file. Nello schema seguente vediamo le interazioni tra i componenti: Fig 7: Architettura e relazioni dell’applicazione. 27 CAPITOLO 3. UN APPLICAZIONE DI TRACKING MainActivity MainActivity estende la classe Activity. Usa costanti utili per i dialog del menù e un oggetto di classe Global var. Utilizza il seguente layout: Fig. 8: Layout della prima activity (MainActivity). MainActivity utilizza la classe Global var per impostare le opzioni dell’applicazione in modo che una volta salvate siano uguali per tutte le activity e il service dell’applicazione. Fa in modo, inoltre, che tali opzioni rimangano uguali ad ogni avvio dell’applicazione ma modificabili in qualsiasi momento. Legge quindi le impostazioni preimpostate dall’utente se esistono; nel caso, invece, in cui le preimpostazioni ancora non esistono ossia quando l’utente sta effettuando il suo primo accesso, viene creata una directory MotoSpeed in cui verranno salvati tutti i file generati dall’applicazione e vengono impostate le opzioni con valori di default. Si può scegliere tra le seguenti opzioni: 28 CAPITOLO 3. UN APPLICAZIONE DI TRACKING • lingua: attualmente solo italiano e inglese; • limite di chilometraggio per il rifornimento: allo scadere quale verrà attivato l’allarme visivo; • attivazione/disattivazione dell’allarme di rifornimento; • attivazione/disattivazione della ripetizione dell’allarme ogni 5 km dopo il primo allarme, se attivo; • visualizzazione del cruscotto: questa opzione è stata impostata in quanto l’applicazione può essere utilizzata anche in background. Ovvero se non si desidera visualizzare il cruscotto è possibile disabilitarne la visualizzazione cosı̀ che l’applicazione parta e il video vada in standby, in questo modo l’utente può mettere il dispositivo in tasca o dove ritiene opportuno e sfruttare le funzionalità del salvataggio del percorso dell’applicazione. Ovviamente in questa modalità l’allarme visivo non è visualizzato. Ogni opzione è gestita visualizzando a video una finestra di dialogo che permette di scegliere il valore da impostare nell’opzione selezionata. Quando si tocca il pulsante di start viene lanciato il service. Guardiamo in dettaglio i metodi di questa activity: onCreate imposta il layout come in figura [fig. 8] onResume legge tramite Global var le opzioni salvate in precedenza o quelle di default nel caso sia il primo lancio dell’applicazione e richiama la funzione setValue setValue imposta i valori nelle label a seconda della lingua e delle opzioni lette dal file nella funzione onResume e gestisce il touch dei pulsanti. 29 CAPITOLO 3. UN APPLICAZIONE DI TRACKING nome pulsante start comportamento al touch del pulsante vengono salvate tutte le scelte fatte nella pagina dall’utente attraverso un apposita funzione di Global var e viene lanciato il service che inizia la localizzazione lingua alla selezione dell’opzione si visualizza una finestra di dialogo con due scelte: ita/eng a seconda della scelta viene impostata la variabile tramite Global var della lingua e vengono cambiate tutte le label dell’applicazione. allarme riforni- alla selezione dell’opzione viene visualizzata una finemento stra di dialogo con due scelte: on/off a seconda della scelta viene impostata tramite Global var una variabile che servirà per abilitare o disabilitare la visualizzazione dell’allarme visivo nel cruscotto ripeti allarme alla selezione dell’opzione viene visualizzata una fineogni 5 km stra di dialogo con due scelte: on/off a seconda della scelta viene impostata tramite Global var una variabile che servirà per abilitare o disabilitare la ripetizione dell’allarme ogni 5 km dopo la prima visualizzazione visualizza alla selezione dell’opzione viene visualizzata una finecruscotto stra di dialogo con due scelte: on/off a seconda della scelta viene impostata tramite Global var una variabile che servirà per fare apparire la schermata del cruscotto oppure spegnere lo schermo all’inizio della visualizzazione. 30 CAPITOLO 3. UN APPLICAZIONE DI TRACKING BackgroundLocationService BackgroundLocationService estende la classe Service, in modo che possa continuare il funzionamento in background; implementa inoltre la classe LocationListener, in quanto deve ricevere la localizzazione dal provider. All’avvio del service viene lanciata l’activity di visualizzazione del cruscotto. Il service poi richiede il provider grazie all’implementazione della classe LocationListener. La richiesta del provider è fatta utilizzando funzioni apposite della classe LocationListener, se in un futuro si volesse cambiare il provider utilizzato basterebbe modificare il valore della variabile che contiene l’id del provider, nel nostro caso: private String providerId = LocationManager. GPS PROVIDER ; Se, ad esempio, si volesse usare la tecnologia 3G e WiFi per sfruttare il GPS assistito, la variabile deve prendere come valore LocationManager.NETWORK PROVIDER. Tale scrittura risulta possibile grazie all’implementazione, nel nostro service, del LocationListener infatti ha al suo interno il LocationManager che contiene tutte le macro che identificano i diversi provider. Quando il service inizia a ricevere dati sulla localizzazione crea i file csv, kml e gpx nei quali verranno salvati mano a mano tutti i dati relativi al tracciato percorso e alle informazioni ricevute dal provider. Quando il LocationListener trova un cambiamento di posizione lancia la funzione che raccoglie, calcola e comunica all’activity di mostrare a video tutti i dati raccolti. Il service controlla, inoltre, l’eventuale notifica di allarme rifornimento e ripetizione di tale allarme ogni 5 km, questo esclusivamente se una o entrambe le opzioni sono state precedentemente attivate dal pannello opzioni; la disattivazione dell’allarme viene gestita nell’activity del cruscotto grazie all’interazione con l’utente. Il service utilizza un oggetto di classe Global var e delle variabili d’appoggio per il calcolo delle informazioni relative alla localizzazione. 31 CAPITOLO 3. UN APPLICAZIONE DI TRACKING onCreate Richiede il provider e chiama la LocationActivity dove verrà visualizzato il cruscotto onStartCommand Riceve la localizzazione, se è la prima localizzazione della registrazione, grazie alle apposite funzioni della classe Global var, si impostano i nomi dei file e si richiama la funzione updateLocationData. Alternativamente si richiamano le funzioni updateLocationData e refreshLocation. Richiede poi la localizzazione al provider ogni secondo in modo da avere una precisione sufficientemente accurata sul tracciato percorso. updateLocation Legge inizialmente le opzioni generali dell’applicazione Data tramite Global var. Questa operazione è indispensabile poiché le opzioni generali possono variare in qualsiasi momento tramite comandi da parte dell’utente. Imposta in Global var le variabili relative alla localizzazione calcolando le informazioni necessarie: come la distanza, la velocità media e quella massima. Se nelle opzioni generali è abilitata la scrittura, salva tramite Global var i file relativi al tracciato(csv,kml e gpx). Controlla infine se necessario abilitare l’allarme per il rifornimento chiamando l’apposita funzione checkFar. checkFar Controlla tramite Global var se l’allarme è attivo, se il chilometraggio è arrivato al limite indicato nelle opzioni impostate dall’utente viene notificato l’allarme. Nel caso sia attiva anche la ripetizione viene notificato l’allarme visivo ogni 5 km dopo la prima attivazione. refreshLocation Manda un messaggio di broadcast con tutte le informazioni utili per la visualizzazione. Questo messaggio di broadcast è di tipo NEW LOCATION: questo tipo è definito all’interno dell’applicazione. onLocationChange Tutte le volte che riceve un cambiamento di location dal provider richiama updateLocationData e refreshLocation per visualizzare le nuove informazioni acquisite. onDestroy Molto importante quando fermiamo la localizzazione: effettua il rilascio delle risorse allocate, in particolare il provider. 32 CAPITOLO 3. UN APPLICAZIONE DI TRACKING LocationActivity Utilizza il seguente layout: Figura 9: Layout del cruscotto(LocationActivity). Al lancio dell’activity vengono impostati tutti i valori a zero fino a che non viene ricevuto dal service il broadcast contenente i dati aggiornati all’ultima posizione. I pulsanti presenti nel layout hanno le seguenti funzioni: • pulsante stop: Ferma la localizzazione (fermando il service e chiudendo il salvataggio dei file) e riporta alla MainActivity senza chiedere conferme. • pulsante di pausa/play: pulsante quando la scrittura è abilitata pulsante quando la scrittura è disabilitata 33 CAPITOLO 3. UN APPLICAZIONE DI TRACKING Al touch del pulsante si disabilita o abilita il salvataggio dei dati nei file csv, kml e gpx. Di base il salvataggio è sempre attivo al lancio dell’applicazione. Lo stato di pausa e play è indicato da un Toast che appare al touch sul pulsante e tale pulsante cambia l’icona a seconda dello stato. • pulsante del rifornimento: pulsante normale pulsante con allarme inserito e attivo Ad un tocco singolo del pulsante si disattiva l’allarme quando attivo. Ad un tocco prolungato si azzera il contachilometri (denominato “distanza” nel cruscotto). • pulsante autovelox e pulsante punti di interesse: pulsante autovelox pulsante punti di interesse Questi pulsanti se toccati mostrano un Toast con scritto “funzione in fase di sviluppo”. Infatti sono due funzionalità che permetteranno grazie ad un interfaccia con un database, di notificare un allarme visivo (simile a quello attualmente usato per il rifornimento) di segnalare la presenza di un autovelox nelle vicinanze o di un luogo di interesse. In futuro sarà anche possibile inserire questi dati in un database in modo da memorizzarli e condividerli con altri utenti. 34 CAPITOLO 3. UN APPLICAZIONE DI TRACKING Vengono gestiti anche i tasti fisici del telefono: il tasto “menù” del dispositivo apre un menù in cui si possono modificare le opzioni come: • lingua; • attivazione/disattivazione dell’allarme rifornimento; • attivazione/disattivazione della ripetizione dell’allarme; • azzerare il contachilometri; • fermare la localizzazione. Tutte le scelte del menù vengono fatte attraverso delle finestre di dialogo con l’utente. Il tasto “back” del dispositivo chiede la conferma per l’arresto della localizzazione e se viene confermato si comporta come il pulsante stop. LocationActivity utilizza come variabili: • costanti per la gestione dei widget per la visualizzazione; • un oggetto di classe Global var; • una classe interna ActivityLocationTrackingReceiver. ActivityLocationTrackingReceiver Questa classe estende BroadcastReceiver. Sfruttiamo il metodo onReceive che rimane in ascolto dei broadcast di tipo NEW LOCATION inviati dal BackgroundLocationService. Quando riceve un broadcast, legge i dati all’interno di esso e lancia la funzione setTextView che scrive i dati raccolti dal broadcast a video e, se l’allarme è attivo, cambia il colore del pulsante di rifornimento in modo da attivare l’allarme visivo. 35 CAPITOLO 3. UN APPLICAZIONE DI TRACKING Tornando alla LocationActivity analizziamo in dettaglio i metodi: onCreate legge le opzioni attraverso Global var in modo da richiamare setValueLabel per impostare le label a seconda della lingua. Imposta tutti i valori a zero e imposta i pulsanti. setValueLabel chiama la funzione di Global var che setta le funzioni a seconda della lingua impostata dalle opzioni generali e le scrive a video. setTextView imposta i dati ricevuti dal service nel cruscotto e gestisce l’allarme visivo. onBackPressed gestisce la pressione del tasto fisico indietro del dispositivo, facendo apparire una finestra di dialogo che chiede se si intende terminare la localizzazione. onMenuPressed alla pressione del tasto fisico menu viene aperto un menu con le voci per cambiare alcune impostazioni generali. 36 CAPITOLO 3. UN APPLICAZIONE DI TRACKING Global var Global var è una classe che estende Application: è stato pensato di sfruttare questa classe perché in futuro sarà possibile sfruttare override del metodo onCreate per fare le richieste di login al database. Grazie alla classe Application infatti, il metodo on Create viene lanciato prima di ogni activity o service, inoltre, nelle classi Application, si possono definire i singleton dell’applicazione; anche questa proprietà può essere sfruttata in futuro per implementare nuove funzionalità. Questa classe è utilizzata per il salvataggio dei file csv, kml e gpx, il salvataggio e la lettura delle opzioni. Gestisce l’interazione tra l’applicazione e i file. Contiene tutte le variabili per: • le opzioni; • la localizzazione; • i file. Le variabili delle opzioni vengono scritte e lette sull’apposito file quando richiesto dalle activity e dal service. Le variabili per la localizzazione vengono modificate attraverso opportuni get e set dal service e dall’activity di localizzazione in modo da poter essere visualizzati adeguatamente nel cruscotto. Queste variabili di localizzazione vengono inoltre salvate nei file di tracciamento del percorso e nel file di report del viaggio. 37 CAPITOLO 3. UN APPLICAZIONE DI TRACKING getFileStorageDir se non esiste, ovvero al primo lancio dell’applicazione, crea la directory MotoSpeed dove verranno salvati i file delle registrazioni e salva il path della cartella nell’apposita variabile, questa servirà ai metodi per salvare i file in quella directory. saveGlobalVar salva le variabili relative alle opzioni nell’apposito file con estensione xml della cartella MotoSpeed. load legge il file contenente le opzioni generali e salva i dati letti nelle apposite variabili grazie alla funzione setGlobalVar. setGlobalVar questo metodo ha due parametri: varName e varValue. Imposta il valore varValue nella variabile varName in modo che sia compatibile con il tipo di variabile e rispetti gli standard previsti per quella variabile. save salva i dati raccolti dal service in una variabile per ogni file in modo da scrivere ogni file rispettando le regole di scrittura di ogni formato. Lancia poi la funzione stop per salvare le informazioni cosı̀ formate nei rispettivi file. stop scrive i file csv, kml e gpx contenenti tutti i dati relativi alla localizzazione. changeLanguage cambia tutte le label a seconda della lingua impostata dall’utente, di default la lingua è italiano. getter e setter tutti i getter e setter delle variabili in modo da poter essere che lette o modificate dalle activity e dal service. I file sono formati attraverso 3 fasi nel metodo stop: • l’inizializzazione: crea l’intestazione del file che cambia a seconda dell’estensione; • raccolta dati: raccoglie i dati passati dal service e salvati nelle variabili in Global var; • chiusura del file: crea la “chiusura” del file a seconda dell’estensione. Infine, viene salvato nel file con estensione adeguata. 38 CAPITOLO 3. UN APPLICAZIONE DI TRACKING I file creati possono essere visualizzati con apposite applicazioni sul dispositivo oppure trasferiti sul pc e aperti con altri programmi adibiti. È possibile inoltre su altri dispositivi come il navigatore satellitare. Da pc possiamo visualizzare il tracciato salvato nel file con estensione .kml tramite Google Earth come in figura: Figura 10: Visualizzazione di un percorso di prova tramite Google Earth. 39 Conclusioni In questo progetto di analisi, progettazione e creazione dell’applicazione MotoSpeed si sono studiate le tecnologie di geolocalizzazione, in modo particolare le tecnologie utilizzabili da telefoni, smartphone e tablet: GPS, GLONASS e GPS Assistito con anche uno sguardo al futuro studiando anche il progetto Galileo come possibile integrazione di tecnologia di geolocalizzazione per il futuro della nostra applicazione. È stato scelto di utilizzare come tecnologia di geolocalizzazione il sistema GPS con anche l’utilizzo, se previsto dal dispositivo, del sistema GLONASS, in quanto forniscono un posizionamento preciso fin dalla prima localizzazione. Sono state analizzate e studiate le specifiche per la creazione dell’applicazione di base, poi implementata e pubblicata nello store di Google Play. Attualmente si sanno studiando le modifiche da implementare nel prossimo futuro nella versione a pagamento di MotoSpeed. Come anticipato, l’applicazione attualmente è una versione di base gratuita, nelle prossime versioni si aggiungeranno: • Interfaccia con database, contenente punti di interesse e autovelox, in modo da creare un allarme visivo quando l’utente si trova nei pressi dei suddetti punti. Possibilità di abilitare e disabilitare queste nuove funzionalità. • Login con username e password in modo da poter caricare nel database i file creati dall’applicazione. • Creazione di un interfaccia web in cui entrare grazie al login, come nell’applicazione. Fornire all’utente la possibilità di visualizzare le statistiche di viaggio e i suoi tracciati, possibilità di confrontarsi con altri utenti e condividere tracciati e statistiche. 40 Bibliografia Galileo http://en.wikipedia.org/wiki/Galileo %28satellite navigation%29 GLONASS http://en.wikipedia.org/wiki/GLONASS http://it.wikipedia.org/wiki/GLONASS http://www.glonass.it http://www.androidgalaxys.net GPS http://en.wikipedia.org/wiki/Global Positioning System#Predecessors http://it.wikipedia.org/wiki/Sistema di Posizionamento Globale GPS Assistito http://it.wikipedia.org/wiki/GPS Assistito http://en.wikipedia.org/wiki/Assisted GPS http://gnss-info.blogspot.it/2012/02/gps-assistito-assisted-gps.html http://www.diffen.com/difference/A-GPS vs GPS 41 Ringraziamenti Ringrazio anzitutto il mio Correlatore Ing. Andrea Terzi per il supporto e l’aiuto che mi ha dato in questi mesi e la possibilità di iniziare insieme la mia esperienza lavorativa. Un grazie particolare va ai miei genitori, a mia sorella e ad Alessandro che mi hanno incoraggiato, supportato e sopportato, tra le mille difficoltà, in tutti questi anni e hanno creduto in me in ogni momento. Ringrazio anche i miei Amici che ci sono sempre stati, rinvigorendomi con il loro affetto. 43