Android ed utilizzo sociale del GPS. Axisor! Un esempio…
Una volta il compito di un cellulare era semplicemente quello di mettere in contatto le persone, con la voce o con semplici messaggi di testo. Adesso invece sono oggetti non solo di culto o moda (iPhone in primis), ma anche dotati di caratteristiche davvero eccezionali. Queste caratteristiche hanno il compito di permettere al cellulare di [...]
Una volta il compito di un cellulare era semplicemente quello di mettere in contatto le persone, con la voce o con semplici messaggi di testo. Adesso invece sono oggetti non solo di culto o moda (iPhone in primis), ma anche dotati di caratteristiche davvero eccezionali. Queste caratteristiche hanno il compito di permettere al cellulare di trattare il quanto più vasto numero di informazioni possibili, per poi esporle all’utilizzatore nella maniera più chiara. È la tendenza del futuro. Il mondo non è altro che un insieme di informazioni ad alta densità, di reti che lo percorrono e di persone che comunicano tra di loro. In un simile panorama è ovvio che chi riesce a gestire più informazioni (e più velocemente) degli altri è avvantaggiato. Può raggiungere chiunque con un cellulare e fornire le informazioni richieste utili (tipo indicazioni di navigazione) e non (pubblicità) in modo chiaro ed altamente pervasivo. Ma in fin dei conti l’utilizzatore riesce comunque ad ottenere un vantaggio, in quanto può avere a propria disposizione una mole enorme di informazioni utili in real-time e in momenti di necessità. Google da questo punto di vista è stata lungimirante. Google stessa è diventata il sinonimo di “informazione in tempo reale”. I suoi motori di ricerca battono continuamente la rete alla ricerca delle informazioni di cui qualcuno prima o poi avrà bisogno. Ed è in questo contesto che è stato introdotto Android, un sistema operativo basato su kernel Linux e Java based. Un sistema operativo che, nelle intenzioni di Google, dovrà equipaggiare un gran numero di dispositivi mobili a partire da adesso. E non ci sono dubbi che il connubio Google-Mobile possa rappresentare quanto di più letale possa esistere in un mercato come quello dei dispositivi mobili e dei servizi di informazione web based. Alla lunga Android, a mio parere, andrà a costituire anche un’alternativa agli ormai troppo blasonati iPhone e Windows Mobile, che di certo non possono competere con Google nel trattamento delle informazioni (anche se Microsoft ci sta provando con Bing).
Passiamo alla descrizione dell’applicativo del titolo (Axisor) e del perchè di questo lungo cappello introduttivo.
Faccio parte di un gruppo di sviluppo che si chiama Androidiani Dev Team. Proprio tenendo bene a mente la succitata logica di mercato (e di attuale sviluppo del mondo) abbiamo pensato: “Perchè non realizzare un’applicazione in grado di permettere alle persone di poter creare e gestire degli eventi geo-localizzati?”. L’intento era quello di fornire un servizio per poter colmare un vuoto che ciascuno di noi, per lo meno una volta nella vita, avrà sicuramente provato. Rispondere alla fatidica domanda: “Cosa faccio oggi?”. E così è nato Axisor!
Fondamentalmente l’applicativo (in continuo aggiornamento e sviluppo), permette a chi è iscritto al servizio di creare un evento geo-localizzato e condividerlo, di modo che altre persone possano vederlo ed eventualmente partecipare. Se voglio fare una partita a tennis, mi basterà creare l’evento e condividerlo sulla mappa. Chi vede sulla cartina l’evento può eventualmente rispondere ed aderire all’iniziativa. In questo modo molte persone, anche se non si sono mai conosciute prima, possono venire in contatto.



