67
1. Cos'è Android? Android Code Camp for Beginners 28-11-2013 #codeEU #acc4b @InfoAppl @NeutralAccess http://informatica.uniurb.it/ http://www.neunet.it/ Gioele Luchetti Saverio Delpriori Lorenz Klopfenstein

Android Code Camp for Beginners - Ecosistema Android (IT)

Embed Size (px)

DESCRIPTION

Slides introduttive presentate nell'ambito dell'Android Code Camp for Beginners organizzato dall'Universita' di Urbino e da NeuNet il 28/11/2013 http://informatica.uniurb.it/android-code-camp-beginners/

Citation preview

Page 1: Android Code Camp for Beginners - Ecosistema Android (IT)

1.

Cos'è Android?

Android Code Camp for Beginners28-11-2013#codeEU #acc4b@InfoAppl @NeutralAccesshttp://informatica.uniurb.it/http://www.neunet.it/

Gioele LuchettiSaverio Delpriori

Lorenz Klopfenstein

Page 2: Android Code Camp for Beginners - Ecosistema Android (IT)

1.1

Breve storia

Page 3: Android Code Camp for Beginners - Ecosistema Android (IT)

● Sistema operativo open-source inizialmente pensato per dispositivi mobili e poi evolutosi.

● Attualmente leader del mercato...e lo sarà per molto tempo, secondo le stime.

Cos'è Android?

Page 4: Android Code Camp for Beginners - Ecosistema Android (IT)

● Android Inc. fondata nel 2003 da Andy Rubin con l'obiettivo di creare:“smarter mobile devices that are more aware of its owner's

location and preferences”● Inizialmente sviluppato in segreto e già con

problemi di budget nel primo anno di vita● Passa poco tempo e Google acquisisce la

società (17 agosto 2005)

○ Rubin comincia a lavorare con kernel Linux

Storia

Page 5: Android Code Camp for Beginners - Ecosistema Android (IT)

● L'OHA (Open Handset Alliance) si svela al mondo il 5 novembre 2007 ○ vi facevano parte diversi operatori di telefonia, di

dispositivi e di SoC○ ufficialmente il consorzio sviluppa standard aperti

da utilizzare nel mondo mobile● Quello stesso giorno viene annunciato il

progetto Android ○ Framework per dispositivi mobili○ Linux kernel 2.6

Storia (2)

Page 6: Android Code Camp for Beginners - Ecosistema Android (IT)

● L'anno successivo viene presentato il primo prodotto, l'HTC Dream (22 ottobre 2008)

○ Android 1.0 “Apple Pie”○ Android Market○ Notifiche○ Google Apps○ Media Player○ Camera○ WiFi○ Bluetooth

Storia (3)

Page 7: Android Code Camp for Beginners - Ecosistema Android (IT)

● Da lì in poi è sviluppo prorompente

● Prime versioni con una vera diffusione sul mercato ○ 1.5 “Cupcake” (13 aprile 2009)

○ 1.6 “Donut” (16 settembre 2009)

● Ogni 6 mesi circa una nuova versione○ Attualmente 4.4 “KitKat”

Storia (4)

Page 8: Android Code Camp for Beginners - Ecosistema Android (IT)

Storia (5)

Page 9: Android Code Camp for Beginners - Ecosistema Android (IT)

● Dal 2010 Google ha lanciato una sua serie di dispositivi Nexus sviluppati da partner e con una esperienza d'uso Android "pura"

○ HTC One○ Samsung Nexus S○ Samsung Galaxy Nexus○ Asus Nexus 7 (2012/3)

○ LG Nexus 4/5○ Samsung Nexus 10

Storia (6)

Page 10: Android Code Camp for Beginners - Ecosistema Android (IT)

1.2

Caratteristiche

Page 11: Android Code Camp for Beginners - Ecosistema Android (IT)

Progetto open-source

Ottobre 2010, Steve Jobs:

„Google likes to characterize Android as open and iOS as closed. We think this is disingenuous. […] The real difference is integrated versus fragmented.”

