Android: da dove viene, dove è e dove - ordineingegneri.bergamo.it · 16-24 ore di lezione...

44
Android: da dove viene, dove è e dove va… Ing. Vincenzo Manzoni, PhD vincenzomanzoni.com Commissione Informatica Ordine degli Ingegneri della Provincia di Bergamo

Transcript of Android: da dove viene, dove è e dove - ordineingegneri.bergamo.it · 16-24 ore di lezione...

Android: da dove viene, dove è e dove va…

Ing. Vincenzo Manzoni, PhD vincenzomanzoni.com

Commissione Informatica

Ordine degli Ingegneri della Provincia di Bergamo

Presentazione

• Laurea in Ingegneria Informatica (UniBg, 2007) – Fine tuning automatico di parametri di

sistemi di controllo (Same Deutz-Fahr)

• PhD in Information Technologies (PoliMi, 2011) – Vehicle-to-X interactions (Piaggio,

Teleparking, RSE, Massachusetts Institute of Technology)

• Ricercatore in TenarisDalmine (2011 ora) – Analisi , progetto e prototipazione di

sistemi di controllo di processo.

– Analisi dati, data mining.

11 maggio 2012 2 Seminario Android

Market Share: stato

Penetrazione di Smartphone tra gli iscritti al seminario Maggio 2012

11 maggio 2012 3 Seminario Android

I due grandi competitor

Android

• Sistema operativo per smartphone e tablet.

• Sviluppato dalla Open Handset Alliance (86 aziende), guidata da Google.

• Concesso in licenza a molti produttori (HTC, Samsung, Motorola).

• Approccio aperto.

• Market: Play Store

Apple iOS

• Sistema operativo per smartphone, lettori mp3 e tablet.

• Sviluppato da Apple.

• Utilizzato solo su dispositivi Apple (iPhone, iPod e iPad).

• Approccio chiuso.

• Market: Apple Store

11 maggio 2012 4 Seminario Android

Timeline

2007 2008 2009 2010 2011 2012 2013

iPhone OS 1.0 (iPhone)

iPhone OS 2.0 (iPhone 3G)

iPhone OS 3.0 (iPhone 3GS )

iOS 4.0 (iPhone 4)

iOS 5.0 (iPhone 4S)

Android 1.x Android 2.x

Android 3.x (tablet)

Android 4.x

11 maggio 2012 5 Seminario Android

Frammentazione interna

Aggiornato al 1 maggio 2012. Source: http://developer.android.com/resources/dashboard/platform-versions.html

2007 2008 2009 2010 2011 2012 2013

Android 1.x Android 2.x Android 3.x (tablet) Android 4.x

11 maggio 2012 6 Seminario Android

Android La storia

• Android Inc. viene fondata nel 2003. Google la acquista nel 2005.

• Serie 1.x: 2008-2009 – (Quasi) tutte le funzioni, ma implementate in modo povero.

– Maturazione con le versioni 1.5-1.6.

– Dalla 1.5 si iniziano a chiamare le versioni con nomi di dolci.

• Serie 2.x (Eclair): 2009 – UI rinnovata, riservata a smartphone con hardware potente.

– 2.2.x (Froyo): Adobe Flash, Javascript V8 nel browser, WIFi tethering

– 2.3.x (Gingerbread): nuovo redesign grafico, VoIP, NFC, supporto per nuovi sensori

• 3.x (Honeycomb): 2011 – Solo per tablet (e.g. Motorola Xoom)

• 4.0 (Ice Cream Sandwich): 2011 – Nuovo design UI

– Condivisione informazioni via NFC

11 maggio 2012 7 Seminario Android

Android

Architettura del sistema operativo: 3 layer.

1. Kernel: Linux

2. Middleware (librerie e API): C

3. Applicazioni: Java, interpretate dalla Dalvik virtual machine

11 maggio 2012 8 Seminario Android

Dalvik virtual machine

11 maggio 2012 9 Seminario Android

Android Features

