seminar i o android

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

Upload: memolia

Post on 10-Dec-2015

242 views

Category:

Documents


1 download

DESCRIPTION

Android

TRANSCRIPT

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

ArchitetturaArchitettura

5

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

15

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!”

20

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’Activity

25

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

Il layoutIl layout

31

Posizione del

file .xml

Il layoutIl layoutSelettore del

dispositivo e della

risoluzione dello

schermo

32

Il layoutIl layoutSelettore

dell’orientazione

dello schermo

33

Il layoutIl layoutPalette per la

scelta di layout

ed elementi

34

Il layoutIl layout Struttura gerarchica

di layout ed elementi

35

Il layoutIl layout

36

Schede per passare

dall’editor grafico

all’editor di testo xml

Il layoutIl layout

37

Editor di testo xml

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 richiesta dei permessi:

39

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

40

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

41

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

42

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

43

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

44

Hello, World SMS!Hello, World SMS!

� La realizzazione del layout:

45

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