Page 12: Android Code Camp for Beginners - Ecosistema Android (IT)

Progetto open-source

Page 13: Android Code Camp for Beginners - Ecosistema Android (IT)

Progetto open-source

● Il codice di Android (OS) è disponibile sotto licenze free e open-source.

● Le applicazioni di base (parte di AOSP) sono open-source.○ L'ecosistema Google: no.

(Google Play, Gmail, Calendar, etc.)

● Le applicazioni AOSP non ottengono aggiornamenti da Google.

Page 14: Android Code Camp for Beginners - Ecosistema Android (IT)

Ecosistemi “chiusi”

Lo sviluppo di applicazioni AOSP è effettivamente fermo a “Froyo”.

Tentativo di controllo:● Store e applicazioni proprietarie

Amazon, Google Play, integrazione con Google Music, Hangouts, etc.

● Launcher personalizzatiSamsung TouchWiz

● Feature aggiuntiveSamsung Note “multi-window”, Google Now, eye tracking...

Page 15: Android Code Camp for Beginners - Ecosistema Android (IT)

Qualsiasi sia la strategia, sembra avere successo.

Diffusione

Page 16: Android Code Camp for Beginners - Ecosistema Android (IT)

Frammentazione

Page 17: Android Code Camp for Beginners - Ecosistema Android (IT)

Frammentazione (in pratica)

Page 18: Android Code Camp for Beginners - Ecosistema Android (IT)

2.

Cosa può fare Android?

Page 19: Android Code Camp for Beginners - Ecosistema Android (IT)

2.1

Cos'è un API di sistema?

Page 20: Android Code Camp for Beginners - Ecosistema Android (IT)

Architettura di Android

Page 21: Android Code Camp for Beginners - Ecosistema Android (IT)

API in termini semplici

Application Programming Interface

Definisce l'interfaccia (come interagiscono) tra due componenti software.

Ad esempio: sistema operativo ed applicazione.

I comandi previsti da una API possono essere sfruttati per qualcosa di “utile”.

Page 22: Android Code Camp for Beginners - Ecosistema Android (IT)

API di un sistema operativo mobile

Bidirezionali: comandi ed eventi.

PER ESEMPIO

Ciclo di vita: lancio, sospensione, terminazione, etc…Interazione utente: tap, slide, drag, etc…Hardware: WiFi, Bluetooth, etc…Grafica, accesso file-system...

Page 23: Android Code Camp for Beginners - Ecosistema Android (IT)

Scrittura di applicazioni

Applicazioni a livello utente scritte in linguaggio Java, utilizzando le stesse API.

App di sistema=

App terze parti

Page 24: Android Code Camp for Beginners - Ecosistema Android (IT)

2.2

Livello API

Page 25: Android Code Camp for Beginners - Ecosistema Android (IT)

Cos'è un livello API Android?

Partendo dalla versione 1.0, ogni nuova versione di Android introduce nuove funzionalità:

Per l'utente finale ed il programmatore.

Le aggiunte vanno a definire un nuovo “livello” di API che si può sfruttare per ottenere applicazioni più potenti.

Page 26: Android Code Camp for Beginners - Ecosistema Android (IT)

Perché è importante?

Utilizzare una API di livello X rende l'applicazione automaticamente incompatibile con tutti i dispositivi con livello/versione inferiore.

Scelta importante in fase di progettazione.

Page 27: Android Code Camp for Beginners - Ecosistema Android (IT)

È così limitante?

Quando si tratta di una funzionalità fondamentale è inevitabile.

Funzionalità cosmetiche possono essere semplificate per versioni più vecchie di Android.

Support library di Android.

Page 28: Android Code Camp for Beginners - Ecosistema Android (IT)

EvoluzioneAnno Versione Nome in codice Livello

2008 1.0 Apple Pie 1

2009

1.1 Petit Four 2

1.5 Cupcake 3

1.6 Donut 4

2.0 Eclair 6-7

20102.2 Froyo (Frozen Yogurt) 8

