Università Politecnica delle Marche Dipartimento di Ingegneria dell Informazione Programmazione in ambiente Android Laura Montanini - laura.montanini@univpm.it Corso di Tecnologie per le TLC 2013-2014 1
Èunsistemaoperativoopensourcebasatosulkernel open source sul 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:HTCDreamèilprimodispositivoAndroidsulmercato 2
Release Android 2011 2011 2012 31 Ottobre 2013 2010 2010 2009 2009 2009 Sono in ordine alfabetico Hannoilnomediundolciume 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) ÈunpluginperEclipse 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 Levocidacompilaresono: 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.classdibytecodejava 14
I mattoni fondamentali di un app 15
I mattoni fondamentali di un app Asecondadiquelchesiintendefareèdisponibileun 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 èilmodellopiùdiffusoinandroid estende la classe base android.app.activity Servizio: gira in sottofondo e non interagisce direttamente con l utente adesempiopuòriprodurreunbranomp3 estende la classe android.app.service 16
I mattoni fondamentali di un app Broadcast Receiver: utilizzato quando si intende intercettare un particolare evento adesempiolosipuòutilizzaresesivuolecompiereun 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 Impostiamoilnome,illivelloAPIminimoequellotarget 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>) ipermessi illivellominimodiapirichiesto 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:UIwidgetcomebottonioareeditesto 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 RadioButton CheckBox 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! Creiamoun 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