• Java e C/C++ (Native Development Kit)

• Multitasking

• Connettività

– GSM/GPRS/EDGE/UMTS, WiFi, Bluetooth, NFC

• Sensing

– GPS, accelerometri, magnetometri, sensori di luminosità, telecamera frontale e posteriore, microfono.

• Multitouch

• Storage

– File o SQLite

• Supporto per diverse risoluzioni di display

• Market

11 maggio 2012 10 Seminario Android

Android vs. iPhone (1/2)

Caratteristica Android iPhone

Ambiente di sviluppo Eclipse + Android SDK su Linux, Mac e Windows.

iPhone SDK su Mac (Mac Intel con Snow Leopard)

Account per lo sviluppo Non necessario Necessario (privato: 79 €, aziende: 299 €)

Curva di apprendimento Adeguata Ripida

Linguaggio Java (semplice) C, ObjectiveC, stack Cocoa

Librerie (Quasi) tutte quelle di Java Specifiche per ObjectiveC

Gestione della memoria Garbage collector Automatico da iOS 5.0. Manuale per le versioni precedenti.

Debug Integrato, flessibile Macchinoso

Bluetooth Libero Certificazione Apple

11 maggio 2012 11 Seminario Android

Android vs. iPhone (2/2)

Caratteristica Android iPhone

NFC Supporto su telefoni di fascia alta (Google Nexus S, Google Galaxy S, …)

No

Multitasking Sì Parziale

Adobe Flash Sì No

Accelerometri, magnetometri Sì Sì

Storage Sì, interno e esterno Sì, solo interno

Batteria rimovibile Sì No

Dispositivi Molti, con differenti caratteristiche tecniche.

iPhone 3GS, iPhone 4, iPhone 4S

Prezzo > 200 euro > 400 euro (3GS)

11 maggio 2012 12 Seminario Android

I tre sensi di Android

1. Udito, o il comunicare

2. Tatto, o il sentire

3. Vista, o interpretare

… per l’olfatto e il gusto, ci si sta lavorando

11 maggio 2012 13 Seminario Android

Udito, o Comunicare

Tradizionale Internet 1.0

11 maggio 2012 14 Seminario Android

Udito, o Comunicare

I Social Network

11 maggio 2012 15 Seminario Android

Udito, o Comunicare

Near Field Communication (NFC)

• RFID-like

• Scambio di dati tra smartphone e tag (o smartphone e smartphone) a pochi cm.

– Piccole transazioni finanziarie (biglietti trasporti)

– Setup più complessi (reti WiFi)

– Identificazione di oggetti

• Dispositivi Android (pochi!) – http://www.nfcworld.com/nfc-

phones-list/

11 maggio 2012 16 Seminario Android

Tatto, o sentire

• Localizzazione – Network-based

– GPS (Global Positioning System)

– A-GPS (Assisted GPS)

• Sensori

11 maggio 2012 17 Seminario Android

Localizzazione Consumo di batteria vs. qualità

Network based Localization GPS based Localization

11 maggio 2012 Seminario Android 18

Sensori

I dispositivi Android possono essere equipaggiati con diversi tipi di sensori:

Fisici • Accelerometro

• Giroscopio

• Sensori di illuminazione

• Prossimità

Virtuali • Orientamento

• Accelerazione lineare

• Gravità

11 maggio 2012 19 Seminario Android

Vista, o interpretare

• Uso di codici visuali per interagire con oggetti del mondo reale.

• Uso di localizzazione e orientamento (accelerometri + magnetometro) per la realtà aumentata.

11 maggio 2012 20 Seminario Android

Tag visuali

Codici a barre tradizionali (uno dei tanti standard)

Codici QR Microsoft Tag

ECC 200 Data Matrix Codice Aztec

11 maggio 2012 21 Seminario Android

Codici QR

• Quick Response code

• Bidimensionale (o barcode a matrice)

• Progettato per essere decodificato velocemente

• Può contenere ogni tipo di dato – binario, ASCII

