STUDIO E SVILUPPO DI UN APPLICAZIONE DI SICUREZZA PERSONALE IN AMBIENTE ANDROID



Documenti analoghi
Tecniche di progettazione e sviluppo di applicazioni mobile

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Architetture Applicative

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

Creare una Rete Locale Lezione n. 1

Lifephone. Introduzione. Database. Sito

Sistemi Mobili e Wireless Android Primi passi

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

SDD System design document

Network Monitoring. Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale

STUDIUM.UniCT Tutorial per gli studenti

Attività federale di marketing

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI

Guida di Pro PC Secure

Lande Immortali: Riepilogo dello Stato di Avanzamento del Progetto

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

CREA IL CATALOGO DEI TUOI PRODOTTI SU IPAD E IPHONE CON UN APP. ANZI, CON UPP!

InitZero s.r.l. Via P. Calamandrei, Arezzo

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

ISTRUZIONI OPERATIVE AGGIORNAMENTO DEL 18/04/2013

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

itime Chiaramente inclusa la stampa del cartellino presenze come previsto dalle normative

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Guida Google Cloud Print

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

Guida alla registrazione on-line di un DataLogger

Gui Gu d i a d ra r p a i p d i a V d o a d f a one Int fone In e t r e net rnet Box Key Mini

Il web server Apache Lezione n. 3. Introduzione

Collegamento remoto vending machines by do-dots

Progetto SOLE Sanità OnLinE

maggio 2013 Elevend srl Pag. 1/25

Il fenomeno della geolocalizzazione. Ugo Benini

Utilizzo della APP IrriframeVoice. Versione 1.0 maggio 2015

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Rasip, MIDlet per scambio di messaggi SIP

Guida rapida Vodafone Internet Box

Guida all Utilizzo dell Applicazione Centralino

Domande e risposte su Avira ProActiv Community

GUIDA UTENTE WEB PROFILES

Guida Google Cloud Print

Distribuzione internet in alberghi, internet cafè o aziende che vogliono creare una rete "ospite"

Approccio stratificato

Guida Google Cloud Print

1) GESTIONE DELLE POSTAZIONI REMOTE

MANUALE D USO MANUALE D USO

INVIO SMS

Per cosa posso utilizzarlo?

L APP PER IPHONE E ANDROID

WebGis - Piano Comprensoriale di Protezione Civile

ORACOLO Gestione questionari.

Software per Helpdesk

COOKIE POLICY DEL SITO

hi-com software realizzato da Hi-Think

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

SOFTWARE CARTOGRAFICO PER LA GESTIONE DI UN SERVIZIO DI LOCALIZZAZIONE FLOTTE TRAMITE SISTEMA SATELLITARE GPS

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

Manuale d'uso del Connection Manager

