Home > Altro > Locator: una applicazione Gps per il sistema operativo Android per smartphone.

Locator: una applicazione Gps per il sistema operativo Android per smartphone.

Costruisci il tuo sistema ideale per le escursioni montane con Android!
Questa volta Google ha colto nel segno con il suo progetto Android conquistandosi una nuova fetta di mercato nel mondo della comunicazione digitale grazie al supporto della OHA (Open Handset Alliance), che associa le aziende leader della telefonia, del calibro di LG, HTC, Motorola, Samsung, [...]

ainos ottobre 2009 Scarica in PDF

Costruisci il tuo sistema ideale per le escursioni montane con Android!

Questa volta Google ha colto nel segno con il suo progetto Android conquistandosi una nuova fetta di mercato nel mondo della comunicazione digitale grazie al supporto della OHA (Open Handset Alliance), che associa le aziende leader della telefonia, del calibro di LG, HTC, Motorola, Samsung, Intel , Nvidia, Telecom e tante altre.

Android é un sistema operativo quai del tutto Open Source per dispositivi mobili, e di una raccolta di applicazioni middleware sviluppate in Java basate su kernel Linux 2.6.

Introduzione: Caratteristiche principali di un sistema Android

* Application Framework fornito nell’ambiente mette a disposizione delle applicazioni una serie di componenti e oggetti per interfacciarsi con il sistema;
Dalvik Virtual Machine una macchina virtuale basata su Java Virtual Machine che si preoccupa di interpretare le applicazioni e ottimizzarne l’esecuzione sullo smartphone;

* Browser Integrato basato sul motore open source di WebKit;

* Grafiche ottimizzate definite da delle librerie 2D personalizzate; grafiche 3D basate su OpenGL ES 1.0(Accelerazione Grafica Opzionale);

* SQLite per la memorizzazione di dati strutturati;

* Supporto Multimediale per comuni formati audio, video, e immagini (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF);

* Telefonia GSM (dipendente dall’hardware);

* Bluetooth, EDGE, 3G, e WiFi (dipendente dall’hardware);

* Camera, GPS, bussola, e accelerometro (dipendente dall’hardware);

* Ricco ambiente di sviluppo tra cui un emulatore, strumenti per il debugging e un plugin basati sull’IDE Eclipse;

Librerie

* Librerie C di Sistema - a BSD-derived implementazioni delle librerie di sistema C standard(libc), ottimizzato per dispositivi basati su Linux embedded;

* Librerie Multimediali – basate sull’OpenCORE di PacketVideo; le librerie supportano la riproduzione e la registrazione di molti formati audio e video, così come file di immagini, compresi i seguenti formati: MPEG4, H.264, MP3, AAC, AMR, JPG e PNG;

* Gestione delle Superfici - gestisce l’accesso al sottosistema display e compone layer grafici 2D e 3D da applicazioni multiple;

* LibWebCore – un moderno motore per browser web su Android;

* SGL - motore grafico 2D;

* Librerie 3D – un’implementazione basata su OpenGL ES 1.0; le librerie usano sia accelerazione hardware 3D (quando disponibile) sia quella inclusa, con un software 3D di registrazione altamente ottimizzato;

* FreeType - rendering di caratteri in bitmap e vettoriale;

* SQLite - un leggero ma potente motore di database relazionale a disposizione di tutte le applicazioni.

Bene, dopo aver introdotto le principali caratteristiche di questo splendido sistema inizieremo col descrivere com’è strutturato il framework e quali chicche hanno introdotto i signori di bigG.

I principali componenti che costituiscono un’applicazione Android sono 4:

* Activities

* Services

* Broadcast receivers