2.3 GingerBread 9-10

20113.0 HoneyComb 11-13

4.0 IceCream Sandwich 14-15

20124.1 JellyBean 16

4.2 JellyBean (MR 1) 17

20134.3 JellyBean (MR 2) 18

4.4 KitKat 19

Page 29: Android Code Camp for Beginners - Ecosistema Android (IT)

● Riproduzione e cattura audio/video.● Riconoscimento vocale.● Soft keyboard● Widget.● Notifiche.● WebView.

Cupcake 1.5 (API 3)

Page 30: Android Code Camp for Beginners - Ecosistema Android (IT)

● Gestures.● Sintesi vocale.● Supporto CDMA.● Supporto per dimensioni e

densità di schermi variabili.

Donut 1.6 (API 4)

Page 31: Android Code Camp for Beginners - Ecosistema Android (IT)

● Mappe.● Navigazione● Supporto Bluetooth 2.1.● Live wallpapers.

Eclair 2.1 (API 7)

Page 32: Android Code Camp for Beginners - Ecosistema Android (IT)

● Fragments.● Action Bar.● Supporto multimediale

migliorato.● Stile digitale.● Periferiche USB.

HoneyComb 3.0 (API 11-12)

Page 33: Android Code Camp for Beginners - Ecosistema Android (IT)

● UI riprogettata (+coerenza).● Notifiche più potenti.● API sociali.

IceCream Sandwich 4.0 (API 14)

Page 34: Android Code Camp for Beginners - Ecosistema Android (IT)

● Project Butter.● Notifiche espandibili.● Display secondari.● Lockscreen widgets.● Supporto per utenti multipli.

JellyBean 4.1-2 (API 16-17)

Page 35: Android Code Camp for Beginners - Ecosistema Android (IT)

3.

Elementi principali di un'applicazione Android

Page 36: Android Code Camp for Beginners - Ecosistema Android (IT)

Elementi principali di un'app

Activity

Service

Broadcast Receiver

Content Provider

Content Provider

Content Provider

Activity

Widget

Widget

Widget

Notification

Notification

Page 37: Android Code Camp for Beginners - Ecosistema Android (IT)

3.1

Activity

Page 38: Android Code Camp for Beginners - Ecosistema Android (IT)

Activity

Ogni Activity rappresenta una schermata di una applicazione.

Page 39: Android Code Camp for Beginners - Ecosistema Android (IT)

Activity

Ad ogni Activity corrisponde (idealmente) un'attività atomica.

Page 40: Android Code Camp for Beginners - Ecosistema Android (IT)

3.2

Servizi background

Page 41: Android Code Camp for Beginners - Ecosistema Android (IT)

Service

Un’attività dell'app o del sistema invisibile all'utente (gira in background).

Alcuni esempi:Media player.Download di un file.Raccolta dati del sistema.Aggiorna le informazioni periodicamente.Completa un'azione intrapresa in una Activity.

Page 42: Android Code Camp for Beginners - Ecosistema Android (IT)

Service

Non comunica direttamente con l’utente ma può comunicare con le activity (anche di altre applicazioni) e con il sistema.

Page 43: Android Code Camp for Beginners - Ecosistema Android (IT)

Service

Se fondamentali per un’applicazione possono essere istanziati come foreground service.

Posizionano un'iconanella barra di sistema(visibili all'utente).

Non vengono terminateperché ciò peggiorerebbel'esperienza d'uso.

Hanno una notifica fissanella barra relativa.

Page 44: Android Code Camp for Beginners - Ecosistema Android (IT)

3.3

Intent

Page 45: Android Code Camp for Beginners - Ecosistema Android (IT)

Cos'è un Intent?

Costituiscono il sistema di messaggistica fra i vari componenti del sistema.

Ogni Intent è una struttura che incapsula dati.

Questi dati costituiscono una astrazione di:Un’operazione da eseguire.Un evento che si è appena verificato.

Page 46: Android Code Camp for Beginners - Ecosistema Android (IT)