La App. La app S.H.A.W è scaricabile gratuitamente dai principali market (App Store e Google Play Market.

Visual basic base Lezione 01. L'ambiente di sviluppo

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

COME FARE UNA RICHIESTA DI ASSISTENZA ON LINE (AOL)

Manuale Utente. Gestione Richieste supporto BDAP. Versione 1.0

Il CMS Moka. Giovanni Ciardi Regione Emilia Romagna

GUIDA UTENTE MONEY TRANSFER MANAGER

Mail Cube Guida utente

A T I C _W E B G U I D A AL L A N A V I G A Z I O N E S U L S I T O D E L G R U P P O. Rev. 2.1

PORTALE CLIENTI Manuale utente

Online Help StruxureWare Data Center Expert

G l o b a l C o n n e c t i o n S i s t e m a d i t e l e c o n t r o l l o G S M / G P R S

Guida Compilazione Piani di Studio on-line

SOLUZIONI INFORMATICHE PER LO STUDIO LEGALE

SIMULAZIONE PROVA SCRITTA ESAME DI STATO. PER LA DISCIPLINA di SISTEMI

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

ascoltare ispirare e motivare miglioramento problem solving Flex360 pianificare comunicare la vision organizzare

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

FileMaker Pro 13. Utilizzo di una Connessione Desktop Remota con FileMaker Pro13

OmniAccessSuite. Plug-Ins. Ver. 1.3

Guida alla compilazione on-line delle domande di Dote Scuola A.S per le Famiglie INDICE

MOCA. Modulo Candidatura. [Manuale versione 1.0 marzo 2013]

Introduzione alla Virtualizzazione

Plaze, il termine che definirà un nuovo concetto di piazza

1. Il Client Skype for Business

2 Gli elementi del sistema di Gestione dei Flussi di Utenza

Guida di Pro Spam Remove

ESERCITAZIONE Semplice creazione di un sito Internet

Retail L organizzazione innovativa del tuo punto vendita

GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO

Utilizzo dei Cookie Cosa sono i cookie? A cosa servono i cookie? cookie tecnici cookie, detti analitici cookie di profilazione

SmartGPS Satellite Information System Guida all utilizzo del programma Sviluppato da Fabio e Marco Adriani Versione 1.0.0

1 2 Fase di autenticazione utente

INSTALLAZIONE PROCEDURA 770/2011

U N I V E R S I T À D E G L I S T U D I D I S A L E R N O

Transcript:

POLITECNICO DI MILANO FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA STUDIO E SVILUPPO DI UN APPLICAZIONE DI SICUREZZA PERSONALE IN AMBIENTE ANDROID Relatore: Prof. Capone ANTONIO Correlatore: Ing. Dell Anna LUCA Tesi di Laurea di: Marrandino Alessandro Matricola n. 676680 ANNO ACCADEMICO 2007/08

Sommario Indice delle Immagini... 3 1.1 Overview... 4 1.2 L Open Handset Alliance e il sistema operativo Android... 6 1.3 Panoramica dell elaborato... 7 2 La piattaforma Android... 8 2.1 Il sistema operativo... 8 2.2 L architettura di Android... 10 3 Lo sviluppo di un applicazione in ambiente Android... 13 3.1 La struttura di un applicazione... 13 3.2 Il ciclo di vita di un applicazione Android... 16 3.3 Il Software Development Kit... 18 3.4 Eclipse Plugin... 20 4 L applicazione realizzata... 22 4.1 Introduzione... 22 4.2 L obiettivo dell applicazione... 25 4.3 I possibili utilizzi... 26 4.4 Applicazioni simili già presenti sul mercato... 28 4.5 Il funzionamento dell applicazione... 30 4.6 Il protocollo XMPP... 34 4.7 La libreria Smack API 3.1.0... 36 4.8 La struttura dell applicazione... 37 4.9 L interfaccia grafica... 40 4.10 Il server XMPP utilizzato... 50 5 Conclusioni... 51 5.1 Conclusioni sullo studio e lo sviluppo dell applicazione... 51 5.2 Possibili sviluppi futuri... 52 6 Bibliografia... 53 2

Indice delle Immagini L'IMMAGINE MOSTRA IL LOGO DELL'OPEN HANDSET ALLIANCE... 6 IL LOGO DEL SISTEMA OPERATIVO ANDROID... 8 L'ARCHITETTURA MULTILIVELLO DI ANDROID... 12 LO SCHEMA MOSTRA IL CICLO DI VITA DI UN'ACTIVITY ANDROID... 17 L'IMMAGINE MOSTRA UNO SCREENSHOT DELL'EMULATORE IN ESECUZIONE... 19 L'IMMAGINE MOSTRA UNO SCREENSHOT DEL PLUGIN DISPONIBILE PER L'AMBIENTE ECLIPSE... 21 UNA DELLE IMMAGINI PROMOZIONALI DI ANDROID ESPRIME IN MODO CHIARO LA FILOSOFIA DI INTEGRARE DIVERSI SERVIZI IN UN UNICO DISPOSITIVO... 22 UNO DEI SIMBOLI DELLA FILOSOFIA P2P, CHE RAPPRESENTA LA COOPERAZIONE TRA GLI UTENTI... 23 L'IMMAGINE RAPPRESENTA L'UTILIZZO PRINCIPALE PER IL QUALE È STATO PROGETTATO IL SOFTWARE, CIOÈ QUELLO IN ZONE PERIFERICHE DELL'AMBIENTE URBANO... 26 UNO SCREENSHOT DEL SITO WEB SALVOMOBILE.IT DOVE VIENE SPIEGATO IL FUNZIONAMENTO DEL SOFTWARE... 28 LO SCREENSHOT MOSTRA UNA SEMPLICE MAPVIEW SULL'EMULATORE ANDROID... 30 L'IMMAGINE MOSTRA DIVERSI DISPOSITIVI MOBILI COLLEGATI AD UN SERVER XMPP... 31 L'IMMAGINE MOSTRA L'ACTIVITY "INITIALMENU" CON IL MENÙ DELL'APPLICAZIONE APERTO... 41 L'IMMAGINE MOSTRA L'ACTIVITY "OPTIONMENU" IN CUI L'UTENTE PUÒ IMPOSTARE I PARAMETRI DI CONNESSIONE... 42 L'IMMAGINE MOSTRA COME SI PRESENTA L'ACTIVITY "INITIALMENU" DOPO AVER ESEGUITO LA CONNESSIONE CORRETTAMENTE... 43 L'IMMAGINE MOSTRA LA MAPACTIVITY "GPSMAP", CHE PERMETTE ALL'UTENTE DI VISUALIZZARE LA PROPRIA POSIZIONE, L INDIRIZZO PIÙ VICINO E LE PROPRIE COORDINATE GEOGRAFICHE... 44 L'IMMAGINE MOSTRA L'ACTIVITY "NEWREQUEST", CHE SEGNALA ALL'UTENTE LA PRESENZA DI UNA RICHIESTA D'AIUTO... 45 L'IMMAGINE MOSTRA L'ACTIVITY "NEWREQUEST" CHE MOSTRA ALL'UTENTE LA POSIZIONE DELLA PERSONA IN PERICOLO... 46 L'IMMAGINE MOSTRA IL PERCORSO CHE VIENE MOSTRATO ALL'UTENTE PER RAGGIUNGERE LA PERSONA IN PERICOLO... 47 L'IMMAGINE MOSTRA LE ISTRUZIONI PASSO PASSO CHE L'UTENTE DOVRÀ SEGUIRE PER RAGGIUNGERE LA PERSONA IN DIFFICOLTÀ... 48 L'IMMAGINE MOSTRA L'ACTIVITY "REQACCEPTED", CHE VIENE ATTIVATA NEL MOMENTO IN CUI LA RICHIESTA DI AIUTO DI UN UTENTE VIENE ACCETTATA. NELL IMMAGINE TEST È IL NOME DELL UTENTE, CHE HA DECISO DI SOCCORRERE LA PERSONA IN DIFFICOLTÀ... 49 UNO SCREENSHOT DELLA ADMINISTRATION CONSOLE DEL SERVER OPENFIRE... 50 3

1 Introduzione 1.1 Overview La qualità della vita negli ambienti urbani non sempre risulta adeguata per tutti gli abitanti. Un fattore molto critico per chi vive in ambienti cittadini è sicuramente la sicurezza personale. Sono all ordine del giorno fatti di cronaca che riguardano aggressioni, scippi, o rapine, avvenuti in luoghi isolati e molto spesso a danno delle fasce più deboli della popolazione come donne, giovani, o anziani. Chi è costretto a frequentare luoghi isolati in fasce orarie notturne si trova ad affrontare la paura di essere solo e il timore che in caso di necessità, nessuno possa prestare il minimo soccorso. La diffusione dei cellulari, insieme all utilizzo del software presentato in questo elaborato può porre un rimedio a questa situazione, che coinvolge un numero molto elevato di persone. L applicazione presentata si pone l obiettivo di offrire un valido supporto alla sicurezza personale degli utenti, dando loro la possibilità di chiedere aiuto in qualsiasi momento ad altre persone, che si trovano nelle vicinanze e che utilizzano la stessa applicazione su un altro dispositivo mobile. Sfruttando le potenzialità dei cellulari moderni dotati di connessione ad internet ed antenna GPS il software permette agli utilizzatori di essere rintracciabili in caso di emergenza in qualsiasi momento con la sola pressione di un tasto sul cellulare. Per quanto riguarda il software sviluppato è importante sottolineare, che si è fatta particolare attenzione alla facilità di utilizzo, che risulta essere un fattore determinante in situazioni pericolose, dove è necessario un utilizzo immediato dell applicazione. 4

Il software è stato sviluppato per il sistema operativo mobile Android, che offre notevoli possibilità agli sviluppatori di applicazioni. A causa della privatizzazione che è stata attuata sulle librerie di comunicazione XMPP del sistema operativo Android, si è inoltre resa necessaria la ricerca di librerie esterne, compatibili con il sistema operativo per sviluppare l applicazione. [1] 5

1.2 L Open Handset Alliance e il sistema operativo Android Il numero di utenti della telefonia mobile negli ultimi otto anni è cresciuto al ritmo del 25% ogni anno. La diffusione di dispositivi cellulari, che nell'anno 2000 si aggirava intorno al 12% ha raggiunto al termine del 2008 il 60%. A guidare la continua crescita di utenti mobili sono i Paesi dove l'economia si sta sviluppando più velocemente: Brasile, Russia, ma soprattutto India e Cina. Questi sono i dati che hanno convinto una delle più grandi multinazionali al mondo come Google ad investire nel settore della telefonia mobile. Google attualmente è alla guida della Open Handset Alliance, un gruppo che raccoglie al suo interno alcune delle migliori aziende nel campo dell'information Technology come Intel, Motorola e Nvidia.[2] Lo scopo dell'open Handset Alliance è quello di migliorare l'attuale tecnologia mobile, rendendo sempre più completi i servizi a disposizione dell'utente. Figura 1 L'immagine mostra il logo dell'open Handset Alliance Un notevole passo avanti è stato fatto con la presentazione di Android, un sistema operativo per piattaforme mobili basato sul kernel Linux, che sfrutta tutti i servizi di uno smartphone di ultima generazione. Il sistema operativo Android è open source e facilmente programmabile in codice Java, grazie all'utilizzo del Software Development Kit, liberamente scaricabile dal sito web del progetto.[1] 6

1.3 Panoramica dell elaborato La trattazione dello studio e dello sviluppo dell applicazione si divide in varie fasi. Nel secondo capitolo verrà descritto il sistema operativo Android sul quale viene eseguita l applicazione mobile. Nel terzo capitolo saranno illustrate le caratteristiche di un applicazione Android e verranno descritti gli strumenti di sviluppo disponibili per la realizzazione di applicazioni. Nel quarto capitolo sarà presentata l applicazione di sicurezza personale che è stata sviluppata, con particolare attenzione agli obiettivi della stessa e alle sue caratteristiche tecniche. Nel quinto capitolo verranno tratte le conclusioni e i possibili sviluppi futuri, che possono essere realizzati integrando nuovi servizi nell applicazione. Nel sesto capitolo saranno raccolti tutti i riferimenti e la bibliografia utilizzati per sviluppare l applicazione e realizzare questo elaborato. 7

2 La piattaforma Android 2.1 Il sistema operativo Android si presenta come un sistema operativo mobile completo e dalle grandi potenzialità, questo oltre ad essere un vantaggio per gli utenti finali, che possono disporre di svariati servizi è anche una nota molto positiva per gli sviluppatori delle applicazioni, che possono realizzare software sempre differenti ed originali. Figura 2 Il logo del sistema operativo Android Gli utenti hanno il totale controllo del dispositivo cellulare lare e anche delle applicazioni che sono installate su di esso, mentre gli sviluppatori hanno libero accesso a tutte le API del sistema operativo, non hanno nessuna limitazione per la distribuzione commerciale delle applicazioni prodotte e hanno anche la possibilità di sostituire e modificare componenti già presenti nel sistema Android. 8

Il sistema operativo è dotato di: un framework applicativo che permette il riutilizzo e lo spostamento delle risorse e dei componenti già presenti; una macchina virtuale (Dalvik), ottimizzata per il funzionamento su dispositivi mobili; un web browser; grafica 3D basata sulle specifiche OpenGL; database manager SqLite; supporto multimediale ai comuni formati audio e video; videocamera, GPS, bussola e accelerometro a seconda dell hardware sul quale viene installato. Per gli sviluppatori di applicazioni è disponibile un ambiente di sviluppo, che include un emulatore ed un debugger, risulta inoltre molto utile il plugin per l ambiente di programmazione Eclipse.[3] Il kernel linux su cui è basato il sistema operativo Android fornisce un ottimo livello d astrazione dell hardware permettendo agli sviluppatori di concentrarsi soltanto sulle applicazioni da realizzare a prescindere dall apparato hardware che dovrà eseguirle. 9

2.2 L architettura di Android La struttura di Android si compone di più livelli, ogni livello svolge una funzione differente all interno del sistema: Livello Applicativo; Framework Applicativo; Librerie di sistema; Android Runtime; Kernel Linux. Livello Applicativo Il livello applicativo è composto da tutte le applicazioni attualmente installate sul dispositivo mobile, che offrono diversi servizi all utente finale. Oltre alle più comuni funzioni di un cellulare come la gestione delle chiamate, o l invio e la ricezione degli SMS, fanno parte di questo livello anche il browser per la navigazione web e le applicazioni per l accesso ai file multimediali. Framework Applicativo Risiedono in questo livello tutte le API, che sono utilizzate dalle applicazioni del livello superiore, ma che sono anche disponibili a tutti gli sviluppatori per realizzare nuove applicazioni. Il framework mette a disposizione: gli oggetti di tipo View, che compongono le interfacce grafiche delle applicazioni; i content provider utili per la gestione dei dati; un gestore delle risorse del sistema; 10

un gestore delle notifiche, come chiamate in entrata o SMS in entrata; un gestore di esecuzione delle applicazioni del livello superiore. Librerie di Sistema Le librerie presenti in questo livello sono codificate nei linguaggi C e C++ e sono accessibili dagli sviluppatori attraverso le API del livello superiore. Le librerie disponibili sono di vario tipo: una libreria di sistema opportunamente modificata per dispositivi mobili; librerie multimediali per la riproduzione di vari formati audio e video; una libreria per la gestione di un browser web; una libreria per la gestione di database SqLite; librerie che estendono alcuni metodi disponibili nel linguaggio Java Standard. Android Runtime Questo livello fornisce supporto al livello del framework applicativo, in questo livello è situata la Dalvik Virtual Machine, che si appoggia sulle funzionalità del kernel Linux ed è ottimizzata per essere gestita in esecuzione multipla. Kernel Linux Il kernel fornisce le funzioni di basso livello necessarie al sistema e all esecuzione delle applicazioni come la gestione della memoria e dei thread. In questo livello sono presenti i driver del dispositivo, i servizi di sicurezza, i servizi per l accesso ai file e 11

lo stack di rete. Il kernel Linux fornisce un astrazione dell hardware su cui viene utilizzato il sistema operativo Android.[4] Figura 3 L'architettura multilivello di Android 12

3 Lo sviluppo di un applicazione in ambiente Android In questa sezione sono presentate la struttura tipica delle applicazioni Android, il ciclo di vita di un applicazione e gli strumenti di sviluppo messi a disposizione degli sviluppatori. 3.1 La struttura di un applicazione Ogni applicazione sviluppabile per il sistema operativo Android può essere suddivisa in quattro parti fondamentali: Activity; Intent Receiver; Service; Content Provider; Un file manifesto in formato XML. Activity Le activities sono le parti più importanti di un applicazione. Un'Activity è solitamente una singola schermata di un applicazione più complessa. Le classi Activity presentano un'interfaccia utente composta di View e rispondono agli eventi generati dall utente. Ogni View è un oggetto grafico: un pulsante, una casella di testo, un immagine ecc Quando si apre una nuova schermata, l Activity precedente si ferma e viene archiviata in un'apposita sezione. L'utente può navigare tra le activities attive grazie ad una memoria a pila detta history stack. 13

Intent Receiver Gli Intent Receiver sono utilizzati nelle applicazioni quando lo sviluppatore vuole che il software reagisca ad un evento esterno, per esempio, quando suona il telefono, o è disponibile la rete di dati, o quando scocca la mezzanotte. Essi sono utilizzati anche per avviare applicazioni quando non sono ancora in esecuzione nel sistema in risposta ad alcuni eventi predeterminati. Service Un Service è un codice che è eseguito senza una vera e propria interfaccia utente. I Service sono utili per realizzare applicazioni che sono in esecuzione in background nel sistema, come un riproduttore musicale, che permetta l esecuzione dei brani musicali mentre l utente del dispositivo mobile interagisce con altre applicazioni. Le comunicazioni tra un Service e il resto del sistema operativo Android avvengono tramite un interfaccia in cui sono esposti i metodi disponibili. I Content Provider Un content provider, ha lo scopo di condividere i dati con altre applicazioni presenti sul dispositivo, come file e dati presenti nel database SqLite. Consiste in una classe che implementa un set standard di metodi che permettono ad altre applicazioni di immagazzinare e recuperare il tipo di dati che è gestito dal content provider. Il Manifesto XML Il file AndroidManifest.xml raccoglie tutte le informazioni relative all applicazione e a tutti gli altri componenti descritti in precedenza presenti nell applicazione. Inoltre 14

in questo file sono anche scritti i permessi e i privilegi dell applicazione sul dispositivo in cui è installata.[4] 15

3.2 Il ciclo di vita di un applicazione Android Nella maggior parte dei casi ogni applicazione esegue il suo processo, questo viene creato quando è necessario mandare in esecuzione il codice sorgente di un applicazione. Una caratteristica insolita di Android è il fatto che il ciclo di vita dei processi non è controllato dall applicazione a cui appartiene il processo, bensì dal sistema operativo, che ne gestisce l esecuzione. Nel caso in cui si presenti una situazione di mancanza di memoria Android è costretto ad uccidere alcuni processi in esecuzione nel dispositivo mobile per liberare risorse. L uccisione dei processi viene regolamentata tramite una politica di priorità dei processi, in base ai componenti che sono in esecuzione nei processi e in base allo stato in cui si trovano i componenti stessi. I processi sono suddivisi in tre categorie (in ordine di importanza): 1) Foreground Process: è un processo, che l utente del dispositivo sta utilizzando. Un processo è considerato Foreground se una delle seguenti condizioni è verificata: esegue un Activity in primo piano con cui l utente sta interagendo; è associato ad un BroadCastReceiver in esecuzione; ha al suo interno un Service, che è attualmente in esecuzione. 2) Visible Process: è un processo che sta eseguendo un Activity non in primo piano, ma che è momentaneamente in pausa. 3) Service Process: è un processo che sta eseguendo un Service non in primo piano, come ad esempio la riproduzione musicale di un file; 4) Background Process: è un processo associato ad un Activity non più visibile all utente. Questo tipo di processi non ha impatto sull utilizzo dell utente del dispositivo mobile. Solitamente ci sono molti processi Background in esecuzione e per questo motivo la loro uccisione avviene con una politica FIFO (First in First Out) in cui il processo che è stato fermato prima viene ucciso. 16

