Prefazione Prima di iniziare xiv xxii 1 Introduzione ad Android 31 1.1 Introduzione 32 1.2 Panoramica di Android 34 1.3 Android 2.2 (Froyo) 37 1.4 Android 2.3 (Gingerbread) 40 1.5 Android 3.0 (Honeycomb) 42 1.6 Android Ice Cream Sandwich 45 1.7 Download di applicazioni da Android Market 46 1.8 I package 47 1.9 Android Software Development Kit (SDK) 48 1.10 Tecnologia a oggetti: un veloce ripasso 50 1.11 Esplorazione dell applicazione Doodlz in un Android Virtual Device (AVD) 53 1.12 Risorse di Deitel 62 1.13 Risorse di sviluppo su Android 63 1.14 Riepilogo 64 2 Android Market e la commercializzazione delle applicazioni 35 2.1 Introduzione 36 2.2 Creazione di applicazioni Android di qualità 36 2.3 Best practice di Android 38 2.3.1 Compatibilità 38 2.3.2 Supporto di più schermi 40 2.3.3 Linee guida di Android per l interfaccia utente 40 2.4 Registrazione su Android Market 44 2.5 Configurazione di un account commerciante Google Checkout 44 2.6 Il file AndroidManifest.xml 45 2.7 Preparazione delle applicazioni per la pubblicazione 46 2.8 Caricamento delle applicazioni su Android Market 51 2.9 Altri siti marketplace Android 54
viii Sommario 2.10 Stabilire il prezzo delle applicazioni: gratuite o a pagamento 54 2.11 Guadagnare con le applicazioni tramite la pubblicità in-app 56 2.12 Guadagnare con le applicazioni: fatturazione in-app per vendere articoli virtuali nell applicazione 57 2.13 Avvio dell applicazione Market dall interno dell applicazione 59 2.14 Gestione delle applicazioni su Android Market 59 2.15 Promozione dell applicazione 59 2.16 Altre note piattaforme applicative 64 2.17 Documentazione per gli sviluppatori Android 65 2.18 Umorismo su Android 66 2.19 Riepilogo 67 3 L'applicazione Welcome 68 Esplorazione di Eclipse e ADT Plugin 3.1 Introduzione 69 3.2 Panoramica delle tecnologie 69 3.3 L IDE Eclipse 70 3.4 Creazione di un nuovo progetto 71 3.5 Creazione della GUI per l applicazione Welcome con il Visual Layout Editor di ADT 74 3.6 Analisi del file main.xml 87 3.7 Esecuzione dell applicazione Welcome 89 3.8 Riepilogo 89 4 L applicazione Tip Calculator 91 Creare un applicazione Android con Java 4.1 Introduzione 92 4.2 Esplorazione dell applicazione Tip Calculator 93 4.3 Panoramica delle tecnologie 94 4.4 Creazione della GUI dell applicazione 94 4.4.1 Introduzione a TableLayout 94 4.4.2 Creazione del progetto e aggiunta del TableLayout e dei componenti 95 4.4.3 Il layout a questo punto 99 4.4.4 Personalizzazione dei componenti per completare il design 99 4.4.5 La marcatura XML finale per la GUI di Tip Calculator 102 4.4.6 strings.xml 106 4.5 Aggiunta di funzionalità all applicazione 106 4.6 Riepilogo 116 5 L applicazione Favorite Twitter Searches 117 SharedPreferences, Button, layout nidificati, Intent, AlertDialog, inflating dei layout XML e file manifest 5.1 Introduzione 118
ix 5.2 Esplorazione dell applicazione Favorite Twitter Searches 119 5.3 Panoramica delle tecnologie 121 5.4 Creazione della GUI e dei file di risorse dell applicazione 123 5.4.1 TableLayout in main.xml 123 5.4.2 Creazione del progetto 124 5.4.3 Creazione dei file di risorse 124 5.4.4 Aggiunta del TableLayout e dei componenti 126 5.4.5 Creazione di una TableRow che mostra un Button di ricerca e un Button Edit 130 5.5 Creazione dell applicazione 131 5.6 AndroidManifest.xml 142 5.7 Riepilogo 143 6 Il gioco Flag Quiz 146 Asset, AssetManager, animazioni con tweening, Handler, menu e registrazione dei messaggi di errore 6.1 Introduzione 147 6.2 Esplorazione dell applicazione Flag Quiz Game 151 6.3 Panoramica delle tecnologie 151 6.4 Creazione della GUI e dei file di risorse dell applicazione 153 6.4.1 LinearLayout in main.xml 153 6.4.2 Creazione del progetto 153 6.4.3 Creazione e modifica dei file di risorse 154 6.4.4 Aggiunta dei componenti al LinearLayout 155 6.4.5 Creazione di un Button con inflating dinamico 158 6.4.6 Creazione dell animazione della bandiera 158 6.5 Creazione dell applicazione 160 6.6 AndroidManifest.xml 174 6.7 Riepilogo 175 7 Il gioco Cannon Game 176 Intercettare azioni di tocco e gesti, animazione manuale fotogramma-perfotogramma, grafica, suoni, thread, SurfaceView e SurfaceHolder 7.1 Introduzione 177 7.2 Esplorazione dell applicazione Cannon Game 178 7.3 Panoramica delle tecnologie 179 7.4 Creazione della GUI e dei file di risorse dell applicazione 181 7.4.1 Creazione del progetto 181 7.4.2 AndroidManifest.xml 181 7.4.3 strings.xml 182 7.4.4 FrameLayout in main.xml 182 7.4.5 Aggiunta dei suoni all applicazione 183
x Sommario 7.5 Creazione dell applicazione 183 7.5.1 La classe Line mantiene i punti estremi di una linea 183 7.5.2 La sottoclasse CannonGame di Activity 183 7.5.3 La sottoclasse CannonView di View 186 7.6 Riepilogo 203 8 Il gioco SpotOn 204 Animazione delle proprietà, ViewPropertyAnimator, AnimatorListener, collection thread-safe, SharedPreferences predefinite per una Activity 8.1 Introduzione 205 8.2 Esplorazione dell applicazione SpotOn 206 8.3 Panoramica delle tecnologie 207 8.4 Creazione della GUI e dei file di risorse dell applicazione 208 8.4.1 AndroidManifest.xml 208 8.4.2 RelativeLayout in main.xml 209 8.4.3 ImageView in untouched.xml per un punto non toccato 209 8.4.4 ImageView in life.xml per una vita 209 8.5 Creazione dell applicazione 210 8.5.1 La sottoclasse SpotOn di Activity 210 8.5.2 La sottoclasse SpotOnView di View 212 8.6 Riepilogo 224 9 L applicazione Doodlz 225 Grafica bidimensionale, SensorManager, eventi multitouch e Toast 9.1 Introduzione 226 9.2 Esplorazione dell applicazione Doodlz 227 9.3 Panoramica delle tecnologie 228 9.4 Creazione della GUI e dei file di risorse dell applicazione 229 9.4.1 Creazione del progetto 229 9.4.2 AndroidManifest.xml 230 9.4.3 strings.xml 230 9.4.4 main.xml 231 9.4.5 color_dialog.xml 231 9.4.6 width_dialog.xml 233 9.5 Creazione dell applicazione 234 9.5.1 La sottoclasse Doodlz di Activity 234 9.5.2 La sottoclasse DoodleView di View 247 9.6 Riepilogo 256 10 L applicazione Address Book 258 10.1 Introduzione 259 10.2 Esplorazione dell applicazione Address Book 261 10.3 Panoramica delle tecnologie 262
xi 10.4 Creazione della GUI e dei file di risorse 263 10.4.1 Creazione del progetto 264 10.4.2 AndroidManifest.xml 264 10.4.3 styles.xml 264 10.4.4 textview_border.xml 265 10.4.5 Il layout della Activity AddressBook: contact_list_item.xml 266 10.4.6 Il layout della Activity ViewContact: view_contact.xml 266 10.4.7 Il layout della Activity AddEditContact: add_contact.xml 266 10.4.8 Definizione dei MenuItem dell applicazione con risorse menu in XML 268 10.5 Creazione dell applicazione 269 10.5.1 La sottoclasse AddressBook di ListActivity 269 10.5.2 La sottoclasse ViewContact di Activity 275 10.5.3 La sottoclasse AddEditContact di Activity 281 10.5.4 La classe di utilità DatabaseConnector 284 10.6 Riepilogo 290 11 L applicazione Route Tracker 291 11.1 Introduzione 292 11.2 Esplorazione dell applicazione Route Tracker 294 11.3 Panoramica delle tecnologie 296 11.4 Creazione della GUI e dei file di risorse 298 11.4.1 Creazione del progetto 298 11.4.2 AndroidManifest.xml 298 11.4.2 Il layout di Route Tracker: main.xml 299 11.5 Creazione dell applicazione 300 11.5.1 La sottoclasse RouteTracker di MapActivity 300 11.5.2 La sottoclasse BearingFrameLayout di FrameLayout 311 11.5.3 La sottoclasse RouteOverlay di Overlay 314 11.6 Riepilogo 318 12 L applicazione Slideshow 319 Accesso alla gallery e alla libreria multimediale, content provider integrati, MediaPlayer, transizioni delle immagini, layout ListActivity personalizzati e view holder pattern 12.1 Introduzione 320 12.2 Esplorazione dell applicazione Slideshow 323 12.3 Panoramica delle tecnologie 324 12.4 Creazione della GUI e dei file di risorse 327 12.4.1 Creazione del progetto 327 12.4.2 Utilizzo delle icone di Android standard nella GUI dell applicazione 327 12.4.3 AndroidManifest.xml 327 12.4.4 Il layout per gli elementi della ListView nella ListActivity Slideshow 328 12.4.5 Il menu della ListActivity Slideshow 328
xii Sommario 12.4.6 Il layout per l EditText nella finestra di dialogo Set Slideshow Name 329 12.4.7 Il layout per la ListActivity SlideshowEditor 329 12.4.8 Il layout per gli elementi della ListView nella ListActivity SlideshowEditor 330 12.4.8 Il layout per la Activity SlideshowPlayer 330 12.5 Creazione dell applicazione 331 12.5.1 La classe SlideshowInfo 331 12.5.2 La sottoclasse Slideshow di ListActivity 332 12.5.3 La sottoclasse SlideshowEditor di ListActivity 343 12.5.4 La sottoclasse SlideshowPlayer di ListActivity 351 12.6 Riepilogo 358 13 L applicazione Enahanced Slideshow 360 Serializzazione dei dati, acquisizione di immagini con la fotocamera e riproduzione di video in una VideoView 13.1 Introduzione 361 13.2 Esplorazione dell applicazione Enhanced Slideshow 362 13.3 Panoramica delle tecnologie 363 13.4 Creazione della GUI e dei file di risorse 364 13.4.1 Creazione del progetto 365 13.4.2 AndroidManifest.xml 365 13.4.3 Il layout modificato di ListActivity SlideshowEditor 366 13.4.4 Il layout della Activity PictureTaker 366 13.4.5 Il layout modificato della Activity SlideshowPlayer 366 13.5 Creazione dell applicazione 367 13.5.1 La classe MediaItem 367 13.5.2 La classe SlideshowInfo 368 13.5.3 La classe Slideshow 370 13.5.4 La classe SlideshowEditor 375 13.5.5 La sottoclasse PictureTaker di Activity 378 13.5.6 La classe SlideshowPlayer 384 13.6 Riepilogo 389 14 L applicazione Wheather Viewer 390 Servizi web, JSON, Fragment, ListFragment, DialogFragment, ActionBar, navigazione a schede, widget delle applicazioni, Intent di broadcast e BroadcastReceiver 14.1 Introduzione 391 14.2 Esplorazione dell applicazione Weather Viewer 393 14.2 Panoramica delle tecnologie 394 14.4 Creazione della GUI e dei file di risorse dell applicazione 396 14.4.1 AndroidManifest.xml 396 14.4.2 Il layout main.xml di WeatherViewerActivity 397 14.4.3 Le città predefinite e i CAP in arrays.xml 398
xiii 14.4.4 Il layout di menu actionmenu.xml di WeatherViewerActivity 398 14.4.5 Configurazione e layout del widget WeatherProvider dell applicazione 399 14.5 Creazione dell applicazione 399 14.5.1 La classe WeatherViewerActivity 400 14.5.2 La classe CitiesFragment 415 14.5.3 La classe AddCityDialogFragment 422 14.5.5 La classe ForecastFragment 425 14.5.5 La classe SingleForecastFragment 425 14.5.6 La classe ReadLocationTask 432 14.5.7 La classe ReadForecastTask 436 14.5.8 La classe FiveDayForecastFragment 442 14.5.9 La classe ReadFiveDayForecastTask 447 14.5.10 La classe DailyForecast 452 14.5.11 La classe WeatherProvider 453 14.6 Riepilogo 459 Indice analitico 460 Capitoli disponibili sul Web Per informazioni su come scaricare questi capitoli, vedere la sezione Capitoli online della Prefazione. 15 PHAB s Pizza App Text-to-Speech, Speech-to-Text and Telephony 16 Voice Recorder App Audio Recording and Playback 17 Enhanced Address Book App Bluetooth 18 3D Art App OpenGL ES 3D Rendering 19 HTML5 Favorite Twitter Searches App Bonus Chapter: HTML5, CSS3 and JavaScript for Experienced Web Developers