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