5) Empty Process: : è un processo che non è associato a nessun componente attivo. L unico motivo per cui processi del genere sono mantenuti è per utilizzarli come cache per minimizzare mizzare il tempo di avvio in caso di un esecuzione futura. Figura 4 Lo schema mostra il ciclo di vita di un'activity Android Grazie a quest efficiente politica di gestione dei processi, descritta nei minimi dettagli sulle pagine del progetto Android, nel caso in cui avvenga l uccisione di molti processi è quasi impossibile che l utente risenta negativamente d insufficienza di memoria virtuale.[5] 17

3.3 Il Software Development Kit Per realizzare un applicazione compatibile con il sistema operativo Android è necessario utilizzare l SDK (Software Development Kit) liberamente scaricabile dal sito del progetto Android. L SDK mette a disposizione degli sviluppatori una ricca collezione di librerie, che permettono la gestione dello smartphone su cui verrà utilizzata l applicazione: funzioni di input/output, per la gestione delle connessioni di rete e dell interfaccia grafica dell applicazione. E importante sottolineare la continua evoluzione delle SDK che ha portato al rilascio della versione 1.0 il 23 settembre 2008. Dopo meno di un mese, più precisamente il 21 ottobre 2008 la Open Handset Alliance ha rilasciato l intero codice sorgente del sistema operativo. Di fondamentale importanza risulta l emulatore integrato nell SDK Android, che simula uno smartphone con schermo LCD touch screen, chip audio, tastiera, memoria a stato solido, un modem gsm, la presenza di una sim card e se necessario un sistema GPS integrato ed un accelerometro. L emulatore permette allo sviluppatore di realizzare qualsiasi applicazione in modo trasparente non preoccupandosi del sistema hardware, che andrà ad eseguirla.[6] 18

