android base day1
DESCRIPTION
corso base androidTRANSCRIPT
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