Componenti di un Intent

Action: descrive “cosa” intende fare.Di sistema: ACTION_VIEW, ACTION_EDIT, ACTION_SEND…

Category: descrive “come” viene lanciato l'Intent.

Default, Launcher, Preferenze, etc…

Data: informazioni passate al ricevitore.Flags: specificano modalità di passaggio.Component name: specifica l'esatto componente che gestirà l'Intent (opzionale).

Page 47: Android Code Camp for Beginners - Ecosistema Android (IT)

Intent Resolution

Il mittente è sempre noto mentre il ricevente può non esserlo a priori.

Page 48: Android Code Camp for Beginners - Ecosistema Android (IT)

Intent esplicito Il component name del componente destinatario è specificato (class name qualificato).

Intent implicito Il component name non è specificato. Il sistema si occupa di trovare il componente giusto (eventualmente potrà chiedere all'utente).

Intent Resolution

Page 49: Android Code Camp for Beginners - Ecosistema Android (IT)

3.4

Notifiche

Page 50: Android Code Camp for Beginners - Ecosistema Android (IT)

3.2.7 Notification

Servono per informare l’utente di un evento scatenato o avvenuto:

○ Nel sistema.○ Nell’Activity con cui l’utente sta interagendo.○ Nei componenti senza interfaccia (come i

Service).

Page 51: Android Code Camp for Beginners - Ecosistema Android (IT)

Toast Notification

Per eventi avvenuti in background.

Nessun input dall’utente.

Page 52: Android Code Camp for Beginners - Ecosistema Android (IT)

Status Notification

Per eventi relativi avvenuti in background.Richiedono l’input utente.Sono persistenti.

Nella barra delle notifiche finché l’utente non interagisce cliccandoci o cancellandole. Al click spesso viene lanciata un’activity.

Page 53: Android Code Camp for Beginners - Ecosistema Android (IT)

Status Notification

Page 54: Android Code Camp for Beginners - Ecosistema Android (IT)

Dialog Notification

Per eventi relativi all’Activity corrente.(Caricamento, conferma, etc…)

Supportano l’input utente.

Page 55: Android Code Camp for Beginners - Ecosistema Android (IT)

4.

Sviluppo su Android

Page 56: Android Code Camp for Beginners - Ecosistema Android (IT)

4.1

Cosa serve? Come si comincia? Aiuto!

Page 57: Android Code Camp for Beginners - Ecosistema Android (IT)

Linguaggio

Il codice si scrive principalmente in Java.

Per alcune applicazioni molto specifiche anche in C++.

Layout, manifest ed alcune risorse vanno specificate in XML.

Page 58: Android Code Camp for Beginners - Ecosistema Android (IT)

Strumenti

Disponibili come unico “bundle” messo a disposizione da Google:● Eclipse● Compilatore & co.● Strumenti (ADB, emulatore, AVD)● Immagini di sistema e librerie

Page 59: Android Code Camp for Beginners - Ecosistema Android (IT)

4.2

Ciclo di vita di un'Activity

Page 60: Android Code Camp for Beginners - Ecosistema Android (IT)

Ciclo di vita

Page 61: Android Code Camp for Beginners - Ecosistema Android (IT)

Ciclo di vita al lancio

Page 62: Android Code Camp for Beginners - Ecosistema Android (IT)

Ciclo di vita alla terminazione

Page 63: Android Code Camp for Beginners - Ecosistema Android (IT)

Terminazione del processo

Page 64: Android Code Camp for Beginners - Ecosistema Android (IT)

Riavvio del processo

Page 65: Android Code Camp for Beginners - Ecosistema Android (IT)

4.3

Layout e grafica

Page 66: Android Code Camp for Beginners - Ecosistema Android (IT)

View e Layout

Un Activity è composta genericamente da View e raggruppamenti delle stesse.

Page 67: Android Code Camp for Beginners - Ecosistema Android (IT)

Layout in XML

Il layout è definito (normalmente) tramite un file XML.