Figura 5 L'immagine mostra uno screenshot dell'emulatore in esecuzione 19

3.4 Eclipse Plugin Per facilitare il compito degli sviluppatori la Open Handset Alliance ha messo a disposizione anche un plugin per l ambiente di sviluppo Eclipse, che permette agli sviluppatori di testare in diversi modi l applicazione realizzata. Il plugin permette di ricreare in modo semplice scenari molto comuni nell utilizzo di uno smartphone come telefonate ed sms in ingresso, cambiamento di coordinate GPS e modifiche nella connessione del dispositivo mobile alla rete. Il componente principale del plugin è il DDMS (Dalvik Debug Monitoring System), che ha come principali funzioni: il monitoraggio dei thread in esecuzione; la gestione del file system dell emulatore presente nel Software Development Kit; il controllo dell emulatore; la visualizzazione del log di sistema e delle applicazioni. E proprio grazie alla funzione di controllo dell emulatore, che l utente può simulare diversi eventi nel dispositivo mobile per monitorare le reazioni dell applicazione che si sta sviluppando.[6] 20

Figura 6 L'immagine mostra uno screenshot del plugin disponibile per l'ambiente Eclipse 21

4 L applicazione realizzata 4.1 Introduzione L applicazione che è stata sviluppata in ambiente Android è un software locationbased, cioè basato sui servizi di localizzazione GPS forniti dal sistema operativo. La diffusione dei servizi location-based procede di pari passo con l aumento del numero dei cellulari dotati di antenne GPS, che permettono il collegamento alla rete satellitare. L orientamento per il futuro delle grandi case produttrici di cellulari è sempre più quello di integrare servizi differenti, come fotocamere, riproduttori multimediali ed antenne GPS, in un unico dispositivo portatile andando incontro alle necessità dei clienti, che preferiscono acquistare ed utilizzare un unico prodotto completo, piuttosto che utilizzarne ed acquistarne un numero elevato. Figura 7 Una delle immagini promozionali di Android esprime in modo chiaro la filosofia di integrare diversi servizi in un unico dispositivo 22

