Programmazione in ambiente Android

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