50
Università Politecnica delle Marche Dipartimento di Ingegneria dell’Informazione Programmazione in ambiente Android Android Laura Montanini - [email protected] Corso di Tecnologie per le TLC 2013-2014 1

Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

  • Upload
    lehanh

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 2: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

È 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

Page 3: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 4: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 5: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

ArchitetturaArchitettura

5

Page 6: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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!

Page 7: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 8: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 9: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 10: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Configurare un AVDConfigurare un AVD

� Dalla toolbar clicchiamo su Android Virtual Device Manager

10

Page 11: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Lanciare un AVDLanciare un AVD

� Una volta creato l’AVD, dalla scheda Android Virtual Devices, loselezioniamo e clicchiamo su Start…

11

Page 12: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 13: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 14: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 15: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

I mattoni fondamentali di un’appI mattoni fondamentali di un’app

15

Page 16: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 17: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 18: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 19: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World!Hello, World!

� Configuriamo l’icona di lancio, impostiamo, per iniziare, unaBlank Activity e ne scegliamo il nome

19

Page 20: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World!Hello, World!

� Eclipse crea in maniera automatica l’applicazione “Hello,World!”

20

Page 21: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World!Hello, World!

� Eclipse crea in maniera automatica l’applicazione “Hello,World!”

21

Struttura dei

progetti

presenti nel

workspace

Page 22: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World!Hello, World!

� Eclipse crea in maniera automatica l’applicazione “Hello,World!”

22

Classi e file

aperti

Page 23: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 24: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World!Hello, World!

� Eclipse crea in maniera automatica l’applicazione “Hello,World!”

24

Messaggi di errore,

logcat, warning ed

eccezioni

Page 25: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il ciclo di vita di un’ActivityIl ciclo di vita di un’Activity

25

Page 26: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 27: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 28: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 29: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 30: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 31: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il layoutIl layout

31

Posizione del

file .xml

Page 32: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il layoutIl layoutSelettore del

dispositivo e della

risoluzione dello

schermo

32

Page 33: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il layoutIl layoutSelettore

dell’orientazione

dello schermo

33

Page 34: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il layoutIl layoutPalette per la

scelta di layout

ed elementi

34

Page 35: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il layoutIl layout Struttura gerarchica

di layout ed elementi

35

Page 36: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il layoutIl layout

36

Schede per passare

dall’editor grafico

all’editor di testo xml

Page 37: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Il layoutIl layout

37

Editor di testo xml

Page 38: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 39: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World SMS!Hello, World SMS!

� La richiesta dei permessi:

39

Page 40: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

40

Page 41: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

41

Page 42: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

42

Page 43: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

43

Page 44: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

44

Page 45: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

45

Page 46: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 47: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 48: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 49: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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

Page 50: Università Politecnica delle Marche Dipartimento di Ingegneria …tlc.dii.univpm.it/blog/wp-content/uploads/2013/12/SeminarioAndroid.pdf · Università Politecnica delle Marche Dipartimento

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