You are on page 1of 50

Universit Politecnica delle Marche

Dipartimento di Ingegneria dellInformazione

Programmazione in ambiente
Android
Laura Montanini laura.montanini@univpm.it

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 lazienda
2007: Presentazione ufficiale al pubblico da parte della OHA
(Open Handset Alliance)
2008: HTC Dream il primo dispositivo Android sul mercato





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


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

Android SDK

Android mette a disposizione un apposito kit di


sviluppo completo di emulatore, librerie e
documentazione: lAndroid 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 dellutente un pacchetto gi


configurato chiamato: ADT (Android Developer Tools)
un plugin per Eclipse
Pu essere scaricato allindirizzo:
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

Android Virtual Device

Il kit di sviluppo comprende lemulatore (Android Virtual Device)

Possiamo creare e configurare quanti dispositivi virtuali vogliamo.

Possiamo avviare due o pi dispositivi virtuali insieme (ad esempio


per testare unapplicazione 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 lAVD, dalla scheda Android Virtual Devices, lo


selezioniamo e clicchiamo su Start

11

Eseguire unapp


In fase di sviluppo, esistono due modi per eseguire la


propria app:
Usando lAVD:
 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 linstallazione 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 unapp

15

I mattoni fondamentali di unapp


A seconda di quel che si intende fare disponibile un
diverso modello di applicazione. Android fornisce
quattro mattoni di base:
 Attivit:


interagisce con lutente 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
lutente
ad esempio pu riprodurre un brano MP3
estende la classe android.app.Service
16

I mattoni fondamentali di unapp




Broadcast Receiver:
utilizzato quando si intende intercettare un particolare
evento
ad esempio lo si pu utilizzare se si vuole compiere unazione
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 licona di lancio, impostiamo, per iniziare, una


Blank Activity e ne scegliamo il nome

19

Hello, World!


Eclipse crea in maniera automatica lapplicazione Hello,


World!

20

Hello, World!


Eclipse crea in maniera automatica lapplicazione Hello,


World!

Struttura dei
progetti
presenti nel
workspace

21

Hello, World!


Eclipse crea in maniera automatica lapplicazione Hello,


World!

Classi e file
aperti

22

Hello, World!


Eclipse crea in maniera automatica lapplicazione Hello,


World!

Gerarchia di
pacchetti e classi del
progetto , con relativi
attributi e metodi

23

Hello, World!


Eclipse crea in maniera automatica lapplicazione Hello,


World!

Messaggi di errore,
logcat, warning ed
eccezioni

24

Il ciclo di vita di unActivity

25

Il ciclo di vita di unActivity


Quando si crea unistanza di unactivity, il sistema richiama in sequenza
queste tre callback: solo a quel punto lutente pu interagire con lactivity

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

Linterfaccia 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

Linterfaccia 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 dellinterfaccia 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
dellorientazione
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


dalleditor grafico
alleditor di testo xml

36

Il layout

Editor di testo xml

37

Hello, World SMS!

Creiamo unapplicazione 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 dellevento click:

Si assegna al bottone
un nuovo gestore
dellevento click
chiamato
OnClickListener

Si effettua loverride
del metodo onClick
che corrisponde
allevento pressione
del bottone

47

Hello, World SMS!




Luso delle classi per linvio 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 allinterno 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