SlideShare una empresa de Scribd logo
1 de 67
Descargar para leer sin conexión
1.

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

Cos'è Android?
1.1

Breve storia
Cos'è Android?
● 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.
Storia
● 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 (2)
● 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 (3)
● 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 (4)
● 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 (5)
Storia (6)
● 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
1.2

Caratteristiche
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.”
Progetto open-source
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.
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 personalizzati
Samsung TouchWiz

● Feature aggiuntive
Samsung Note “multi-window”, Google Now, eye tracking...
Diffusione
Qualsiasi sia la strategia, sembra avere successo.
Frammentazione
Frammentazione (in pratica)
2.

Cosa può fare Android?
2.1

Cos'è un API di sistema?
Architettura di Android
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”.
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...
Scrittura di applicazioni
Applicazioni a livello utente scritte in
linguaggio Java, utilizzando le stesse API.
App di sistema
=
App terze parti
2.2

Livello API
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.
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.
È 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.
Evoluzione
Anno

Versione

2008

1.0

Apple Pie

1

1.1

Petit Four

2

1.5

Cupcake

3

1.6

Donut

4

2.0

Eclair

6-7

2.2

Froyo (Frozen Yogurt)

2.3

GingerBread

9-10

3.0

HoneyComb

11-13

4.0

IceCream Sandwich

14-15

4.1

JellyBean

16

4.2

JellyBean (MR 1)

17

4.3

JellyBean (MR 2)

18

4.4

KitKat

19

2009

2010

2011

2012

2013

Nome in codice

Livello

8
Cupcake 1.5 (API 3)
●
●
●
●
●
●

Riproduzione e cattura audio/video.
Riconoscimento vocale.
Soft keyboard
Widget.
Notifiche.
WebView.
Donut 1.6 (API 4)
●
●
●
●

Gestures.
Sintesi vocale.
Supporto CDMA.
Supporto per dimensioni e
densità di schermi variabili.
Eclair 2.1 (API 7)
●
●
●
●

Mappe.
Navigazione
Supporto Bluetooth 2.1.
Live wallpapers.
HoneyComb 3.0 (API 11-12)
● Fragments.
● Action Bar.
● Supporto multimediale

migliorato.
● Stile digitale.
● Periferiche USB.
IceCream Sandwich 4.0 (API 14)
● UI riprogettata (+coerenza).
● Notifiche più potenti.
● API sociali.
JellyBean 4.1-2 (API 16-17)
●
●
●
●
●

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

Elementi principali di
un'applicazione Android
Elementi principali di un'app
Widget
Broadcast
Receiver

Notification

Activity
Notification

Content
Content
Content
Provider
Provider
Provider
Service

Widget
Activity

Widget
3.1

Activity
Activity
Ogni Activity rappresenta una schermata di
una applicazione.
Activity
Ad ogni Activity corrisponde (idealmente)
un'attività atomica.
3.2

Servizi background
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.
Service
Non comunica direttamente con l’utente ma
può comunicare con le activity (anche di altre
applicazioni) e con il sistema.
Service
Se fondamentali per un’applicazione possono
essere istanziati come foreground service.
Posizionano un'icona
nella barra di sistema
(visibili all'utente).
Non vengono terminate
perché ciò peggiorerebbe
l'esperienza d'uso.
Hanno una notifica fissa
nella barra relativa.
3.3

Intent
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.
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).
Intent Resolution
Il mittente è sempre noto mentre il ricevente
può non esserlo a priori.
Intent Resolution
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).
3.4

Notifiche
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).
Toast Notification
Per eventi avvenuti in background.

Nessun input dall’utente.
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.
Status Notification
Dialog Notification
Per eventi relativi all’Activity corrente.
(Caricamento, conferma, etc…)
Supportano l’input utente.
4.

Sviluppo su Android
4.1

Cosa serve? Come si
comincia? Aiuto!
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.
Strumenti
Disponibili come unico “bundle” messo a
disposizione da Google:
●
●
●
●

Eclipse
Compilatore & co.
Strumenti (ADB, emulatore, AVD)
Immagini di sistema e librerie
4.2

Ciclo di vita di un'Activity
Ciclo di vita
Ciclo di vita al lancio
Ciclo di vita alla terminazione
Terminazione del processo
Riavvio del processo
4.3

Layout e grafica
View e Layout
Un Activity è composta genericamente da View
e raggruppamenti delle stesse.
Layout in XML
Il layout è definito (normalmente) tramite un
file XML.