* Content providers

  • Activities
  • L’Activity si occupa della rappresentazione dell’interfaccia utente. Ad esempio un’Activity potrebbe mostrare un elenco di contatti di una applicazione di messaggi. Quindi questa è la classe che verrà implementata nei nostri progetti per la visualizzazione di interfacce grafiche.

  • Services
  • I Services a differenza della Activity non possiedono interfacce grafiche ma vengono eseguiti in background. Ad esempio l’utente potrebbe ascoltare della musica mentre svolge altre attività, questa funzionalità potrebbe essere gestita da un servizio che lavora in background. Infatti la scelta delle tracce potrebbe essere fatta da classi che implementano il componente Activity e la riproduzione effettiva può essere gestita da un Service.

    E’ possibile connettersi a (agganciarsi a) un servizio in corso (e avviare il servizio, se non è già in esecuzione) durante il collegamento, è possibile comunicare con il servizio attraverso un’interfaccia fornita dal servizio. Ad esempio per il servizio di gestione della musica, questa interfaccia potrebbe consentire agli utenti di mettere in pausa, riavvolgere, arrestare e riavviare la riproduzione.

  • Broadcast receivers
  • Il Broadcast receiver è un componente il cui scopo è esclusivamente quello di ricevitore globale di messaggi. Ad esempio messaggi di tipo “il fuso orario è cambiato”, o “la batteria è a un livello basso”, oppure “l’utente ha cambiato la preferenza della lingua”.

  • Content providers
  • Il Content provider è un componente atto a dare servizi per la gestione dei dati alle applicazioni che ne richiedono l’utilizzo. Ad esempio da la possibilità di memorizzare dati nel file system o in un database SQLite.

    Ma adesso basta con la teoria facciamo un pò di pratica. Vediamo dove prendere l’SDK e come settarlo per il nostro progetto:

    Procurarsi gli strumenti

    1. Scaricare l’SDK da http://developer.android.com/index.html (scaricare la versione Android 1.5 SDK r3 in uso alla pubblicazione di questo articolo) e scompattarlo in una directory di nome android-sdk-linux_x86-1.5_r3;

    2. Scaricare un IDE, nel nostro caso Eclipse visto che è supportato ufficialmente da Android, da qui http://www.eclipse.org/downloads/ e scompattarlo in una directory;

    3. Adesso avviamo Eclipse e installiamo il plugin per android ADT:

    * Avviare eclipse, e selezionare help → Software Updates….

    * Nella finestra di dialogo, selezionare il tab Available Software..

    * Cliccare su Add Site…

    * Nella finestra di dialogo di Add Site immettere la seguente stringa http://dl-ssl.google.com/android/eclipse/ e cliccare OK.

    * Ok adesso ritornando nel tab di Available Software spuntare la checkbox del plugin appena inserito e cliccare su Install…

    * Nella finestra di dialogo spuntare Android Developer Tools e Android Editors e cliccare su Next.

    * Accettare la licenza e cliccare su Finish.

    * Riavviare eclipse.

    Locator, un semplice sistema di localizzazione GPS

    Progetto:

    Ora che abbiamo gli strumenti adatti spendiamo due righe per capire appieno le funzionalità che avrà l’applicazione che andremo a sviluppare. Essa consiste in un sistema di localizzazione costante tramite GPS, che visualizza la propria posizione sulla mappa aggiornandola costantemente e fornendo altre informazioni come Latitudine, Longitudine, Altitudine e Velocità.

    android1


    Creare il progetto:

    Adesso creiamo il nostro progetto: File → New → Project selezioniamo l’etichetta “Android” ed infine selezioniamo “Adroid Project” e clicchiamo su Next.

    android2

    Nella schermata successiva impostiamo il nome del progetto, pakage, il nome dell’Activity e quello dell’applicazione(fare riferimento all’immagine).

    android3

    Finita la fase di creazione del progetto, possiamo catapultarci nello sviluppo dell’interfaccia grafica(UI).

    In android l’interfaccia grafica di un’Activity viene in genere definita da una o piu’ View con l’ausilio di vari tipi di layout (se ne possono creare anche di personalizzati).

    Le varie View possono essere definite da codice oppure tramite un file xml.

    In genere il file xml è quello più utilizzato oltre che consigliato in quanto meno complicato e velocemente modificabile. All’interno della directory /res/layout troviamo il seguente file main.xml:

    android:id="@+id/mainlayout"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" >

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:stretchColumns="1" >

    android:id="@+id/lat"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Latitude:"

    android:padding="3dip" />

    android:id="@+id/log"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:gravity="right"

    android:text="Longitude:"

    android:padding="3dip" />

    android:id="@+id/alt"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Altitude:"

    android:padding="3dip" />

    android:id="@+id/speed"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:gravity="right"

    android:text="Speed:"

    android:padding="3dip" />

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content" >

    android:id="@+id/mapview"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:clickable="true"

    android:apiKey=" Your Maps API Key" />

    android:id="@+id/zoomview"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignBottom="@id/mapview"

    android:layout_centerHorizontal="true" />

    Abbiamo appena scritto una UI con l’ausilio dei layout standard di android. Dal momento che non è obiettivo di questo articolo spiegare in modo approfondito cosa siano le View, si darà giusto qualche accenno sui layout utilizzati per il progetto:

    * LineaLayout, dispone i componenti figli in singole righe o singole colonne.
    * RelativeLayout, un layout in cui le posizioni dei componenti figli sono relazionate le une alle altre.
    * TableLayout, dispone i componenti figli in righe e colonne.

    Si ha la possibilità di definire anche i vari attributi delle View utilizzando sempre la medesima struttura XML:

    E' necessario che tu sia collegato per poter inserire un commento.