In questo libro viene presentato, in maniera dettagliata e precisa, i fondamenti della programmazione su dispositivi
Android. Gli autori
Sayed Hashimi,
Satya Komatineni,
Dave MacLean, esperti nel settore Java, sono perfetti per la trattazione di questo argomento e il risultato è stato altrettanto lodevole.
Il libro è abbastanza voluminoso e si compone di
19 capitoli, dall'inizializzazione dell'ambiente di sviluppo a parti più interessanti quali il
touchscreen. Nel
primo capitolo viene fatta una introduzione completa su
Android, la sua storia e i componenti, passando da un confronto con l'altra piattaforma di sviluppo mobile,
Java ME.
Il
secondo capitolo è dedicato al setup dell'ambiente di sviluppo, download e installazione del
JDK,
Eclipse ed
Android SDK. Vengono presentati i componenti fondamentali e la loro utilità, come il file
AndroidManifest.xml per la configurazione dell'applicazione, simile al
web.xml adoperato in J2EE. Inoltre, viene presentato come configurare l'
AVD (Android Virtual Device), strumento importante per effettuare le varie prove prima di scaricare il software sul terminale, anche se l'attuale versione 2.2 di
Android risulta troppo lenta all'avvio, indipendentemente dal computer col quale si sviluppa. Non poteva mancare a fine capitolo l'analisi sul
ciclo di vita del software, molto importante in ambito mobile.
Nel
terzo capitolo vengono analizzate tre parti fondamentali di base per la programmazione su
Android:
resources,
content providers e
intents. Le prime sono letteralmente le varie risorse utilizzate dal programma come stringhe, colori, layout, ecc; si possono distinguere in risorse compilate e risorse non compilate. Il
content provider è uno strumento per le gestione dei dati di una applicazione. Per
intent si intende invece una descrizione astratta di una operazione da eseguire, come avviare un'altra applicazione o procedure interne.
Nel
quarto capitolo si inizia a parlare di
User Interface, definendo i vari controlli, fra cui
Text,
Button,
List,
Grid,
Date e
Time. Si analizzano anche controlli avanzati quali
MapView,
Gallery e
Spinner. Il capitolo termina con i vari tipi di
layout disponibili (
linear,
table, relative e frame). Ogni layout è importante a seconda della situazione, non c'è un preferito, ma è a discrezione del programmatore utilizzare uno o l'altro. Viene anche spiegato come annidare i vari layout.
Nel
quinto capitolo si va avanti con le User Interface andando a definire come costruire un
menu. Naturalmente non poteva mancare il classico esempio di
caricamento del menu da XML, linguaggio presente perennemente nella programmazione odierna. Viene introdotto anche il concetto di
Dialog, come una sorta di finestra simile a una
MessageBox/InputBox.
Certamente uno dei capitoli più desiderati è quello della programmazione 2D/3D, cui gli autori dedicato un conciso
capitolo sei, introducendo gli aspetti basilari delle animazioni 2D, anche se l'argomento è molto più vasto.
Il
settimo capitolo introduce il concetto di
permessi sui sistemi
Android. Vari tipi di risorse, come camera, Internet o Bluetooth, non sono accessibili da una applicazione se, in fase di programmazione, non viene specificato il permesso per quel tipo di risorsa. Nella seconda metà del capitolo, invece, vengono introdotte le
mappe e la
geolocalizzazione; viene presentato l'oggetto
MapView per la visualizzazione delle mappe e le varie procedure per effettuare le operazioni su esse, come lo zoom o la definizione di percorsi guida.
Molti servizi offerti dai cellulari necessitano di connessioni internet per effettuare operazioni. Il
capitolo otto illustra come effettuare delle
richieste HTTP tramite l'oggetto
HttpClient e distingue fra richieste di tipo
GET e richieste di tipo
POST, ovvero le modalità con cui avviene il passaggio dei parametri al servizio. Viene spiegato anche come creare dei servizi semplicemente estendendo la classe
Service fino ad arrivare alla definizione di
AIDL (Android Interface Definition Language) Service.
Il
capitolo nove si occupa di analizzare l'utilizzo di strumenti quali
Media Framework e
Telephony API: viene spiegato come utilizzare gli oggetti
MediaPlayer,
MediaController e
MediaRecorder, rispettivamente per la riproduzione e registrazione di audio e video; l'oggetto
SMSManager per gestire gli SMS; e
TelephonyManager per gestire le chiamate.
Molto interessante il
capitolo dieci, con un'ottima presentazione del mondo 3D con
OpenGL, del quale vengono introdotte le basi, la struttura e gli oggetti fondamentali:
glVertexPointer per definire un insieme di punti,
glDrawElements per disegnare a video un insieme di punti rispetto a un tipo geometrico di base (come linee o il triangolo),
glColor per definire dei colori,
glClear per pulire l'area di disegno,
gluLookAt per spostare la camera. La parte finale del capitolo è dedicata ad esempi di animazioni con utilizzo della camera, costruzioni di poligoni e teoria di base sulle
texture.
Il
capitolo undici è completamente dedicato all'organizzazione delle
preferenze: come utilizzarle e manipolarle nelle applicazioni, attraverso esempi di codice, che rendono il capitolo semplice e comprensibile. I
capitoli dodici e
tredici presentando due concetti di base di
Android: le
Live Folders e i
Widgets. Le prime si presentano come icone sul desktop, le seconde come dei componenti visualizzabili sul desktop come i gadget in Windows. Viene accennato a come costruire questi componenti e come gestirli attraverso molti screenshot ed esempi di codice.
Il
capitolo quattordici, molto completo e pieno di esempi e definizioni, spiega molto dettagliatamente il controllo
Search e tutte le relative API, svelando tutti i segreti della
QSB (Quick Search Box) e dei
Suggestion Provider.
Non potevano mancare le API per la traduzione di testi. Il
capitolo quindici le presenta, soffermandosi sulle
Text-to-Speech API per la conversione di testi in audio.
Un capitolo molto importante è il
sedicesimo, nel quale viene analizzato il
touchscreen: novità di
Android 2 è il
multitouch che viene gestito come una sorta di array di touch singoli, tanto per non allontanarsi dal concetto principale della programmazione touch. Tutto questo viene gestito dall'oggetto
MotionEvent.
Il
diciassettesimo capitolo mostra la programmazione su
Webkit, il browser di
Android, attraverso il tool di sviluppo
Titanium. Esso si basa sulla costruzione di pagine web, che vengono impacchettate come un normale package
Android (APK), installate e visualizzate attraverso Webkit.
Gli sviluppatori, che vogliono pubblicare le proprie applicazioni nell'
Android Market, saranno certamente interessati al
capitolo diciottesimo, nel quale vengono spiegate, in maniera dettagliata e precisa, le regole per utilizzare le varie sezioni dell'
Android Market.
L'
ultimo capitolo analizza
Android da un altro punto di vista: mette in luce alcuni dispositivi mobili come
Motorola DROID e
Nexus One, presenta alcune alternative ad
Android Market e un insieme di sistemi operativi mobili che fanno concorrenza come Symbian, Maemo, Windows Mobile e iPhone OS. Nella parte conclusiva viene redatta una
lista di collegamenti e risorse molto utili allo sviluppo per
Android.