– Testo semplice, indirizzi URL, contatti

• Standard ISO (brevetto Denso, non esercitato).

• Standard per codificare le informazioni: – de facto

– NTTDoCoMo

11 maggio 2012 22 Seminario Android

Codici QR codifica delle informazioni

Contenuto Formato de facto NTT DoCoMo

URL http://www.smigroup.it (meno frequentemente, URLTO:smigroup.it)

MEBKM

Mail mailto:[email protected] (tuttavia, dovrebbe bastare [email protected])

MATMSG

Numero di telefono tel:+393493728584

Contatto vCard (verboso!) MECARD

SMS, MMS sms:+393493728584 SMSTO:+393493728584

Informazione geografica

geo:45.8300,9.6667,340 (latitudine, longitudine, altitudine)

Riferimento: NTT DoCoMo http://www.nttdocomo.co.jp/english/service/imode/make/content/barcode/function/application/

23 Seminario Android 11 maggio 2012

Codici QR Versioni

Versione Righe/Colonne Livello corr. errori

Caratteri alfanumerici

1 21 L 25

M 20

Q 16

H 10

2 25 L 47

M 38

Q 29

H 20

4 33 L 114

M 90

Q 67

H 50

Codice livello

Errori corretti

L 7%

M 15%

Q 25%

H 30%

Versione ragionevolmente decodificabile dai telefoni

cellulari.

La versione viene (solitamente) scelta dal

generatore, in funzione dei caratteri da codificare.

24 Seminario Android 11 maggio 2012

Android Sistema di controllo per dispositivi industriali

11 maggio 2012 Seminario Android 25

Comunicazione a corto raggio

(Bluetooth, NFC, WiFi)

Comunicazione a medio-lungo raggio (WiFi, GPRS/UMTS)

Uso dei Android come controllo di dispositivi industriali

• Codice IP

– Standard IEC 60529

– Classifica protezione di case meccanici contro oggetti solidi (polvere) e acqua.

Solidi IPAB

Liquidi

Livello Solidi Liquidi

0 Nessuna protezione Nessuna protezione

1 > 50 mm Caduta di gocce d’acqua

2 > 12.5 mm Caduta di gocce d’acqua (max 15°)

3 > 2.5 mm Pioggia

4 > 1 mm Spruzzi

5 Polvere, parzialmente Getti

6 Polvere, completamente Ondate

7 - Immersione

8 - Sommersione

11 maggio 2012 26 Seminario Android

Case e Smartphone Android IP67

Smartphone protetti IP by-design

Motorola Defy: IP67!

Protezioni IP

Protezioni non IP

11 maggio 2012 27 Seminario Android

Android: dove va Smartphone vs. Feature Phone

11 maggio 2012 28 Seminario Android

Android: dove va Smartphone Android vs. competitor

11 maggio 2012 29 Seminario Android

Sviluppo di app Android Requisiti software e hardware

• Computer con Windows / Mac / Linux – Sviluppo per iPhone richiede un Mac.

• (Almeno) Un dispositivo Android – Preferibilmente, definire un target uno per ogni fascia.

• Emulatore?

11 maggio 2012 30 Seminario Android

Modalità di sviluppo

• Attualmente esistono tre modalità di sviluppo di applicazioni per Android: – ambiente di sviluppo grafico

– ambienti write once, compile anywhere

– ambiente di sviluppo nativo

complessità

fles

sib

ilità

nativo

write once, run anywhere

grafico

11 maggio 2012 31 Seminario Android

Sviluppo grafico MIT App Inventor