Tutto ciò grazie alla gestione della geolocalizzazione che Android permette. Vediamo un pò più nel dettaglio questa gestione. Android mette a disposizione tutta una serie di classi di funzioni grazie alle quali è possibile conoscere la propria posizione (in termini di coordinate GPS, triangolazione celle GSM ed addirittura attraverso il nome della via e del paese) o fornire le coordinate di un punto su una mappa.
Prima di tutto, in un progetto per il quale volete utilizzare le API di Google è necessario che il file AndroidManifest.xml abbia le giuste entry, pena l’impossibilità di compilare. Facciamo le modifiche necessarie:
All’interno dei tag <application></application>, prima della chiusura:
<uses-library android:name=”com.google.android.maps” />
Questo permettera’ al gestore dei progetti in incorporare la libreria delle API di Google, necessarie per i dati di geolocalizzazione con la gestione del visualizzatore delle mappe. Subito dopo il tag di chiusura </application> si trovano le permission. Per poter accedere ai servizi di geolocalizzazione bisogna impostare i seguenti campi:
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”></uses-permission>
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”></uses-permission>
<uses-permission android:name=”android.permission.ACCESS_LOCATION” />
Adesso che abbiamo terminato la configurazione del file “AndroidManifest.xml” passiamo a spiegare qualche dettaglio in piu’ della classe “com.google.androids.maps”. Questa e’ una classe esterna che come abbiamo visto deve essere esplicitata all’interno del file “AndroidManifest.xml”. Non fa parte del pacchetto standard delle librerie di Android e per questo motivo non viene inserita nativamente all’interno delle funzioni di libreria dell’SDK. Fornisce gli strumenti necessari alla gestione e visualizzazione delle mappe dei servizi Google Maps sul display, in base al riscontro fornito dai dati che provengono dai sensori (es. coordinate GPS). Inoltre fornisce una serie di elementi che permettono di costruire le UI di gestione delle mappe (es. lo zoom).
Come ben sappiamo, gli elementi grafici che vengono usati per costruire le interfacce sono le Views. Una volta che avremo inserito nel progetto la gestione della libreria esterna “com.google.android.maps” per poter visualizzare una mappa sull schermo, dovremo creare un Layout apposta, contenente gli elementi grafici che andremo ad inserire nella schermata. Questi hanno nomi diversi dai normali elementi di interfaccia tipicamente gestiti dalle librerie standard di Android e meritano quindi una trattazione a parte.
All’interno di un normale file di Layout (quelli che descrivono le interfacce in XML) inseriamo il tag MapView come specificato di seguito:
<com.axisor.ViewMap
android:id=”@+id/mapview”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:clickable=”true”
android:apiKey=”<key rilasciata da Google>” />
Come si puo’ vedere questo elemento viene descritto come un normalissimo elemento di interfaccia, con l’unica differenza che viene esplicitato anziche’ una chiamata a MapView (l’elemento standard della classe) una versione ridefinita e modificata adatta allo scopo, com.axisor.ViewMap, che vedremo piu’ avanti. Tutti gli altri parametri sono abbastanza standard, tranne l’ultima entry “android:apiKey=”<key rilasciata da Google>” nella quale al posto di <key rilasciata da Google> deve essere inserita una apposti key che viene rilasciata da Google seguendo le istruzioni al seguente indirizzo:
http://code.google.com/intl/it-IT/android/add-ons/google-apis/mapkey.html
Senza la chiave corretta è impossibile accedere al servizio delle mappe di Google. Quelle di debug hanno una scadenza e non possono essere usate nell’Android Market. Quelle ottenute con un certificato di rilascio dell’applicazione ufficiale invece sono permanenti (finchè mamma Google lo permetterà). Possono poi essere inseriti vari elementi grafici di contorno che concorreranno a definire quella che sarà la pagina di visualizzazione della mappa, tipo i bottoni per pilotare lo zoom, visualizzazione degli Overlay (i simboli grafici che possono indicare punti ben precisi nella mappa, etc.)
Fatto questo possiamo passare alla descrizione delle funzioni del codice inserito nelle classi, che ci possono permettere di ottenere il risultato che vogliamo. Lo affronteremo nel prossimo numero. Alla prossima.
Danilo