Il software sviluppato si propone di fornire un supporto agli utenti finali nell ambito della sicurezza personale, sfruttando il servizio GPS e quello di connessione ad internet. Tramite l utilizzo di queste due tecnologie gli utenti possono inviare una richiesta d aiuto segnalando la propria posizione ad altri utenti situati nelle vicinanze, nel caso in cui si trovino ad affrontare situazioni di pericolo imminente, come ad esempio piccoli casi di criminalità. L applicazione però non si basa soltanto su tecnologie e servizi materiali offerti da hardware e software, ma ad un livello più astratto sulla filosofia peer-to-peer, che propone la collaborazione tra diversi individui per il raggiungimento di un unico obiettivo, in questo caso la sicurezza degli utilizzatori. Figura 8 Uno dei simboli della filosofia P2P, che rappresenta la cooperazione tra gli utenti 23

Quando un utente avvia l applicazione, dà formalmente la propria disponibilità ad aiutare le persone che si trovano nelle sue vicinanze impegnandosi ad accettare le richieste d aiuto che potrebbero venirgli inoltrate, ma allo stesso tempo è consapevole di poter sfruttare la disponibilità degli altri utilizzatori in possesso di un terminale simile e della stessa applicazione. Idealmente il rapporto di collaborazione, che si viene a creare tra gli utenti, dovrebbe garantire la sicurezza di ogni individuo e la consapevolezza che in caso di necessità, c è sempre un altra persona su cui poter fare affidamento nelle vicinanze. Da questa filosofia di collaborazione nasce anche il nome dell applicazione: Normal Hero, o più brevemente NH. Utilizzando l applicazione non è infatti necessario essere un Super Hero per dare un aiuto ad una persona in difficoltà, perché molto spesso basta la presenza di un altro individuo per evitare eventi spiacevoli, come aggressioni o rapine. 24

4.2 L obiettivo dell applicazione Come descritto in precedenza, l obiettivo dell applicazione è garantire ad ogni utente la sicurezza personale. Ogni utilizzatore ha la possibilità di generare una richiesta di aiuto ed inviarla ad altri dispositivi mobili situati nelle vicinanze, facendosi localizzare. L individuo che riceve la richiesta di aiuto decide quindi se prestare soccorso alla vittima. Nel caso in cui la richiesta venga accettata da un altro utente, l utente viene guidato dal proprio dispositivo mobile verso il luogo da cui è partito il segnale. Il fine dell applicazione è quindi quello di fornire agli utilizzatori del software un supporto utile in particolari ambienti, talvolta isolati, ad esempio quelli urbani, dove può essere molto utile rimanere sempre in contatto con altre persone disposte a collaborare ed a dispensare un aiuto concreto in caso di bisogno. 25

4.3 I possibili utilizzi Il software può essere utilizzato in diversi modi. L utilizzo principale per cui è stata progettata l applicazione è relativo alla sicurezza personale in ambienti urbani. Talvolta è sufficiente trovarsi in zone isolate della città per subire piccoli atti di criminalità come rapine, aggressioni, o molestie. Grazie all utilizzo del software è possibile inviare una richiesta d aiuto agli utenti più vicini, che possono recarsi in breve tempo nel luogo in cui si trova la persona in pericolo. Il software si rivolge quindi ad un pubblico molto vasto di persone che si possono trovare ad affrontare diverse situazioni di pericolo: persone costrette a lavorare fino a tarda notte trovandosi a percorrere tratti di strada poco illuminati e in zone periferiche della città; anziani, che essendo più deboli subiscono maggiormente scippi, o sono vittime di malori; persone, che sono solite praticare sport all aria aperta in fasce serali. Figura 9 L'immagine rappresenta l'utilizzo principale per il quale è stato progettato il software, cioè quello in zone periferiche dell'ambiente urbano 26

Come già anticipato, non è necessario incorrere in un evento di criminalità per utilizzare l applicazione, bensì potrebbe rivelarsi utile anche nel caso di un semplice malore temporaneo. Un altro possibile utilizzo del software è quello che potrebbe essere fatto dai membri di una community di utenti, che vogliono essere sempre localizzabili tra loro. L applicazione può anche essere adattata ad ambienti non urbani ed utilizzata ad esempio da gruppi di persone che sono costrette ad affrontare difficoltà e pericoli ambientali. Un esempio potrebbe essere quello di una squadra di alpinisti, in cui ogni membro è rintracciabile tramite coordinate geografiche, in modo da poter effettuare interventi di soccorso, evitando qualsiasi perdita di tempo in difficoltose ricerche in ambienti particolarmente ostili. 27

4.4 Applicazioni simili già presenti sul mercato Durante lo sviluppo dell applicazione e di questo elaborato è nato in Italia il servizio Salvomobile, promosso dall azienda SicurItalia. Salvomobile è un software per dispositivi mobili che ha le stesse finalità del software Normal Hero, ma presenta anche notevoli differenze. Utilizzando Salvomobile l utente è sempre in grado di farsi localizzare da una centrale operativa, dove alcune guardie giurate si pongono in ascolto silente sul cellulare del cliente per cercare di capire le necessità dello stesso, avvisando in caso di necessità le forze dell ordine o il soccorso medico nazionale. Figura 10 Uno screenshot del sito web salvomobile.it dove viene spiegato il funzionamento del software 28