Más contenido relacionado

Similar a Android Code Camp for Beginners - Ecosistema Android (IT)

Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Riccardo Mancinelli
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play frameworkCSP Scarl
 
Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?Enzo Contini
 
Define & design apps for success
Define & design apps for successDefine & design apps for success
Define & design apps for successAcrmnet s.r.l.
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1codeblock
 
Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)Francesco Ronchi
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Androidmobiledevcamp
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)Vinu Iaconissi
 
Android Code Camp 2012 - ita
Android Code Camp 2012 - itaAndroid Code Camp 2012 - ita
Android Code Camp 2012 - itaneunet
 
My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012Francesco Ronchi
 
follow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Androidfollow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: AndroidQIRIS
 
Android Mobile Apps , visione d'insieme
Android Mobile Apps , visione d'insiemeAndroid Mobile Apps , visione d'insieme
Android Mobile Apps , visione d'insiemeFrancesco De Simone
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzajekil
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaCommit University
 

Similar a Android Code Camp for Beginners - Ecosistema Android (IT) (20)

Android vs iOS
Android vs iOSAndroid vs iOS
Android vs iOS
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30
 
Io, Android
Io, AndroidIo, Android
Io, Android
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play framework
 
Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?
 
Define & design apps for success
Define & design apps for successDefine & design apps for success
Define & design apps for success
 
MonoTouch, un anno dopo
MonoTouch, un anno dopoMonoTouch, un anno dopo
MonoTouch, un anno dopo
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
 
Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)Sviluppo Android (LinuxDay TO 2010)
Sviluppo Android (LinuxDay TO 2010)
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Android
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)
 
Android Code Camp 2012 - ita
Android Code Camp 2012 - itaAndroid Code Camp 2012 - ita
Android Code Camp 2012 - ita
 
My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012My life with Android @ JUG Torino 2012
My life with Android @ JUG Torino 2012
 
Android
AndroidAndroid
Android
 
follow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Androidfollow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Android
 
Android Mobile Apps , visione d'insieme
Android Mobile Apps , visione d'insiemeAndroid Mobile Apps , visione d'insieme
Android Mobile Apps , visione d'insieme
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaforma
 

Más de Alessandro Bogliolo

BIBMOOC 05.03 - Codici in biblioteca
BIBMOOC 05.03 - Codici in bibliotecaBIBMOOC 05.03 - Codici in biblioteca
BIBMOOC 05.03 - Codici in bibliotecaAlessandro Bogliolo
 
BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...
BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...
BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...Alessandro Bogliolo
 
BIBMOOC 5.2 - Algoritmi in biblioteca
BIBMOOC 5.2 - Algoritmi in bibliotecaBIBMOOC 5.2 - Algoritmi in biblioteca
BIBMOOC 5.2 - Algoritmi in bibliotecaAlessandro Bogliolo
 
BIBMOOC 05.01 - Installazioni di coding e gamification
BIBMOOC 05.01 - Installazioni di coding e gamificationBIBMOOC 05.01 - Installazioni di coding e gamification
BIBMOOC 05.01 - Installazioni di coding e gamificationAlessandro Bogliolo
 
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni MojoliBIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni MojoliAlessandro Bogliolo
 
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona VillaBIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona VillaAlessandro Bogliolo
 
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco MuscogiuriBIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco MuscogiuriAlessandro Bogliolo
 
BIBMOOC 04.02 - Marketing culturale - Anna Busa
BIBMOOC 04.02 - Marketing culturale - Anna BusaBIBMOOC 04.02 - Marketing culturale - Anna Busa
BIBMOOC 04.02 - Marketing culturale - Anna BusaAlessandro Bogliolo
 
BIBMOOC 3.2 - Coding unplugged fai-da-te
BIBMOOC 3.2 - Coding unplugged fai-da-teBIBMOOC 3.2 - Coding unplugged fai-da-te
BIBMOOC 3.2 - Coding unplugged fai-da-teAlessandro Bogliolo
 
BIBMOOC 03.01 - Programmazione visuale a blocchi
BIBMOOC 03.01 - Programmazione visuale a blocchiBIBMOOC 03.01 - Programmazione visuale a blocchi
BIBMOOC 03.01 - Programmazione visuale a blocchiAlessandro Bogliolo
 
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementariBIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementariAlessandro Bogliolo
 
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioniBIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioniAlessandro Bogliolo
 
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara FaggiolaniBIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara FaggiolaniAlessandro Bogliolo
 
