CORSO DI BASE SU ANDROID Sviluppare in linguaggio Java applicazioni per smartphone e tablet Corso di base su Android Corso di base su Android Android è un sistema operativo tra i più diffusi nei dispositivi multimediali di ultima generazione (smartphone, tablet, smartTV). Secondo i dati disponibili nel primo quadrimestre del 2013 quasi il 60% dei dispositivi mobili ha adottato Android (OHA - Open Handset Alliance). Questo sistema operativo si basa sul kernel Linux, ed è totalmente aperto; ciò significa che il programmatore può liberamente studiare il codice dello stesso sistema operativo ed utilizzarlo in modo del tutto gratuito. Il sistema di sviluppo scelto per il corso è basato su Eclipse, anch'esso del tutto gratuito e aperto. Tale sistema di sviluppo è inoltre utilizzabile anche per altri ambiti, quali lo sviluppo di applicazioni per desktop o di programmi per microcontrollori in ambito industriale. Il linguaggio di programmazione per la piattaforma Android è Java. Attualmente questo linguaggio si trova per diffusione di utilizzo in seconda posizione a livello mondiale, come risulta dai dati forniti da Tiobe (risultato notevole, considerato che il linguaggio C, primo assoluto ma di poco, è presente necessariamente in tutte le applicazioni di tipo industriale). Il corso prevede dunque una presentazione dei concetti di base del linguaggio Java e della programmazione ad oggetti in generale, accompagnata da cenni sulla programmazione dichiarativa basata su XML. Uno degli obiettivi didattici del corso consiste nel mostrare agli studenti che non tutti i prodotti software sono uguali tra loro, sia in termini di qualità tecnologica sia in termini di opportunità per un'occupazione futura. Verrà inoltre mostrato come eventualmente pubblicare applicazioni per Android sul sito ufficiale Google play per poter accedere al mercato mondiale degli sviluppatori di questa piattaforma software. Il corso prevede una selezione iniziale in ingresso mediante semplici test di verifica delle conoscenze di base di Informatica. Pur non essendo richieste conoscenze specifiche del particolare linguaggio adottato risultano utili alcune Sviluppare in linguaggio Java applicazioni per smartphone e tablet Corso di base su Android nozioni di base della programmazione strutturata, motivo per cui il corso è rivolto agli alunni dal terzo anno in poi, sia del Tecnico Industriale che dello Scientifico delle Scienze Applicate. Le lezioni saranno organizzate in unità di due ore e mezza, strutturate nel modo seguente: • mezz'ora di domande e risposte sugli argomenti trattati nel corso della lezione attuale o precedente e sui contenuti relativi alle esercitazioni assegnate per casa • un'ora di teoria dedicata allo studio della piattaforma Android o del linguaggio Java, in sequenza alternata nel corso delle lezioni • un'ora di esercitazione sui temi trattati, basata sullo studio di un'applicazione di tipo gioco per smartphone o tablet (non ancora identificata in modo definitivo) Il corso si svolgerà in una delle aule di Informatica attrezzata con PC in rete locale e internet e installati con sistema operativo Linux e SDK di Android per lo sviluppo delle applicazioni. Con la disponibilità di 15 postazioni è presumibile una capienza fino ad un massimo di 30 corsisti. I PC saranno collegati tra loro con software tipo iTALC per permettere agli studenti di seguire la lezione dal proprio PC e ai docenti di seguire e indirizzare l'operato degli studenti dalla propria postazione. Gli studenti saranno in grado di provare sul PC di laboratorio quanto presentato durante la lezione e continuare lo sviluppo anche a casa, poiché tutti gli strumenti software utilizzati sono completamente gratuiti. Inoltre l'applicazione realizzata dagli studenti potrà essere caricata sul proprio smartphone o sul proprio tablet per verificarne l'effettivo funzionamento. Tra le finalità del corso c'è quella di rendere gli studenti più preparati sulle tecnologie che utilizzano quotidianamente, mostrandone le possibilità ma anche i limiti. Inoltre i corsisti saranno in grado di applicare praticamente le nozioni acquisite e di avviare magari un'attività di sviluppatore software freelance, con possibilità di impiego virtualmente globali date le possibilità di collaborazione offerte da Internet. Sviluppare in linguaggio Java applicazioni per smartphone e tablet Corso di base su Android Struttura del corso Lezione 1 (Android) Introduzione ad Android Sito ufficiale degli sviluppatori Android : Progettazione, Sviluppo, Distribuzione Strumenti dello sviluppatore, download SDK di Android , workflow, guida agli strumenti, esempi Costruire la prima applicazione Creare un progetto Android, eseguire l'applicazione, costruire una semplice interfaccia utente, avviare un'altra Activity. Domande e risposte Lezione 2 (Java) Domande e risposte Java: linguaggio di programmazione e piattaforma; concetti OOP Linguaggio di programmazione e piattaforma Java. Applicazione “Hello world”, definizione della Classe HelloWorldApp e Metodo main. Concetto di Oggetto, Classe, Ereditarietà, Interfaccia, Package. Esercitazione Lezione 3 (Android) Domande e risposte Componenti e risorse; Activity e Intent Activity, Intent e Intent Filter, BroadCast Receiver, Service, Content Provider, architettura di un'applicazione. Risorse: Layout, String, String array, Integer array, Drawable, risorse associate a file, configurabilità delle risorse e I18N (internazionalizzazione). Ciclo di vita di una Activity, processi e task, Intent resolution, comunicazione tra Activity. Sviluppare in linguaggio Java applicazioni per smartphone e tablet Corso di base su Android Esercitazione Lezione 4 (Java) Domande e risposte Basi del linguaggio; Classi e Oggetti Variabili, operatori, espressioni, istruzioni e blocchi. Istruzioni di controllo di flusso. Classi, oggetti, classi annidate, tipi enumerati, annotazioni. Esercitazione Lezione 5 (Android) Domande e risposte View e Layout; widget ed eventi View, ViewGroup e Layout: Layout predefinti e personalizzati. ListView, Spinner. La gestione degli eventi. I widget: TextView, EditText, Button, Checkbox, Radio Button, Toggle Button. Esercitazione Lezione 6 (Java) Domande e risposte Interfacce ed Ereditarietà; Generics; numeri e stringhe Interfacce: definizione, implementazione, uso come tipo. Ereditarietà: sottoclasse e superclasse, forzatura e offuscamento, polimorfismo, classi e metodi Final e Abstract. Cenni sull'uso dei Generics. Classi numeri, caratteri, stringhe. Esercitazione Sviluppare in linguaggio Java applicazioni per smartphone e tablet Corso di base su Android Lezione 7 (Android) Domande e risposte Menu, Dialog e Toast; gestione dei dati Menu: Options Menu, ContextMenu, Menu alternativi, definizione dichiarativa dei menù. Toast, Dialog. Preferences, file system locale, SD card, SQLite: cenni. ContentProvider: realizzazione, utilizzo, ContentProvider di Android. Esercitazione Lezione 8 (Java) Domande e risposte Eccezioni; collezioni Cos'è un'eccezione. Cattura e gestione delle eccezioni. Come sollevare un'eccezione. Collezioni: Java Collections Framework, interfacce, implementazioni. Algoritmi: ordinamento, mescolamento, ricerca, composizione, ricerca di valori estremi. Implementazione di collezioni personalizzate. Esercitazione Lezione 9 (Android) Domande e risposte Multithreading e servizi; rete e sicurezza; WebView e MapView Thread, Handler e Looper. Notification Service. I componenti Service: servizi locali e remoti. Broadcast Receiver, Loader. Accesso a servizi HTTP, Android e la sicurezza. WebKit, WebView: funzioni di navigazione, JavaScript. Visualizzazione delle mappe: MapView e MapActivity, LocationManager. Esercitazione Sviluppare in linguaggio Java applicazioni per smartphone e tablet Corso di base su Android Lezione 10 (Android) Domande e risposte AppWidget, Gesture, TextToSpeech; Fragment e ActionBar. Le AppWidget, AppWidget Provider, Appwidget e Collection. A cosa servono i Fragment, ciclo di vita di un Fragment, FragmentManager e FragmentTransaction. ListFragment, comunicazione tra Fragment e Activity. Utilizzo della ActionBar. Esercitazione Conclusioni Come è andata ? Moduli di feedback. Sviluppare in linguaggio Java applicazioni per smartphone e tablet