android base day1

80
Corso Android base Bolzano, 10/11 Febbraio 2014 PhD Andrea Zanda

Upload: andrea-zaza

Post on 05-Jul-2015

214 views

Category:

Technology


0 download

DESCRIPTION

corso base android

TRANSCRIPT

Page 1: Android base day1

Corso Android base

Bolzano, 10/11 Febbraio 2014PhD Andrea Zanda

Page 2: Android base day1

Corso Android base Slide

• 2007 Laurea Informatica in Pisa

• 2007-2012 Reaserch- Fraunhofer Institut (Bonn - DE)

- UPM (Madrid - ES)

- Machine learning (~10 pubblicazioni)

• 2012 - Oggi- www.eventa.cc (founder)

- www.guidemeright.com (co-founder)

2

Chi sono?

Page 3: Android base day1

Corso Android base Slide 3

Chi siete?

• Cosa sapete fare?- Programmazione? JAVA?

- Mobile Apps? ANDROID?

• Cosa vi aspettate dal corso?

• Cosa vorreste che trattassimo?

Page 4: Android base day1

Corso Android base Slide 4

Summary

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

Page 5: Android base day1

Corso Android base Slide 5

Summary (2)• Android(2)

- Installazione Android Studio + SDK

- Hello world

- Concetti Java

- Componenti architettura

‣ Teoria + pratica

• Progetto- Analisi requisiti funzionalità

- Analisi requisiti UI

Page 6: Android base day1

Corso Android base Slide

Mobile Apps

Come sviluppare?

6

Native

Web App -> Web View

Cross Platform(Phonegap - Titanium)

Hybrid

• Tempo• Costo• Conoscenza ambiente• Funzionalità• Qualità

Page 7: Android base day1

Corso Android base Slide 7

Summary

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

Page 8: Android base day1

Corso Android base Slide 8

Storia

• Giugno 2005. Google compra Android inc. Compagnia che si dedica allo sviluppo di mobile apps.

• 5 Nov. 2007. grazie alla Open Handset Alliance (OHA), Android diventa open-source.

• 17 Nov. 2007. Applicazioni sviluppate in Java (JVM) con Android Development Kit.

• 2003, Andy Rubin interview.

"Rubin said there was tremendous potential in developing smarter mobile devices that are more aware of its owner's location and preferences.

'If people are smart, that information starts getting aggregated into consumer products,' said Rubin"

Page 9: Android base day1

Corso Android base Slide 9

Storia(2)

2013 -Downloaded 48B Apps

• 23 Set. 2008. esce l’ HTC Dream• Integrazione di Android Market (Google play)• Q4 2010. vince Best-selling platform per smartphone.• Oggi. 900M smartphone con Android. (11K modelli)

Page 10: Android base day1

Corso Android base Slide 10

Storia (3)

• Android Vs IOS

Page 11: Android base day1

Corso Android base Slide 11

Storia (4)

• Android Vs IOS

Page 12: Android base day1

Corso Android base Slide 12

Storia (5)

• Android Vs IOS

Page 13: Android base day1

Corso Android base Slide 13

Storia (6)

• Android Vs IOS

Page 14: Android base day1

Corso Android base Slide 14

Storia (7)

• Android Vs IOS

• Mobile Future

https://class.coursera.org/startup-001/lecture/201

https://class.coursera.org/startup-001/lecture/253

Page 15: Android base day1

Corso Android base Slide 15

Summary

• Tecnologia in azienda

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

Page 16: Android base day1

Corso Android base Slide 16

Cosa è Android?

•Obiettivo: astrarre l’ HW per facilitare lo sviluppo di applicazioni.•Insieme di software che include: i) SO ii)

middleware iii) Applicazioni.•Open:• il kernel di Linux nella versione 3.x. • API sviluppo Android = sviluppo App• Open Source Apache License 2.0

Page 17: Android base day1

Corso Android base Slide 17

Cosa è Android?(2)

•Obiettivo: astrarre l’ HW per facilitare lo sviluppo di applicazioni.•Insieme di software che include: i) SO ii)

middleware iii) Applicazioni.•Open:• il kernel di Linux nella versione 3.x. • API sviluppo Android = sviluppo App• Open Source Apache License 2.0

Page 18: Android base day1

Corso Android base Slide

Cosa è Android?(3)

18