BIBMOOC 1.2 - Coding e pensiero computazionale
BIBMOOC 1.2 - Coding e pensiero computazionaleBIBMOOC 1.2 - Coding e pensiero computazionale
BIBMOOC 1.2 - Coding e pensiero computazionaleAlessandro Bogliolo
 
BIBMOOC 1.1 - Informazione e rappresentazioni digitali
BIBMOOC 1.1 - Informazione e rappresentazioni digitaliBIBMOOC 1.1 - Informazione e rappresentazioni digitali
BIBMOOC 1.1 - Informazione e rappresentazioni digitaliAlessandro Bogliolo
 
AIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
AIMOOC 7.3 - Per una IA etica - Claudia ChiavarinoAIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
AIMOOC 7.3 - Per una IA etica - Claudia ChiavarinoAlessandro Bogliolo
 
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla SioliAIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla SioliAlessandro Bogliolo
 
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro BoglioloAIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro BoglioloAlessandro Bogliolo
 

Más de Alessandro Bogliolo (20)

BIBMOOC 05.03 - Codici in biblioteca
BIBMOOC 05.03 - Codici in bibliotecaBIBMOOC 05.03 - Codici in biblioteca
BIBMOOC 05.03 - Codici in biblioteca
 
BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...
BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...
BIBMOOC 06.02 - Buone pratiche: Il caso di Settimo Torinese - Lisa Marcenaro ...
 
BIBMOOC 5.2 - Algoritmi in biblioteca
BIBMOOC 5.2 - Algoritmi in bibliotecaBIBMOOC 5.2 - Algoritmi in biblioteca
BIBMOOC 5.2 - Algoritmi in biblioteca
 
BIBMOOC 05.01 - Installazioni di coding e gamification
BIBMOOC 05.01 - Installazioni di coding e gamificationBIBMOOC 05.01 - Installazioni di coding e gamification
BIBMOOC 05.01 - Installazioni di coding e gamification
 
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni MojoliBIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
 
Nuovi LIDI - Lezione 1
Nuovi LIDI - Lezione 1Nuovi LIDI - Lezione 1
Nuovi LIDI - Lezione 1
 
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona VillaBIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
 
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco MuscogiuriBIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
 
BIBMOOC 04.02 - Marketing culturale - Anna Busa
BIBMOOC 04.02 - Marketing culturale - Anna BusaBIBMOOC 04.02 - Marketing culturale - Anna Busa
BIBMOOC 04.02 - Marketing culturale - Anna Busa
 
BIBMOOC 3.2 - Coding unplugged fai-da-te
BIBMOOC 3.2 - Coding unplugged fai-da-teBIBMOOC 3.2 - Coding unplugged fai-da-te
BIBMOOC 3.2 - Coding unplugged fai-da-te
 
BIBMOOC 03.01 - Programmazione visuale a blocchi
BIBMOOC 03.01 - Programmazione visuale a blocchiBIBMOOC 03.01 - Programmazione visuale a blocchi
BIBMOOC 03.01 - Programmazione visuale a blocchi
 
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementariBIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
 
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioniBIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
 
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara FaggiolaniBIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
 
BIBMOOC 1.2 - Coding e pensiero computazionale
BIBMOOC 1.2 - Coding e pensiero computazionaleBIBMOOC 1.2 - Coding e pensiero computazionale
BIBMOOC 1.2 - Coding e pensiero computazionale
 
BIBMOOC 1.1 - Informazione e rappresentazioni digitali
BIBMOOC 1.1 - Informazione e rappresentazioni digitaliBIBMOOC 1.1 - Informazione e rappresentazioni digitali
BIBMOOC 1.1 - Informazione e rappresentazioni digitali
 
CodyTrip a BTO2021
CodyTrip a BTO2021CodyTrip a BTO2021
CodyTrip a BTO2021
 
AIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
AIMOOC 7.3 - Per una IA etica - Claudia ChiavarinoAIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
AIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
 
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla SioliAIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
 
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro BoglioloAIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
 