Alcuni aspetti che accomunano le due applicazioni sono i seguenti: sono entrambe applicazioni location-based, cioè basate sulla localizzazione del dispositivo tramite antenna GPS; l obiettivo dei due sistemi è affine in quanto si propongono di offrire un supporto per la sicurezza personale dell utente; le due applicazioni sono entrambe ideate per un uso in ambiente urbano. Le differenze sostanziali tra i due sistemi sono però ancora più evidenti: Normal Hero è un applicazione a filosofia peer to peer, che quindi sfrutta le capacità di un singolo nodo, in questo caso il singolo individuo, che ha la capacità di prestare soccorso ad un individuo vicino. Il fatto che non sia necessario il personale specializzato delle guardie giurate permette l utilizzo di Normal Hero senza alcun costo fisso, ma può rappresentare uno svantaggio in termini di competenza del singolo individuo. E ragionevole ritenere che personale qualificato a svolgere un tipo di lavoro risulti meglio preparato in caso di eventi di piccola criminalità o emergenze sanitarie. Un altro vantaggio che porta la filosofia peer to peer al sistema Normal Hero rispetto a Salvomobile consiste nel fatto che il personale Salvomobile non può intervenire direttamente in caso di emergenza, bensì si occupa soltanto di avvisare le autorità competenti. Questo fatto comporta un ritardo di intervento per gli utenti Salvomobile, che non è presente nel software Normal Hero. L ultima differenza tra le due applicazioni è il sistema operativo su cui operano. Salvomobile non è compatibile con Android e per ora è disponibile per Symbian, Windows Mobile, BlackBerry e Iphone. SicurItalia ha annunciato che prossimamente sarà disponibile una versione anche per il sistema operativo Android.[7,8] 29

4.5 Il funzionamento dell applicazione Il software sviluppato sfrutta tre servizi fondamentali, che sono messi a disposizione dal sistema operativo Android a sviluppatori ed utenti finali: il servizio di localizzazione GPS: permette agli sviluppatori di realizzare software in grado di interagire con le coordinate geografiche del dispositivo mobile in termini di latitudine e longitudine; il servizio di visualizzazione di mappe offerto dalla classe MapActivity: la semplice estensione di questa classe permette agli sviluppatori di personalizzare la visualizzazione di mappe fornite dal servizio Google Maps in modo da poterle adattare alle esigenze dell applicazione, che si sta sviluppando;[9,10] Figura 11 Lo screenshot mostra una semplice MapView sull'emulatore Android 30

il servizio di connessione ad internet: facilita la realizzazione di applicazioni più complete che sfruttano le risorse presenti sulla rete internet. A causa del cambio di strategia della Open Handset Alliance, che ha privatizzato alcune librerie inizialmente accessibili, si è resa necessaria l introduzione delle librerie esterne Smack API 3.1.0, che permettono la connessione ad un server con protocollo XMPP, lo stesso protocollo utilizzato dai client GoogleTalk per scambiare messaggi.[11] Il funzionamento dell applicazione si divide in varie fasi, con differenti obiettivi ed utilità. La fase di connessione All avvio del software l utente deve connettersi ad un server XMPP per iniziare ad utilizzare le funzionalità dell applicazione. La connessione ad un server, che funge da intermediario tra i diversi dispositivi mobili connessi, è necessaria per rilevare la presenza di altri cellulari, che abbiano in esecuzione lo stesso software. Figura 12 L'immagine mostra diversi dispositivi mobili collegati ad un server XMPP 31

Il lancio di una richiesta di aiuto Dopo aver effettuato correttamente la connessione al server l utilizzatore può lanciare una richiesta di aiuto nel caso in cui si trovi in una situazione di imminente pericolo. Prima dell effettivo invio del segnale di aiuto l applicazione si occupa di: effettuare il discovery degli altri dispositivi mobili collegati al server tramite una richiesta al server XMPP; estrarre dal servizio GPS_Provider del sistema operativo le coordinate attuali del cellulare da cui parte la richiesta di aiuto; generare un messaggio del tipo HELP-REQ seguito dalle coordinate espresse in latitudine e longitudine. Dopo aver generato il messaggio con le informazioni necessarie, questo viene inviato utilizzando il protocollo XMPP. La ricezione di una richiesta di aiuto Una volta che l applicazione è connessa al server XMPP, oltre che poter lanciare richieste d aiuto, è in grado di ricevere richieste dagli altri dispositivi collegati allo stesso server. Nel momento in cui un utente riceve una richiesta d aiuto viene avvisato con un allarme sonoro e una vibrazione del cellulare. L utente che riceve un messaggio di tipo HELP-REQ, visualizza la posizione del mittente tramite l indirizzo da cui proviene la richiesta di aiuto e attraverso una MapActivity che mostra sulla mappa l esatta posizione dell utente in difficoltà. Nel caso in cui la richiesta di aiuto venga accettata, l utente che si trova in pericolo riceve una notifica. 32

La ricezione dell accettazione di una richiesta Dopo aver lanciato una richiesta d aiuto, il mittente deve attendere la ricezione della notifica di accettazione. Nel momento in cui la richiesta di aiuto viene accettata, egli riceve sul proprio cellulare le informazioni relative alla persona che sta accorrendo in suo aiuto. Il raggiungimento guidato di un utente in difficoltà Dopo aver accettato di soccorrere un utente l applicazione fornisce un indispensabile supporto per raggiungere la persona in difficoltà. Grazie ai servizi offerti da Google Maps il raggiungimento della persona che ha inviato la richiesta d aiuto è supportato da istruzioni stradali dettagliate, ma anche da una mappa, che mostra il percorso per raggiungere il luogo da cui è partita la richiesta di aiuto. 33

