Android base day1

Preview:

DESCRIPTION

corso base android

Citation preview

Corso Android base

Bolzano, 10/11 Febbraio 2014PhD Andrea Zanda

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?

Corso Android base Slide 3

Chi siete?

• Cosa sapete fare?- Programmazione? JAVA?

- Mobile Apps? ANDROID?

• Cosa vi aspettate dal corso?

• Cosa vorreste che trattassimo?

Corso Android base Slide 4

Summary

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

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

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à

Corso Android base Slide 7

Summary

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

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"

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)

Corso Android base Slide 10

Storia (3)

• Android Vs IOS

Corso Android base Slide 11

Storia (4)

• Android Vs IOS

Corso Android base Slide 12

Storia (5)

• Android Vs IOS

Corso Android base Slide 13

Storia (6)

• Android Vs IOS

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

Corso Android base Slide 15

Summary

• Tecnologia in azienda

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

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

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

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

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

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

Corso Android base Slide 21

Summary

• Tecnologia in azienda

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

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

Corso Android base Slide 23

Architettura(1)

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

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

Corso Android base Slide 25

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

Corso Android base Slide 26

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

buffering)• 2D + 3D

Corso Android base Slide 27

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

Corso Android base Slide 28

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

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

Corso Android base Slide 30

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

e portabile.

Corso Android base Slide 31

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

Corso Android base Slide 32

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

configurazione e transazionale.

Corso Android base Slide 33

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

ChromePersonalizzato per mobile

Corso Android base Slide 34

Architettura(13)• libc

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

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

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)

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

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...

Corso Android base Slide 39

Architettura(17)

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

processi diversi• Astrazione Surface Manager

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.

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.

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.

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

Corso Android base Slide 44

Architettura(22)

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

Application (LBA)

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

Corso Android base Slide 46

Architettura(24)

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

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

Corso Android base Slide 47

Summary

• Tecnologia in azienda

• Mobile Apps

• Android- Storia

- Cosa è?

- Architettura

- Monetizzare Apps

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

Corso Android base Slide

Monetizzare

• Lancio molto importante (classifiche)

• Affiancare strategie di marketing

49

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

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

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

Corso Android base Slide 56

Android.jar

• Activity

• Intent

• Broadcast Receivers

• Service

• Content Providers

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)

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);

Corso Android base Slide 60

Broadcast Receivers

• Android.content.broadcastreceiver

• Handler eventi esterni- Chiamata

- SMS

• Necessario registrare evento in manifest xml

Corso Android base Slide 61

Service

• Android.app.service

• Gestire app senza interfaccia

• GPS module - getLocation()

• Music Player- Play()

Corso Android base Slide 62

Content provider

• Android.content.contentProvider

• Gestione dati condivisi App- No SQLITE

- Dati rubrica

• Legame con intent- Specificare uri dato

Corso Android base Slide 63

Architettura App

• Fase creazione:

• Definizione GUI

• Base di dati

• Operazioni background

• notifiche

Corso Android base Slide 64

Architettura App(2)

• Come sviluppare? Gestire 3 parti:

- Codice Java

- Risorse

- Manifest xml

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

Corso Android base Slide

Risorse(2)

• Vari tipi di risorse- String

- Immagini

- Layout

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

70

Corso Android base Slide

Risorse(3)

71

Corso Android base Slide

Risorse(4)

72

Corso Android base Slide

Risorse(5)

73

Corso Android base Slide

Risorse(6)

Riferimento a risorsa R.

74

Corso Android base Slide

Risorse elementari

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

77

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

Corso Android base Slide

Risorse elementari(3)

• Dimension: permette di specificare dimensioni da richiamare come variabili

• Attributo <dimen>

• Unità di misura:

79

Corso Android base Slide

Stili e temi (2)

82

Corso Android base Slide

Risorse XML

• Si trovano nella cartella res/xml

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

• Accedere con:

85

Corso Android base Slide

Risorse XML(2)

86

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.

•••

Corso Android base Slide

String[] arrayString = new String[100];

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

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

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

Corso Android base Slide

Ciclo di vita Activity(2)

• Stati di una activity

92

Corso Android base Slide

Ciclo di vita Activity(3)

• Metodi callback (onCreate())

93

Corso Android base Slide

Ciclo di vita Activity(4)

• Se sistema Cancella activity?

94

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