seminar i o android
DESCRIPTION
AndroidTRANSCRIPT
Università Politecnica delle Marche Dipartimento di Ingegneria dell’Informazione
Programmazione in ambiente AndroidAndroid
Laura Montanini [email protected]
Corso di Tecnologie per le TLC2013-2014
1
È un sistema operativo open source basato sul kernel� È un sistema operativo open source basato sul kernelLinux e progettato principalmente per dispositivimobili dotati di touchscreen (ad es. smartphone etablet)
� 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 mercato2
Release AndroidRelease Android
31 Ottobre
20132011
2011
2012
� Sono in ordine alfabetico
� Hanno il nome di un dolciume
� Ogni versione porta qualcosa dinuovo
3
2009
2009
2009
2010
2010
2011
VantaggiVantaggi
� È ampiamente diffuso
� Progettato per smartphone e tablet, ma utilizzabileanche su altri dispositivi elettronici: portatili,netbook, eBook reader, ecc.
Permette di modificare e distribuire il software� Permette di modificare e distribuire il softwareliberamente
� 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 cuiconfrontarsi
4
Android SDKAndroid SDK
� Android mette a disposizione un apposito kit disviluppo completo di emulatore, librerie edocumentazione: l’Android SDK.documentazione: l’Android SDK.
6
� NB: poiché Android si programma inJava, il sistema deve disporre di unJava SDK (JDK): senza un JDK non èpossibile compilare il codice!
ADT per EclipseADT per Eclipse
� Android mette a disposizione dell’utente un pacchetto giàconfigurato chiamato: ADT (Android Developer Tools)
� È un plugin per Eclipse� È 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 DeviceAndroid 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 esempioper testare un’applicazione che fa interagire più smartphone).
8
Configurare un AVDConfigurare 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 unanuova istanza
� Clicchiamo su Device Definitions, selezioniamo un dispositivo, e� Clicchiamo su Device Definitions, selezioniamo un dispositivo, epoi 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 undispositivo virtuale compatibile con la versione 1.5 delle specifiche Android)
◦ SD Card: possiamo dotare il dispositivo virtuale di una scheda di memoriavirtuale
◦ 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 AVDConfigurare un AVD
� Dalla toolbar clicchiamo su Android Virtual Device Manager
10
Lanciare un AVDLanciare un AVD
� Una volta creato l’AVD, dalla scheda Android Virtual Devices, loselezioniamo e clicchiamo su Start…
11
Eseguire un’appEseguire un’app
� In fase di sviluppo, esistono due modi per eseguire la propria app:
◦ Usando l’AVD:� Permette di simulare il funzionamento su differenti
dispositividispositivi
� È 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?Java o non Java?
� Il linguaggio utilizzato da Android si basa sullinguaggio Java, ma non è Java!
� Quasi la totalità delle librerie utilizzate sonoQuasi la totalità delle librerie utilizzate sonolibrerie standard di Java ad eccezione di quellegrafiche
� La definizione dell'interfaccia grafica utilizza unapproccio dichiarativo come nella maggior partedelle attuali piattaforme di sviluppo
� Non viene usata la Java Virtual Machine
13
Dalvik Virtual MachineDalvik Virtual Machine
� Per ottimizzare al massimo l'utilizzo delle risorse deidispositivi, è stata adottata una diversa VirtualMachine (VM) chiamata Dalvik
� È una VM ottimizzata per l'esecuzione di applicazioniin dispositivi a risorse limitate
� Esegue codice contenuto in file .dex (DalvikEXecutable) ottenuti, in fase di building, a partire dafile .class di byte code Java
14
I mattoni fondamentali di un’appI mattoni fondamentali di un’app
� A seconda di quel che si intende fare è disponibile undiverso modello di applicazione. Android forniscequattro mattoni di base:
� Attività:
◦ interagisce con l’utente utilizzando lo schermo e i dispositivi◦ interagisce con l’utente utilizzando lo schermo e i dispositividi 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 conl’utente
◦ ad esempio può riprodurre un brano MP3
◦ estende la classe android.app.Service
16
I mattoni fondamentali di un’appI mattoni fondamentali di un’app
� Broadcast Receiver:
◦ utilizzato quando si intende intercettare un particolareevento
◦ ad esempio lo si può utilizzare se si vuole compiere un’azionequando si scatta una foto o quando parte la segnalazione diquando si scatta una foto o quando parte la segnalazione dibatteria scarica
◦ estende la classe android. Content. BroadcastReceiver
� Content Provider:
◦ utilizzato per accedere a dati e informazioni
◦ costituisce un canale di comunicazione tra le differentiapplicazioni installate nel sistema
◦ Estende la classe astratta android.content.ContentProvider.
17
Hello, World!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!Hello, World!
� Configuriamo l’icona di lancio, impostiamo, per iniziare, unaBlank Activity e ne scegliamo il nome
19
Hello, World!Hello, World!
� Eclipse crea in maniera automatica l’applicazione “Hello,World!”
21
Struttura dei
progetti
presenti nel
workspace
Hello, World!Hello, World!
� Eclipse crea in maniera automatica l’applicazione “Hello,World!”
22
Classi e file
aperti
Hello, World!Hello, World!
� Eclipse crea in maniera automatica l’applicazione “Hello,World!”
23
Gerarchia di
pacchetti e classi del
progetto , con relativi
attributi e metodi
Hello, World!Hello, World!
� Eclipse crea in maniera automatica l’applicazione “Hello,World!”
24
Messaggi di errore,
logcat, warning ed
eccezioni
Il ciclo di vita di un’ActivityIl ciclo di vita di un’ActivityQuando si crea un’istanza di un’activity, il sistema richiama in sequenzaqueste tre callback: solo a quel punto l’utente può interagire con l’activity
3
26
1
2
Il file ManifestIl file Manifest
� Per ogni progetto deve essere redatto un fileAndroidManifest.xml
� Dichiara:
◦ le componenti (<activity>, <service>, <receiver>, <provider>)◦ 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 (ades. la libreria di Google Maps)
27
L’interfaccia utenteL’interfaccia utente
� Usa una gerarchia di oggetti delle classi View eViewGroup
◦ View: UI widget come bottoni o aree di testo
◦ ViewGroup: contenitori invisibili che definiscono come glielementi figli devono essere posizionati
28
L’interfaccia utenteL’interfaccia utente
� Elementi derivati dalla classe ViewGroup: i layout
LinearLayout RelativeLayout WebView
� Elementi derivati dalla classe View: bottoni, aree di testo, radiobutton, number picker, check box, progress bar, ecc.
29
Button RadioButton
CheckBox NumberPicker
Il layoutIl layout
� Definisce la struttura visiva dell’interfaccia utenteDefinisce 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
Hello, World SMS!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!Hello, World SMS!
� La gestione di bottoni ed elementi grafici:
Si importano dalla libreria
standard di Android le classi
46
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
Hello, World SMS!Hello, World SMS!
� La gestione dell’evento click: Si assegna al bottone
un nuovo gestore
dell’evento click
chiamato
OnClickListener
47
Si effettua l’override
del metodo onClick
che corrisponde
all’evento pressione
del bottone
Hello, World SMS!Hello, World SMS!
� L’uso delle classi per l’invio di SMS:
Creazione di un SMS
manager
48
Invio del messaggio
“Hello, World!” al
numero composto
I pacchetti APKI 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 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 digitaleCreare la firma digitale
� Dal menu contestuale del progetto cliccare su Export
> Android > Export Android Application
50
Le firme digitali vengono raccolte econservate all’interno di unkeystoreNB: è buona norma proteggerlocon una password nel caso il file civenga rubato!
Le firma digitale è caratterizzata daun nome (alias), da una password,da un tempo di validità e dai datianagrafici del firmatario