Università Politecnica delle Marche Dipartimento di Ingegneria dell’Informazione Programmazione in ambiente Android Laura Montanini [email protected] Corso di Tecnologie per le TLC 2013-2014 1 È un sistema operativo open source basato sul kernel Linux e progettato principalmente per dispositivi mobili dotati di touchscreen (ad es. smartphone e tablet) 2003: Viene fondata Android Inc. 2005: Google acquista l’azienda 2007: Presentazione ufficiale al pubblico da parte della OHA (Open Handset Alliance) 2008: HTC Dream è il primo dispositivo Android sul mercato 2 Release Android 2012 2011 31 Ottobre 2013 2011 2010 2010 2009 2009 2009 Sono in ordine alfabetico Hanno il nome di un dolciume Ogni versione porta qualcosa di nuovo 3 Vantaggi È ampiamente diffuso Progettato per smartphone e tablet, ma utilizzabile anche su altri dispositivi elettronici: portatili, netbook, eBook reader, ecc. Permette di modificare e distribuire il software liberamente Dispone di un SDK per facilitare lo sviluppatore Sfrutta il linguaggio Java Fornisce una ricca documentazione reperibile on-line Dispone di una vasta comunità di sviluppatori con cui confrontarsi 4 Architettura 5 Android SDK Android mette a disposizione un apposito kit di sviluppo completo di emulatore, librerie e documentazione: l’Android SDK. NB: poiché Android si programma in Java, il sistema deve disporre di un Java SDK (JDK): senza un JDK non è possibile compilare il codice! 6 ADT per Eclipse Android mette a disposizione dell’utente un pacchetto già configurato chiamato: ADT (Android Developer Tools) È un plugin per Eclipse Può essere scaricato all’indirizzo: http://developer.android.com/sdk/index.html Contiene: ◦ Eclipse + ADT plugin ◦ Android SDK Tools ◦ le ultime versioni di Android ◦ gli ultimi sistemi di immagini per gli emulatori 7 Android Virtual Device Il kit di sviluppo comprende l’emulatore (Android Virtual Device) Possiamo creare e configurare quanti dispositivi virtuali vogliamo. Possiamo avviare due o più dispositivi virtuali insieme (ad esempio per testare un’applicazione che fa interagire più smartphone). 8 Configurare un AVD Dalla toolbar clicchiamo su Android Virtual Device Manager La finestra presenta la lista dei dispositivi virtuali configurati (inizialmente vuota) e la maschera per la creazione di una nuova istanza Clicchiamo su Device Definitions, selezioniamo un dispositivo, e poi clicchiamo su Create AVD Le voci da compilare sono: ◦ Name: il nome del dispositivo virtuale (ad esempio “Android1”) ◦ Target: la tipologia del dispositivo (se scegliamo Android 1.5 creeremo un dispositivo virtuale compatibile con la versione 1.5 delle specifiche Android) ◦ SD Card: possiamo dotare il dispositivo virtuale di una scheda di memoria virtuale ◦ Skin: possiamo scegliere la risoluzione del dispositivo. Le scelte possibili sono HVGA-P (480x320), HVGA-L (320x480), QVGA-P (320x240) e QVGAL (240x320). 9 Configurare un AVD Dalla toolbar clicchiamo su Android Virtual Device Manager 10 Lanciare un AVD Una volta creato l’AVD, dalla scheda Android Virtual Devices, lo selezioniamo e clicchiamo su Start… 11 Eseguire un’app In fase di sviluppo, esistono due modi per eseguire la propria app: ◦ Usando l’AVD: Permette di simulare il funzionamento su differenti dispositivi È oneroso dal punto di vista computazionale ◦ Usando il proprio dispositivo Android Non è necessario possedere un computer potente Permette di verificare il funzionamento solo sul dispositivo scelto In Windows necessita l’installazione dei driver del dispositivo 12 Java o non Java? Il linguaggio utilizzato da Android si basa sul linguaggio Java, ma non è Java! Quasi la totalità delle librerie utilizzate sono librerie standard di Java ad eccezione di quelle grafiche La definizione dell'interfaccia grafica utilizza un approccio dichiarativo come nella maggior parte delle attuali piattaforme di sviluppo Non viene usata la Java Virtual Machine 13 Dalvik Virtual Machine Per ottimizzare al massimo l'utilizzo delle risorse dei dispositivi, è stata adottata una diversa Virtual Machine (VM) chiamata Dalvik È una VM ottimizzata per l'esecuzione di applicazioni in dispositivi a risorse limitate Esegue codice contenuto in file .dex (Dalvik EXecutable) ottenuti, in fase di building, a partire da file .class di byte code Java 14 I mattoni fondamentali di un’app 15 I mattoni fondamentali di un’app A seconda di quel che si intende fare è disponibile un diverso modello di applicazione. Android fornisce quattro mattoni di base: Attività: ◦ interagisce con l’utente utilizzando lo schermo e i dispositivi di input messi a disposizione dallo smartphone ◦ è il modello più diffuso in Android ◦ estende la classe base android.app.Activity Servizio: ◦ gira in sottofondo e non interagisce direttamente con l’utente ◦ ad esempio può riprodurre un brano MP3 ◦ estende la classe android.app.Service 16 I mattoni fondamentali di un’app Broadcast Receiver: ◦ utilizzato quando si intende intercettare un particolare evento ◦ ad esempio lo si può utilizzare se si vuole compiere un’azione quando si scatta una foto o quando parte la segnalazione di batteria scarica ◦ estende la classe android. Content. BroadcastReceiver Content Provider: ◦ utilizzato per accedere a dati e informazioni ◦ costituisce un canale di comunicazione tra le differenti applicazioni installate nel sistema ◦ Estende la classe astratta android.content.ContentProvider. 17 Hello, World! Creiamo la nostra prima Activity! Dalla toolbar : New > Android > Android Application Project Impostiamo il nome, il livello API minimo e quello target 18 Hello, World! Configuriamo l’icona di lancio, impostiamo, per iniziare, una Blank Activity e ne scegliamo il nome 19 Hello, World! Eclipse crea in maniera automatica l’applicazione “Hello, World!” 20 Hello, World! Eclipse crea in maniera automatica l’applicazione “Hello, World!” Struttura dei progetti presenti nel workspace 21 Hello, World! Eclipse crea in maniera automatica l’applicazione “Hello, World!” Classi e file aperti 22 Hello, World! Eclipse crea in maniera automatica l’applicazione “Hello, World!” Gerarchia di pacchetti e classi del progetto , con relativi attributi e metodi 23 Hello, World! Eclipse crea in maniera automatica l’applicazione “Hello, World!” Messaggi di errore, logcat, warning ed eccezioni 24 Il ciclo di vita di un’Activity 25 Il ciclo di vita di un’Activity Quando si crea un’istanza di un’activity, il sistema richiama in sequenza queste tre callback: solo a quel punto l’utente può interagire con l’activity 3 2 1 26 Il file Manifest Per ogni progetto deve essere redatto un file AndroidManifest.xml Dichiara: ◦ ◦ ◦ ◦ le componenti (<activity>, <service>, <receiver>, <provider>) i permessi il livello minimo di API richiesto le caratteristiche hardware e software necessarie (ad es. fotocamera, bluetooth, ecc. ) ◦ le librerie esterne a cui l'applicazione deve essere linkata (ad es. la libreria di Google Maps) 27 L’interfaccia utente Usa una gerarchia di oggetti delle classi View e ViewGroup ◦ View: UI widget come bottoni o aree di testo ◦ ViewGroup: contenitori invisibili che definiscono come gli elementi figli devono essere posizionati 28 L’interfaccia utente Elementi derivati dalla classe ViewGroup: i layout LinearLayout RelativeLayout WebView Elementi derivati dalla classe View: bottoni, aree di testo, radio button, number picker, check box, progress bar, ecc. Button CheckBox RadioButton NumberPicker 29 Il layout Definisce la struttura visiva dell’interfaccia utente È possibile dichiarare il layout in due modi: ◦ Dichiarare gli elementi grafici nel file .xml ◦ Instanziare gli elementi a runtime, creando oggetti delle classi View e ViewGroup via codice 30 Il layout Posizione del file .xml 31 Selettore del dispositivo e della risoluzione dello schermo Il layout 32 Il layout Selettore dell’orientazione dello schermo 33 Palette per la scelta di layout ed elementi Il layout 34 Il layout Struttura gerarchica di layout ed elementi 35 Il layout Schede per passare dall’editor grafico all’editor di testo xml 36 Il layout Editor di testo xml 37 Hello, World SMS! Creiamo un’applicazione che invii il messaggio “Hello, World!” via SMS al numero desiderato Aspetti interessanti: ◦ Richiesta di permessi ◦ Gestione di bottoni ed elementi grafici ◦ Utilizzo delle funzionalità di invio degli SMS 38 Hello, World SMS! La richiesta dei permessi: 39 Hello, World SMS! La realizzazione del layout: 40 Hello, World SMS! La realizzazione del layout: 41 Hello, World SMS! La realizzazione del layout: 42 Hello, World SMS! La realizzazione del layout: 43 Hello, World SMS! La realizzazione del layout: 44 Hello, World SMS! La realizzazione del layout: 45 Hello, World SMS! La gestione di bottoni ed elementi grafici: Si importano dalla libreria standard di Android le classi necessarie alla gestione degli elementi creati Si associa agli elementi definiti nel file di layout un oggetto della relativa classe 46 Hello, World SMS! La gestione dell’evento click: Si assegna al bottone un nuovo gestore dell’evento click chiamato OnClickListener Si effettua l’override del metodo onClick che corrisponde all’evento pressione del bottone 47 Hello, World SMS! L’uso delle classi per l’invio di SMS: Creazione di un SMS manager Invio del messaggio “Hello, World!” al numero composto 48 I pacchetti APK Le applicazioni Android sono distribuite sotto forma di file APK (Android Package) Contengono: eseguibili in formato DEX, eventuali risorse associate e i descrittori che definiscono il contenuto del pacchetto È necessario apporre una firma digitale Non è necessario che una certification authority riconosca la firma: è possibile usare un certificato “fatto in casa” 49 Creare la firma digitale Dal menu contestuale del progetto cliccare su Export > Android > Export Android Application Le firme digitali vengono raccolte e conservate all’interno di un keystore NB: è buona norma proteggerlo con una password nel caso il file ci venga rubato! Le firma digitale è caratterizzata da un nome (alias), da una password, da un tempo di validità e dai dati anagrafici del firmatario 50