•Linguaggio:• JAVA• Scripting Layer for Android ( https://code.google.com/p/android-scripting/)• Android NDK - C/C++ (http://developer.android.com/tools/sdk/ndk/index.htm l)

•Dalvik virtual machine• JVM royalties• Ottimizzazione per mobile

Page 19: Android base day1

Corso Android base Slide 19

Cosa è Android?(4)

• File .dex (50% meno spazio rispetto a war)

• No tuning (Garbage Collector)

• Istruzioni a registo (No stack) - 30% + runtime performance

Dalvik Virtual Machine

Page 20: Android base day1

Corso Android base Slide 20

Cosa è Android?(5)

Caratteristiche:•Navigatore integrato•SQLite per integrazione DB•Supporto Multimediale•Supporto telefonia•Conessione: Bluetooth, EDGE, 3G, WI-FI•Sensori: accelerometro, bussola, fotocamera, etc.•Ambiente di sviluppo: emulatore, debugger, profiling

Page 21: Android base day1

Corso Android base Slide 21

Summary

• Tecnologia in azienda

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

Page 22: Android base day1

Corso Android base Slide 22

Architettura• Android 1.5: Cupcake

• Android 1.6: Donut

• Android 2.0 e Android 2.1: Éclair

• Android 2.2: Froyo

• Android 2.3: Gingerbread

• Android 3.0: Honeycomb

• Android 4.0: Ice Cream Sandwich

• Android 4.1: Jelly Bean

• Android 4.4: KitKat

• Android 5.0: Key Lime pie

Page 23: Android base day1

Corso Android base Slide 23

Architettura(1)

http://www.youtube.com/watch?v=Mm6Ju0xhUW8

Page 24: Android base day1

Corso Android base Slide 24

Architettura (2)• Linux Kernel• interfacciare HW e librerie• sicurezza, gestione memoria, gestione processi, drivers• IPC - comunicare vari componenti (1 app = 1 processo)

“SO che fornisse tutte le feature di sicurezza,gestione della memoria, gestione dei processi, power management e che fosse affidabile e testato.”

Page 25: Android base day1

Corso Android base Slide 25

Architettura(3)• Librerie:• forniscono funzionalità CORE di Android• Riferimento a progetti Open Source• scritte in C/C++

Page 26: Android base day1

Corso Android base Slide 26

Architettura(4)• Surface Manager:• Gestire view• Coordinare varie finestre• Disegnare su buffer e visualizzare ( tecnica double

buffering)• 2D + 3D

Page 27: Android base day1

Corso Android base Slide 27

Architettura(5)• OpenGL | ES• permette accedere a acceleratore grafico• versione mobile di OpenGL 1.3• bassa memoria 1-64Mb

Page 28: Android base day1

Corso Android base Slide 28

Architettura(6)• SGL• Versione mobile render grafica 2D• Usata da Surface Manager e Window Manager

Page 29: Android base day1

Corso Android base Slide 29

Architettura(7)• Media Framework• Gestire CODEC per acquisizione e riproduzione audio e

video basato sulla libreria open source OpenCore di PacketVideo

• MPEG4, H.264, MP3, AAC, AMR,JPG e PNG

Page 30: Android base day1

Corso Android base Slide 30

Architettura(8)• FreeType• Gestione dei Font• (http://freetype.sourceforge.net)piccole dimensioni, molto efficiente, altamente customizzabile

e portabile.

Page 31: Android base day1

Corso Android base Slide 31

Architettura(10)• SSLGestione Secure Socket Layer / Connessioni sicure

Page 32: Android base day1

Corso Android base Slide 32

Architettura(11)• SQLite• Gestione persistenzaDBMS relazionale, compatto (C), in-process, senza

configurazione e transazionale.

Page 33: Android base day1

Corso Android base Slide 33

Architettura(12)• WebKit• Browser integrato (http://webkit.org)Utilizzato da Safari e

ChromePersonalizzato per mobile

Page 34: Android base day1

Corso Android base Slide 34

Architettura(13)• libc

• libreria standard C libc ottimizzata per i dispositivi basati su Linux

Page 35: Android base day1

Corso Android base Slide 35

Architettura(14)

• Android Runtime- funzionalità delle librerie base di JAVA (Core Libraries)

- ogni applicazione ha il suo processo con instanziazione della DVM

Page 36: Android base day1

Corso Android base Slide 36

Architettura(15)• Application Framework• fornisce l’accesso alle librerie attraverso API• Scritto in JAVA• Views (liste, text box, bottoni), Content providers (Apps data),

Resource Manager (immagini, localized strings), Notification Manager (barra di stato), Activity Manager (navigazione app)

Page 37: Android base day1

Corso Android base Slide 37

Architettura(16)

• Activity Manager• non solo visualizzazione schermata, ma lo strumento

attraverso il quale l’utente interagisce con l’applicazionel’organizzazione in uno stack a seconda dell’ordine

Page 38: Android base day1

Corso Android base Slide 38

Architettura(16)

• Package Manager• gestire il ciclo di vita delle applicazioni nel dispositivo• XML di configurazione (AndroidManifest).• informazioni sul layout o su aspetti di sicurezza...

Page 39: Android base day1

Corso Android base Slide 39

Architettura(17)

• Window Manager• gestire le finestre delle diverse applicazioni gestite da

processi diversi• Astrazione Surface Manager

Page 40: Android base day1

Corso Android base Slide 40

Architettura(18)

• Telephony Manager• gestire funzionalità di un telefono come• es. iniziare una chiamata, o di verificare lo stato della

chiamata stessa.

Page 41: Android base day1

Corso Android base Slide 41

Architettura(19)

• Content Providers• gestire la condivisione di informazioni tra i vari

processi.repository condiviso con cui le diverse applicazioni possono interagire inserendo o leggendo informazioni.

Page 42: Android base day1

Corso Android base Slide 42

Architettura(20)

• Resource manager• gestire immagini, file di configurazione o di properties per

la internazionalizzazione• trasformazione file in contenuti binari ottimizzati per un

dispositivo.

Page 43: Android base day1

Corso Android base Slide 43

Architettura(21)

• View System• grafica di un’applicazione per Android è composta da quelle che

saranno specializzazioni della classe View• renderizzazione dei componenti nonché gestione degli eventi associati

Page 44: Android base day1

Corso Android base Slide 44

Architettura(22)

• Location Manager• gestione delle mappe• consente la realizzazione di Location Based

Application (LBA)

Page 45: Android base day1

Corso Android base Slide 45

Architettura(23)

• Notification Manager• gestione insieme di strumenti che l’applicazione può

utilizzare per inviare una notifica al dispositivo• es. vibrazione, lampeggiare i LED, visualizzare un’icona

Page 46: Android base day1

Corso Android base Slide 46

Architettura(24)

• Applications• applicazione base di Android: email, contacts,

browser, maps, calendar• Scritte in java• Nostre App!

Page 47: Android base day1

Corso Android base Slide 47

Summary

• Tecnologia in azienda

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

Page 48: Android base day1

Corso Android base Slide

• Android market primo store di app gratuite

• Apple Store primo per app a pagamento

• Design e UI molto importanti (semplicità e velocità)

• Nome e icona

• Attenzione alla versione di Android (2.2 e 2.3.3 -2014 -> 80%)

Monetizzare

48

Page 49: Android base day1

Corso Android base Slide

Monetizzare

• Lancio molto importante (classifiche)

• Affiancare strategie di marketing

49

Page 50: Android base day1

Corso Android base Slide

Monetizzare

• Monetizzazione:- App a pagamento

- affiancare versione light

- Banner pubblicitari: AdMob

- Nel caso possa essere scalabile, il numero di utenti registrati può essere monetizzato.

• Caso Instagram: 30M+ in 2 anni, 1 miliardo di dollari

50

Page 51: Android base day1

Corso Android base Slide

Monetizzare

• Monetizzazione:- App a pagamento

- affiancare versione light

- Banner pubblicitari: AdMob

- Nel caso possa essere scalabile, il numero di

- utenti registrati può essere monetizzato.

51

Page 52: Android base day1

Corso Android base Slide

Monetizzare

52

Caso Instagram: 30M+ in 2 anni, 1 miliardo di dollari

Ulteriori info sulla commercializzazione di App

• http://www.youtube.com/watch?v=2SzulLAy0P0

Page 53: Android base day1

Corso Android base Slide 56

Android.jar

• Activity

• Intent

• Broadcast Receivers

• Service

• Content Providers

Page 54: Android base day1

Corso Android base Slide 57

Activity• Android.app.activity

• Schermata (concettualmente)

• Stack con cima attiva- Altre in pausa

- Meglio eliminarle?

- Android GC

• Sviluppatore -> gestire stati (OnCreate)

Page 55: Android base day1

Corso Android base Slide 58

Intent• Gestire comunicazione tra componenti

- Riutilizzo codice (activity per esempio o componenti)

• Android.content.intent

String uri = "content://contacts/123";

Intent intent = new Intent(Intent.ACTION_GET_CONTENT,uri);

Page 56: Android base day1

Corso Android base Slide 60

Broadcast Receivers

• Android.content.broadcastreceiver

• Handler eventi esterni- Chiamata

- SMS

• Necessario registrare evento in manifest xml

Page 57: Android base day1

Corso Android base Slide 61

Service

• Android.app.service

• Gestire app senza interfaccia

• GPS module - getLocation()

• Music Player- Play()

Page 58: Android base day1

Corso Android base Slide 62

Content provider

• Android.content.contentProvider

• Gestione dati condivisi App- No SQLITE

- Dati rubrica

• Legame con intent- Specificare uri dato

Page 59: Android base day1

Corso Android base Slide 63

Architettura App

• Fase creazione:

• Definizione GUI

• Base di dati

• Operazioni background

• notifiche

Page 60: Android base day1

Corso Android base Slide 64

Architettura App(2)

• Come sviluppare? Gestire 3 parti:

- Codice Java

- Risorse

- Manifest xml

Page 61: Android base day1

Corso Android base Slide 69

Risorse

• Gestione risorse da usare in App

• Si usa programmazione dichiarativa- Definizione variabile in XML da usare nel codice JAVA

• Oggetti in cartella Res- Mappati in classe R

Page 62: Android base day1

Corso Android base Slide

Risorse(2)

• Vari tipi di risorse- String

- Immagini

- Layout

• Cartella definisce tipo- Res/layout -> layout resource

70

Page 63: Android base day1

Corso Android base Slide

Risorse(3)

71

Page 64: Android base day1

Corso Android base Slide

Risorse(4)

72

Page 65: Android base day1

Corso Android base Slide

Risorse(5)

73

Page 66: Android base day1

Corso Android base Slide

Risorse(6)

Riferimento a risorsa R.

74

Page 67: Android base day1

Corso Android base Slide

Risorse elementari

• Per recuperare nel codice risorse si usa:- getResources().get[Primitive]()

77

Page 68: Android base day1

Corso Android base Slide

Risorse elementari(2)

• Definibili via tool di Android Studio- New AndroidResource

- Esempio

• Tipi:- String, String Array , Int Array, Color, Dimension

78

Page 69: Android base day1

Corso Android base Slide

Risorse elementari(3)

• Dimension: permette di specificare dimensioni da richiamare come variabili

• Attributo <dimen>

• Unità di misura:

79

Page 70: Android base day1

Corso Android base Slide

Stili e temi (2)

82

Page 71: Android base day1

Corso Android base Slide

Risorse XML

• Si trovano nella cartella res/xml

• Di tipo pull -> SAX (Simple Api for XML)

• Accedere con:

85

Page 72: Android base day1

Corso Android base Slide

Risorse XML(2)

86

Page 73: Android base day1

Corso Android base Slide

Esercizio Risorse

• Creare interfaccia login con campi username, password e bottone submit.

• Il testo della interfaccia deve cambiare in base alla lingua utente

• Lo sfondo deve essere una immagine

• La dimensione delle view deve variare in base alla dimensione del display

• L'app ha una lista di username e password contenute in 2 array

• Al click sul “submit” si effettua un controllo sui dati inseriti.

•••

Page 74: Android base day1

Corso Android base Slide

String[] arrayString = new String[100];

for(int i = 0; i < arrayString.length; i++)

Page 75: Android base day1

Corso Android base Slide

Activity

• Gestiscono interazione utente con App (schermata)

• Contenere elementi visuali o interazioni

• Contengono View

• Creare una Activity significa creare figlio della classe Activity e riscrivere i metodi

90

Page 76: Android base day1

Corso Android base Slide

Ciclo di vita Activity

• Activity gestite con uno stack (FIFO)

- Cima attiva

- Altre sono in memoria? Forse!

- Esempio App che aggiunge contatto

91

Page 77: Android base day1

Corso Android base Slide

Ciclo di vita Activity(2)

• Stati di una activity

92

Page 78: Android base day1

Corso Android base Slide

Ciclo di vita Activity(3)

• Metodi callback (onCreate())

93

Page 79: Android base day1

Corso Android base Slide

Ciclo di vita Activity(4)

• Se sistema Cancella activity?

94

Page 80: Android base day1

Corso Android base Slide

Ciclo di vita Activity(5)

• Esercizio: creazione di una app e implementazione dei vari stati (onCreate(), onStop...) con una stampa nel file di Log.

95