• Sviluppata inizialmente da Google, è stata ora ceduta al Center for Mobile Learning del MIT (http://beta.appinventor.mit.edu).

• Non permette l’accesso a tutte le funzionalità del sistema.

Co

mp

on

enti

Preview dell’applicazione

Progetto dell’interfaccia Progetto della logica

11 maggio 2012 32 Seminario Android

Sviluppo write once run anywhere PhoneGap, Appcelerator

• Sviluppo ad alto livello: HTML5, CSS3 e Javascript.

• Compilazione di codice nativo.

• Diverse piattaforme supportate, tra cui Android, iOS, RIM, Windows Phone.

Workflow di sviluppo di PhoneGap

PhoneGap: www.phonegap.com Appcelerator: www.appcelerator.com 11 maggio 2012 33 Seminario Android

Ambiente di sviluppo nativo Eclipse + Android SDK

11 maggio 2012 34 Seminario Android

Il market

11 maggio 2012 35 Seminario Android

Il market

11 maggio 2012 36 Seminario Android

0

100000

200000

300000

400000

500000

600000

nov-07 giu-08 dic-08 lug-09 gen-10 ago-10 feb-11 set-11 apr-12 ott-12

# a

pp

Android iOS

Esempi

1. CO2Go – Solo telefono cellulare.

– Sampling e analisi dei segnali in tempo reale.

2. Copenhagen Wheel 1. Interazione con dispositivo embedded

Bluetooth.

2. GPS, mappe.

3. SMy Reader 1. Applicazione industriale.

2. Interazione con QR code.

11 maggio 2012 37 Seminario Android

Applicazioni Android sviluppate CO2GO

• Logging di GPS e accelerometri.

• Analisi di segnali in tempo reale

– filtraggio;

– FFT.

• Data mining.

• Interazioni con API Google Maps.

Riferimento: http://senseable.mit.edu/co2go/

11 maggio 2012 38 Seminario Android

Applicazioni Android sviluppate Copenhagen Wheel

Applicazione smartphone per Copenhagen Wheel

MIT, 2010

• Joint project tra MIT, Ducati Energia e Ministero dell’Ambiente italiano.

• Ruota elettrica che converte biciclette tradizionali in biciclette elettriche.

• Applicazione smartphone per il controllo remoto.

Riferimento: http://senseable.mit.edu/copenhagenwheel

11 maggio 2012 39 Seminario Android

Applicazioni Android sviluppate Copenhagen Wheel

• Collegamento Bluetooth verso hardware embedded.

• Localizzazione.

• Google Maps.

• Interazione REST con server web.

• Complessi layout grafici.

Localizzazione e Google Maps

Dat

i da

serv

er R

EST

Collegamenti Bluetooth

Layout grafico

11 maggio 2012 40 Seminario Android

Applicazioni Android sviluppate SMy Reader

• Decodifica di codici QR.

• Chiamate REST ad API.

• Aggiornamento automatico a nuove versioni.

11 maggio 2012 Seminario Android 41

Riferimenti web e libri per iniziare

• Dev Guide, da Android Developers: http://developer.android.com/guide/index.html

• Reference, da Android Developers: http://developer.android.com/reference/packages.html

• Libri:

11 maggio 2012 42 Seminario Android

Corso avanzato Sviluppo di applicazioni per smartphone Android

16-24 ore di lezione frontale + esercizi.

1. Approfondimento dettagliato delle tecnologie mostrate in questo seminario.

2. Fondamenti di progetto e di programmazione di applicazioni per Android. – Gestione del ciclo di vita di una applicazione.

– Applicazioni multi-thread.

– Interfacce grafiche.

– Storage su file e database relazionale.

– Internazionalizzazione.

– Localizzazione network-based e GPS based.

– Acquisizione ed elaborazione di segnali dai sensori (accelerometri, magnetometro, …).

– Interpretazione di codici visuali 1D, 2D, QR.

– Bluetooth.

– Pubblicare una applicazione sul market.

11 maggio 2012 43 Seminario Android

Ringraziamenti

• Tutti voi che siete qui!

• La Commissione Informatica, in particolare: – Ing. Luca Armanni, presidente

– Ing. Umberto Noris

– Ing. Enzo Previtali

– Ing. Alberto Taiocchi

Ing. Vincenzo Manzoni, PhD web: vincenzomanzoni.com e-mail: [email protected]

11 maggio 2012 44 Seminario Android