Android Code Camp for Beginners - Ecosistema Android (IT)

  • 1. 1. 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 Cos'è Android?
  • 3. Cos'è Android? ● 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.
  • 4. Storia ● 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
  • 5. Storia (2) ● 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
  • 6. Storia (3) ● 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
  • 7. Storia (4) ● 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”
  • 9. Storia (6) ● 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
  • 11. 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.”
  • 13. 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.
  • 14. 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 personalizzati Samsung TouchWiz ● Feature aggiuntive Samsung Note “multi-window”, Google Now, eye tracking...
  • 15. Diffusione Qualsiasi sia la strategia, sembra avere successo.
  • 18. 2. Cosa può fare Android?
  • 19. 2.1 Cos'è un API di sistema?
  • 21. 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”.
  • 22. 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...
  • 23. Scrittura di applicazioni Applicazioni a livello utente scritte in linguaggio Java, utilizzando le stesse API. App di sistema = App terze parti
  • 25. 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.
  • 26. 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.
  • 27. È 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.
  • 28. Evoluzione Anno Versione 2008 1.0 Apple Pie 1 1.1 Petit Four 2 1.5 Cupcake 3 1.6 Donut 4 2.0 Eclair 6-7 2.2 Froyo (Frozen Yogurt) 2.3 GingerBread 9-10 3.0 HoneyComb 11-13 4.0 IceCream Sandwich 14-15 4.1 JellyBean 16 4.2 JellyBean (MR 1) 17 4.3 JellyBean (MR 2) 18 4.4 KitKat 19 2009 2010 2011 2012 2013 Nome in codice Livello 8
  • 29. Cupcake 1.5 (API 3) ● ● ● ● ● ● Riproduzione e cattura audio/video. Riconoscimento vocale. Soft keyboard Widget. Notifiche. WebView.
  • 30. Donut 1.6 (API 4) ● ● ● ● Gestures. Sintesi vocale. Supporto CDMA. Supporto per dimensioni e densità di schermi variabili.
  • 31. Eclair 2.1 (API 7) ● ● ● ● Mappe. Navigazione Supporto Bluetooth 2.1. Live wallpapers.
  • 32. HoneyComb 3.0 (API 11-12) ● Fragments. ● Action Bar. ● Supporto multimediale migliorato. ● Stile digitale. ● Periferiche USB.
  • 33. IceCream Sandwich 4.0 (API 14) ● UI riprogettata (+coerenza). ● Notifiche più potenti. ● API sociali.
  • 34. JellyBean 4.1-2 (API 16-17) ● ● ● ● ● Project Butter. Notifiche espandibili. Display secondari. Lockscreen widgets. Supporto per utenti multipli.
  • 36. Elementi principali di un'app Widget Broadcast Receiver Notification Activity Notification Content Content Content Provider Provider Provider Service Widget Activity Widget
  • 38. Activity Ogni Activity rappresenta una schermata di una applicazione.
  • 39. Activity Ad ogni Activity corrisponde (idealmente) un'attività atomica.
  • 41. 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.
  • 42. Service Non comunica direttamente con l’utente ma può comunicare con le activity (anche di altre applicazioni) e con il sistema.
  • 43. Service Se fondamentali per un’applicazione possono essere istanziati come foreground service. Posizionano un'icona nella barra di sistema (visibili all'utente). Non vengono terminate perché ciò peggiorerebbe l'esperienza d'uso. Hanno una notifica fissa nella barra relativa.
  • 45. 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.
  • 46. 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).
  • 47. Intent Resolution Il mittente è sempre noto mentre il ricevente può non esserlo a priori.
  • 48. Intent Resolution 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).
  • 50. 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).
  • 51. Toast Notification Per eventi avvenuti in background. Nessun input dall’utente.
  • 52. 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.
  • 54. Dialog Notification Per eventi relativi all’Activity corrente. (Caricamento, conferma, etc…) Supportano l’input utente.
  • 56. 4.1 Cosa serve? Come si comincia? Aiuto!
  • 57. 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.
  • 58. Strumenti Disponibili come unico “bundle” messo a disposizione da Google: ● ● ● ● Eclipse Compilatore & co. Strumenti (ADB, emulatore, AVD) Immagini di sistema e librerie
  • 59. 4.2 Ciclo di vita di un'Activity
  • 61. Ciclo di vita al lancio
  • 62. Ciclo di vita alla terminazione
  • 66. View e Layout Un Activity è composta genericamente da View e raggruppamenti delle stesse.
  • 67. Layout in XML Il layout è definito (normalmente) tramite un file XML.