4.6 Il protocollo XMPP La sigla XMPP deriva dal nome Extensible Messaging and Presence Protcol ed è un protocollo di comunicazione XML. Il sistema di messaggistica Jabber [12] si basa su questo protocollo, costruito appositamente per essere flessibile. Nel corso del tempo ha accumulato diverse migliorie, che lo hanno completato ulteriormente, come la tecnologia Voice Over Ip. XMPP è un protocollo totalmente open, risulta quindi molto semplice reperire in rete applicazioni server e client distribuiti gratuitamente e open source. Uno dei server commerciali più popolari, che utilizza XMPP è quello di Google Talk, uno dei più utilizzati servizi di messaggistica istantanea. I punti di forza del protocollo XMPP sono soprattutto: La decentralizzazione: l architettura della rete XMPP è per certi versi simile a quella delle e-mail, senza un server centrale, bensì ogni utente può eseguire sul proprio terminale un server XMPP; il fatto di essere Open: questo ha permesso al protocollo di essere utilizzato da molti utenti e sviluppatori senza avere i limiti, che solitamente vengono imposti dalle aziende proprietarie; la sicurezza: la possibilità di realizzare server isolati dal resto della rete Jabber fornisce notevoli garanzie di sicurezza, inoltre l integrazione di tecnologie come SASL e TLS hanno reso ancora più sicuro il protocollo XMPP; la flessibilità: gli sviluppatori possono integrare il protocollo con nuovi servizi, come tool di collaborazione, software per lo scambio di file e il controllo di sistemi remoti. 34

Alcune caratteristiche negative del protocollo sono invece: L elevato overhead per lo scambio di informazioni; la scalabilità ridotta del protocollo; l impossibilità di mandare direttamente in banda dati binari, che costringe all uso di protocolli esterni all XMPP per lo scambio di file.[13] 35

4.7 La libreria Smack API 3.1.0 Smack è una libreria utile per lo sviluppo di client XMPP distribuita con licenza Apache Open Source da Jive Software, questo tipo di licenza permette di includere la libreria sia in applicazioni a scopo commerciale, sia in applicazioni distribuite gratuitamente. La libreria può essere integrata in diversi tipi di applicazioni: client XMPP veri e propri, oppure come in questo caso per gestire lo scambio di informazioni tra terminali. Smack semplifica notevolmente la creazione di una connessione ad un server XMPP riducendo l operazione a poche linee di codice. XMPPConnection connection = new XMPPConnection("jabber.org"); connection.connect(); connection.login("username", "password"); Chat chat = connection.getchatmanager().createchat("jsmith@jivesoftware.com", new MessageListener() { }); public void processmessage(chat chat, Message message) { System.out.println("Received message: " + message); } Nell esempio mostrato tratto dalla documentazione ufficiale della libreria si può notare quanto sia semplice stabilire una connessione autenticata, in questo caso con il server jabber.org e realizzare un MessageListener, che ha il compito di ricevere i messaggi dal server e stamparli a video.[14] 36

4.8 La struttura dell applicazione L applicazione è divisa in vari package, che contengono le classi dell applicazione: com.alex; com.alex.connection; com.alex.exceptions; com.alex.gpsutil; com.alex.options. 37

Il package com.alex Contiene le activity utili ad interagire con l utente dell applicazione: GpsMap: è una MapActivity, che serve a visualizzare la posizione dell utente, che utilizza l applicazione; InitialMenu: è l activity che visualizza il menù principale con cui l utente interagisce; MyPosOverlay: estende la classe ItemizedOverlay e serve ad indicare posizioni precise sulle MapActivity; NewRequest: è la MapActivity che visualizza la posizione dell utente che ha lanciato una richiesta d aiuto; RequestAccepted: è l activity che viene avviata quando la richiesta d aiuto del dispositivo mobile viene accettata da un altro utente; R: è la classe che serve per accedere alle risorse esterne ed inserite nei file XML. Il package com.alex.connection Contiene le classi necessarie per la connessione al server XMPP e le classi per scambiare messaggi con gli altri dispositivi mobili connessi al server. ChatListener: è la classe che si occupa dell interazione con gli altri dispositivi mobili connessi al server XMPP; GatewayConnection: è la classe che avvia la connessione con il server XMPP e gestisce la connessione; MessageReceiver: è la classe che gestisce la ricezione dei messaggi e analizza i messaggi ricevuti avviando le adeguate procedure di risposta; MessageSender: è la classe che gestisce l invio dei messaggi al server e agli altri dispositivi mobili. 38

Il package com.alex.exceptions Contiene le classi che estendono la classe java Exception, utili a gestire le eccezioni generate dall applicazione e i messaggi di errore: InvalidUsernamePassword: è l eccezione che viene generata se il nome utente o la password di accesso al server sono errate; ServerDown: è l eccezione che viene generata se è impossibile connettersi al server specificato. Il package com.alex.gpsutil Contiene la classe che comunica con l antenna GPS del dispositivo mobile. LocationChangeListener: è la classe che comunica con l antenna GPS e registra gli spostamenti del dispositivo. Il package com.alex.options Contiene la classe che legge e scrive su file i parametri di connessione e gestisce la modifica da parte dell utente. OptionMenu: è l activity che gestisce l interazione con l utente per l impostazione dei parametri di connessione come nome utente, password e nome del server; OptionManager: è la classe che gestisce l accesso al file dove vengono salvati i parametri di connessione al server. 39

4.9 L interfaccia grafica L interfaccia grafica dell applicazione è costituita da Activity e MapActivity, mentre le prime servono soltanto per interagire con l utente che attraverso il touch screen può muoversi nell applicazione, le MapActivity danno anche la possibilità all utente di visualizzare delle mappe geografiche, interagendo con esse. All avvio dell applicazione viene avviata l activity InitialMenu con i bottoni principali disabilitati. Prima di utilizzare in modo vero e proprio l applicazione l utente deve infatti connettersi al server dedicato immettendo il nome utente, la password e l indirizzo del server al quale l utente intende connettersi. Utilizzando il menù dell applicazione è possibile impostare in modo adeguato i parametri di connessione, connettersi al server, oppure terminare l applicazione. 40

Figura 13 L'immagine mostra l'activity "InitialMenu" con il menù dell'applicazione aperto 41

L impostazione dei parametri di connessione avviene selezionando Opzioni dal menù dell applicazione. Figura 14 L'immagine mostra l'activity "OptionMenu" in cui l'utente può impostare i parametri di connessione 42

Dopo aver salvato i parametri di connessione, premendo il bottone Connetti dal menù dell applicazione, il software cerca di connettersi al server. Se il nome utente, la password e il server sono corretti l applicazione abilita i bottoni Vedi la mia posizione e Lancia Segnale d emergenza nell activity InitialMenu e mostra il simbolo di connessione nella parte più alta dello schermo. Il bottone Lancia Segnale d emergenza è stato realizzato volutamente più ampio degli altri per facilitare il lancio di una richiesta d aiuto in caso di pericolo. Figura 15 L'immagine mostra come si presenta l'activity "InitialMenu" dopo aver eseguito la connessione correttamente 43

Premendo il bottone Vedi la mia posizione l utente può visualizzare la propria posizione su una mappa geografica, le proprie coordinate geografiche e l indirizzo dove si trova. Figura 16 L'immagine mostra la MapActivity "GpsMap", che permette all'utente di visualizzare la propria posizione, l indirizzo più vicino e le proprie coordinate geografiche 44

Nel momento in cui l applicazione riceve una richiesta d aiuto, lanciata da un altro dispositivo premendo il bottone Lancia segnale d emergenza, l utente viene avvisato da un segnale acustico, che termina soltanto dopo che l utente visualizza la richiesta. Figura 17 L'immagine mostra l'activity "NewRequest", che segnala all'utente la presenza di una richiesta d'aiuto 45

L utente dopo aver visualizzato la posizione dell utente in difficoltà su una mappa, le sue coordinate geografiche e l indirizzo della persona in pericolo può scegliere se soccorrerla, oppure negare il proprio aiuto. Figura 18 L'immagine mostra l'activity "NewRequest" che mostra all'utente la posizione della persona in pericolo 46

Se l utente nega il proprio aiuto può continuare ad utilizzare l applicazione, mentre nel caso in cui decida di aiutare la persona in pericolo nell activity InitialMenu viene abilitato il bottone Vedi il percorso per raggiungere la vittima, che fornisce all utente le indicazioni passo passo per raggiungere la persona in difficoltà e una mappa con il percorso da seguire. Figura 19 L'immagine mostra il percorso che viene mostrato all'utente per raggiungere la persona in pericolo 47

Figura 20 L'immagine mostra le istruzioni passo passo che l'utente dovrà seguire per raggiungere la persona in difficoltà 48

Nel momento in cui la richiesta d aiuto viene accettata, l utente in pericolo riceve una notifica sul proprio dispositivo. Viene avviata l actvity RequestAccepted, che mostra il nome dell utente che sta accorrendo in aiuto. Figura 21 L'immagine mostra l'activity "ReqAccepted", che viene attivata nel momento in cui la richiesta di aiuto di un utente viene accettata. Nell immagine test è il nome dell utente, che ha deciso di soccorrere la persona in difficoltà 49

4.10 Il server XMPP utilizzato Durante la fase di testing dell applicazione è sorta la necessità di utilizzare un server XMPP locale per stabilire una connessione tra diverse istanze dell emulatore Android permettendo loro di scambiare messaggi attraverso il server. Come server XMPP è stato scelto OpenFire 3.6.3, distribuito con licenza Open Source GPL da Jive Software. OpenFire è un server che si basa naturalmente sul protocollo XMPP e offre agli utilizzatori un alto livello di personalizzazione, con un interfaccia grafica d amministrazione intuitiva anche per i non esperti nell amministrazione di server. Grazie alla notevole quantità di plug-in disponibili si propone inoltre come uno dei più completi server XMPP disponibili.[15] Figura 22 Uno screenshot della Administration Console del server OpenFire 50

5 Conclusioni 5.1 Conclusioni sullo studio e lo sviluppo dell applicazione Il progetto al centro di questa trattazione non si è limitato alla progettazione, allo studio e allo sviluppo dell applicazione di sicurezza personale in ambiente Android. Una parte preponderante del progetto è consistita nello studio del sistema operativo Android in tutte le sue caratteristiche. La ricerca già difficoltosa di documentazione adeguata, è stata resa ancora più complicata da alcuni cambiamenti, che hanno coinvolto alcune librerie, come quelle di accesso al servizio GPS, durante il transito dalla versione 0.9 a quella 1.0 del Software Development Kit. Il fatto che alcune librerie, come le quelle di comunicazione XMPP e di navigazione satellitare GoogleNav, siano state privatizzate nelle recenti versione del Software Development Kit pone dei limiti nella realizzazione di applicazioni complete, rendendo più difficile il lavoro degli sviluppatori, che sono costretti ad utilizzare librerie esterne per supplire alle mancanze del sistema operativo. Nonostante le privatizzazioni attuate dalla Open Handset Alliance Android risulta essere comunque un sistema operativo mobile completo e potente, che permette ad ogni sviluppatore di sfruttare appieno le proprie caratteristiche e potenzialità in libertà, grazie alla licenza open source. 51

5.2 Possibili sviluppi futuri L applicazione realizzata si presta molto facilmente ad ulteriori integrazioni e sviluppi. Uno dei possibili sviluppi potrebbe essere quello di dotare le forze dell ordine, o un adeguato servizio di vigilanza, di applicazioni simili in grado di ricevere tutte le richieste d aiuto che vengono inviate dai dispositivi mobili presenti in una certa area. Un esempio di questo tipo potrebbe essere rappresentato da un campus universitario, dove il servizio di vigilanza interna potrebbe essere dotato di applicazioni in grado di visualizzare le richieste d aiuto provenienti dai dispositivi mobili degli studenti e quindi di intervenire in modo tempestivo in caso di necessità. Con opportune modifiche l applicazione mobile potrebbe diventare uno strumento di localizzazione dell utente in possesso del cellulare. Un controllo di questo tipo potrebbe essere richiesto da alcuni genitori per i propri figli, in modo da conoscere sempre la loro posizione e i luoghi che frequentano, a discapito della loro privacy. 52

6 Bibliografia 1. http://www.android.com 2. http://www.openhandsetalliance.com/ 3. http://www.eclipse.org 4. http://code.google.com/android/ 5. http://code.google.com/intl/it-it/android/reference/android/app/activity.html 6. http://code.google.com/intl/it-it/android/intro/installing.html 7. http://www.salvomobile.it 8. http://www.sicuritalia.it 9. http://code.google.com/intl/it- IT/android/reference/com/google/android/maps/MapActivity.html 10. http://maps.google.it/ 11. http://www.igniterealtime.org/projects/smack/index.jsp 12. http://www.jabber.org 13. http://en.wikipedia.org/wiki/xmpp 14. http://www.igniterealtime.org/builds/smack/docs/latest/documentation/ 15. http://www.igniterealtime.org/projects/openfire/index.jsp Oltre alle fonti citate, per lo studio del sistema operativo e lo sviluppo dell applicazione è stato necessario consultare altri libri e documenti: Android Essentials, Chris Haseman, apress; Android A Programmer s Guide, Jerome (J.F.) DiMarzio, McGrawHill; andbook!, Nicolas Gramlich, distribuito gratuitamente, anddev.org; The Peer To Peer Manifesto, Michel Bauwens. 53