SlideShare uma empresa Scribd logo
1 de 31
Sviluppare applicazioni Android
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Argomenti trattati
•  Cos’è Android
•  SDK (eclipse + tools)
•  Struttura di un progetto android
•  Componenti base (Activity, View, Intent …)
•  Fragment (cenni)
•  Frammentazione e Support library (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Che cos’è android?
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Sistema operativo per dispositivi mobili
•  Sviluppato dalla Open Handset Alliance
(84 aziende tra cui Google, Samsung, LG,
Nvidia…)
•  Open Source e gratuito
•  Basato su Kernel Linux
•  Linguaggio di programmazione Java
Android != Linux
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Basato inizialmente su Kernel 2.6
•  Supporto ARM (e successivamente x86)
•  Sviluppato separatamente
•  Aggiunte patch non presenti in main branch linux
(ashmem, alarms, power management, low memory kliller,
logger…)
•  Parziale integrazione in versione 3.3
La	
  release	
  3.3	
  del	
  kernel	
  vi	
  perme1erà	
  di	
  avviare	
  un	
  userspace	
  Android	
  senza	
  
alcuna	
  modifica,	
  sebbene	
  la	
  ges<one	
  dell’alimentazione	
  non	
  sia	
  molto	
  buona.	
  
Nella	
  versione	
  3.4	
  del	
  kernel	
  si	
  spera	
  di	
  poter	
  correggere	
  questo	
  problema	
  e	
  
arrivare	
  ad	
  una	
  piena	
  integrazione	
  con	
  Android.	
  
	
  
Greg	
  Kroah-­‐Hartman	
  (Linux	
  kernel	
  –stable	
  branch	
  maintainer)	
  
Java ma non JVM
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Dalvik Virtual Machine
•  No Java SE v Java ME
•  Subset Apache Harmony
•  No executable jars: apk
.java	
   .class	
   .dex	
  
Architettura
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Dalvik Virtual Machine
E’ qui che agiamo!
SDK
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Android developer tools
•  tools a linea di comando (adb, zipalign)
•  SDK Manager
•  AVD Manager (android virtual device manager)
•  Emulatore
•  Eclipse ADT plugin
L’android SDK è costituito da:	
  
Android SDK Manager
Copyright© 2013 Paolo Montalto http://www.xabaras.it
AVD Manager
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Emulatore
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Rom nativa android
•  Google API
•  Mock Locations
•  Simulazione Rete GSM
•  Pulsanti hardware
•  Hardware keyboard
•  D-Pad
•  Pulsanti volume
•  Pulsante “Power”
Graphical layout editor
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Dalvik Debug Monitor Server
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  system information
•  screen capture
•  thread/heap info
•  logcat
•  processi
•  controllo emulatore
•  traffico di rete
•  stato della rete
•  posizioni GPS (mock)
Struttura di un Progetto
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Codice Java
Codice generato
dal compilatore
Librerie e dipendenze di
sistema
Definizione dell’applicazione
Risorse:
•  layout (xml)
•  Immagini
•  Stili
•  File lingua
Librerie .jar, .so
Altri file dell’applicaizone
(es. .pdf, .html, .db …)
La directory “res”
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Risorse grafiche
Risorse che rappresentano valori (colori,
dimensioni, stringhe di testo, stili della GUI)
I valori dopo il “-” nei nomi delle directory
sono i selettori delle risorse, servono ad
identificare l’utilizzo che l’applicazione farà
di quelle risorse:
•  hdpi: dispositivi con densità di schermo alta
•  sw600dp: device la cui risoluzione orizzontale
sia almeno di 600dp
•  v11: utilizzare solo se la versione di android
sul dispositivo è 11
•  it: se la lingua del device è Italiano
Activity
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Activity è il “contesto” base di esecuzione in
un’applicazione android.
•  Entry point dell’applicazione android
•  Solo una in foreground
•  Solo una attiva
•  Stack: nuove activity sempre on top
Activity: ciclo di vita
Copyright© 2013 Paolo Montalto http://www.xabaras.it
View
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Componenti base della UI di android
•  Definite e utilizzate nei file xml di Layout
•  Una view sa come disegnare se stessa
•  Risponde agli eventi (es: onClick, onLongClick)
•  Organizzate in gerarchie (ViewGroup)
Il framework android si occupa di misurare, disegnare
e disporre le View e i ViewGroup
Layout
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  RelativeLayout: Layout eredita da ViewGroup
•  TextView è una View (come EditText, WebView, ListView, ScrollView…)
•  Riferimenti a risorse esterne al Layout (@string, @drawable, @dimen)
File xml
Layout e Activity
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Caricamento layout nell’activity Accesso alle View
Accesso a risorse
Intent
Copyright© 2013 Paolo Montalto http://www.xabaras.it
E’ una descrizione astratta di un’operazione da eseguire.
Generalmente usato per lanciare un’Activity
Parametri principali:
•  action: l’azione che è necessario compiere, ad esempio ACTION_VIEW,
ACTION_EDIT, ACTION_MAIN, etc.
•  data: i dati sui quali effettuare l’operazione, ad esempio una persona nel
database di contatti, un url di un sito web, etc.
Esempi (action – data):
•  ACTION_VIEW - content://contacts/people/1
mostra informazioni sulla persona il cui ID è 1
•  ACTION_DIAL - content://contacts/people/1
mostra la scheramata di chiamata per la persona il cui ID è 1
1/3
Intent
Copyright© 2013 Paolo Montalto http://www.xabaras.it
2/3
Attributi secondari:
•  category: informazioni aggiuntive sull’azione da eseguire (es.
CATEGORY_LAUNCHER)
•  type: specifica il MIME type dei dati passati all’Intent
•  component: specifica esplicitamente il nome della classe da usare
•  extras: può essere usato per passare informazioni aggiuntive all’activity
lanciata
Esempi:
•  ACTION_MAIN con category CATEGORY_HOME
lancia la schermata Home
•  ACTION_GET_CONTENT con MIME type vnd.android.cursor.item/phone
Mostra una lista di numeri di telefono, consentendo all’utente di
selezionarne uno e ritornare il valore selezionato all’activity di partenza
Intent
Copyright© 2013 Paolo Montalto http://www.xabaras.it
3/3
Lanciare un’activity:
Recuperare il risultato di un’activity:
AndroidManifest.xml
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Ogni applicazione android deve avere un file AndroidManifest.xml nella sua
directory principale.
Il manifest fornisce al sistema android informazioni essenziali
sull’applicazione.
•  Principali caratteristiche di AndroidManifest.xml
•  definisce il package name dell’applicazione
•  descrive i componenti dell’applicazione (activity, servizi, provider di
contenuti)
•  definisce quali permessi l’applicazione avrà per l’accesso a specifiche
funzionalità / caratteristiche hardware
•  dichiara il livello minimo di API supportato
•  dichiara eventuali librerie utlizzate esterne all’applicazione (presenti in un
package differente)
1/2
AndroidManifest.xml
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Package name
Icona
applicazione
Nome visualizzato
Permessi
Versione App
Versione Android SDK
Intent
Activity
principale
2/2
Fragment (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Introdotti in android 3.0 Honeycomb
•  Fondamentali per il supporto alle applicazioni
Tablet
•  Porzioni indipendenti dell’interfaccia utente
•  Hanno un loro ciclo di vita (legato a quello
dell’activity)
•  Possono essere combinati in layout muti-pane
•  Possono essere riutilizzati
1/3
Fragment (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
Tipico utilizzo dei Fragment
2/3
Fragment (cenni)
Copyright© 2013 Paolo Montalto http://www.xabaras.it
3/3
•  Possono essere
inseriti nella
definizione xml del
layout
•  Possono essere
dichiarati via codice
Altri componenti del framework
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Dialog
visualizzano finestre di dialogo (es: i classici alert)
•  Service
eseguono codice in background, possono essere in esecuzione anche quando
l’app non lo è
•  Broadcast Receiver
ricevono e gestiscono eventi in modo asincrono
•  Content Provider
consentono di accedere ai dati attraverso un’interfaccia standard (possibile
definire custom)
•  Notification
mostrano informazioni nella barra delle notifiche
Frammentazione
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Ecosistema frammentato
•  Frammentazione delle versioni di
android
•  Frammentazione delle dimensioni
di schermo
•  Frammentazione delle densità di
schermo
•  Personalizzazioni dei produttori
Support Library
Copyright© 2013 Paolo Montalto http://www.xabaras.it
•  Introdotta per porre un rimedio alla frammentazione relativa
a differenti versioni del sistema operativo
•  Consente l’accesso a tutta una serie di funzionalità
introdotte da android HoneyComb(android 3.0 api v11) in
poi su dispositivi con api precedente
•  Supporta dispositivi android da api v4 in poi
•  E’ anche detta support-v4
•  E’ distribuita sotto forma di .jar da includere nel progetto
	
  
Grazie per l’attenzione!

Mais conteúdo relacionado

Mais procurados

Mangaia Marriage Index
Mangaia Marriage IndexMangaia Marriage Index
Mangaia Marriage IndexLarry Price
 
Time saver holidays and special days in the usa 99p
Time saver holidays and special days in the usa   99pTime saver holidays and special days in the usa   99p
Time saver holidays and special days in the usa 99phosneddine dermoumi
 
Broadcast Camera Technology, Part 1
Broadcast Camera Technology, Part 1Broadcast Camera Technology, Part 1
Broadcast Camera Technology, Part 1Dr. Mohieddin Moradi
 
BATXI - artelan baten irakurketa
BATXI - artelan baten irakurketaBATXI - artelan baten irakurketa
BATXI - artelan baten irakurketananu373
 
Working with the 22 hornet by m.l. mc pherson. winter 2012
Working with the 22 hornet by  m.l. mc pherson. winter 2012Working with the 22 hornet by  m.l. mc pherson. winter 2012
Working with the 22 hornet by m.l. mc pherson. winter 2012L L
 
Comunicare con le immagini
Comunicare con le immaginiComunicare con le immagini
Comunicare con le immaginiMaruzells zells
 
Ungaretti tesina (di un ex alunno)
Ungaretti tesina (di un ex alunno)Ungaretti tesina (di un ex alunno)
Ungaretti tesina (di un ex alunno)Anna Sparagna
 
Tesina sogno
Tesina sognoTesina sogno
Tesina sognoMatekanc
 
دعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلمين
دعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلميندعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلمين
دعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلمينDR. NAJEEB ALREFAE
 
Seconda Guerra Mondiale
Seconda Guerra MondialeSeconda Guerra Mondiale
Seconda Guerra MondialeRenata
 
Capitolo 4 PROMESSI SPOSI
Capitolo 4 PROMESSI SPOSICapitolo 4 PROMESSI SPOSI
Capitolo 4 PROMESSI SPOSIFiorella Grigio
 
La guerra fredda
La guerra freddaLa guerra fredda
La guerra freddasara1668
 
Manual de instrucciones chef o matic pro
Manual de instrucciones chef o matic proManual de instrucciones chef o matic pro
Manual de instrucciones chef o matic proCarlos Lopez
 

Mais procurados (20)

Mangaia Marriage Index
Mangaia Marriage IndexMangaia Marriage Index
Mangaia Marriage Index
 
Time saver holidays and special days in the usa 99p
Time saver holidays and special days in the usa   99pTime saver holidays and special days in the usa   99p
Time saver holidays and special days in the usa 99p
 
Mp3
Mp3Mp3
Mp3
 
Broadcast Camera Technology, Part 1
Broadcast Camera Technology, Part 1Broadcast Camera Technology, Part 1
Broadcast Camera Technology, Part 1
 
Maturazeugnis
MaturazeugnisMaturazeugnis
Maturazeugnis
 
BATXI - artelan baten irakurketa
BATXI - artelan baten irakurketaBATXI - artelan baten irakurketa
BATXI - artelan baten irakurketa
 
Fumo e giovani
Fumo e giovaniFumo e giovani
Fumo e giovani
 
Working with the 22 hornet by m.l. mc pherson. winter 2012
Working with the 22 hornet by  m.l. mc pherson. winter 2012Working with the 22 hornet by  m.l. mc pherson. winter 2012
Working with the 22 hornet by m.l. mc pherson. winter 2012
 
Comunicare con le immagini
Comunicare con le immaginiComunicare con le immagini
Comunicare con le immagini
 
Purgatorio, Canto VI
Purgatorio, Canto VIPurgatorio, Canto VI
Purgatorio, Canto VI
 
Ungaretti tesina (di un ex alunno)
Ungaretti tesina (di un ex alunno)Ungaretti tesina (di un ex alunno)
Ungaretti tesina (di un ex alunno)
 
Grande Guerra
Grande GuerraGrande Guerra
Grande Guerra
 
Tesina sogno
Tesina sognoTesina sogno
Tesina sogno
 
I longobardi
I longobardiI longobardi
I longobardi
 
دعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلمين
دعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلميندعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلمين
دعاء ختم القران لعبدالعزيز السلمان غفر الله له و لوالديه و المسلمين
 
L'inno di Mameli
L'inno di MameliL'inno di Mameli
L'inno di Mameli
 
Seconda Guerra Mondiale
Seconda Guerra MondialeSeconda Guerra Mondiale
Seconda Guerra Mondiale
 
Capitolo 4 PROMESSI SPOSI
Capitolo 4 PROMESSI SPOSICapitolo 4 PROMESSI SPOSI
Capitolo 4 PROMESSI SPOSI
 
La guerra fredda
La guerra freddaLa guerra fredda
La guerra fredda
 
Manual de instrucciones chef o matic pro
Manual de instrucciones chef o matic proManual de instrucciones chef o matic pro
Manual de instrucciones chef o matic pro
 

Destaque

Distribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradleDistribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradlePaolo Montalto
 
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013Carlo Bonamico
 
Playing with parse.com
Playing with parse.comPlaying with parse.com
Playing with parse.comJUG Genova
 
Java 9 by Alessio Stalla
Java 9 by Alessio StallaJava 9 by Alessio Stalla
Java 9 by Alessio StallaJUG Genova
 

Destaque (8)

Distribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradleDistribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradle
 
REST con Jersey
REST con JerseyREST con Jersey
REST con Jersey
 
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
 
JMeter
JMeterJMeter
JMeter
 
Playing with parse.com
Playing with parse.comPlaying with parse.com
Playing with parse.com
 
Java 9 by Alessio Stalla
Java 9 by Alessio StallaJava 9 by Alessio Stalla
Java 9 by Alessio Stalla
 
EIP with Apache Camel
EIP with Apache CamelEIP with Apache Camel
EIP with Apache Camel
 
Java 8
Java 8Java 8
Java 8
 

Semelhante a Sviluppare applicazioni android

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in ActionDotNetMarche
 
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
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoWireless
 
Non solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsNon solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsGoran Djukic
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventorfdizazzo
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Mattia De Bernardi
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance ToolsAndrea Tosato
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniStefano Sanna
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 

Semelhante a Sviluppare applicazioni android (20)

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
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
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobili
 
Non solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, appsNon solo cartoon: l’animazione nei new media, videogames, apps
Non solo cartoon: l’animazione nei new media, videogames, apps
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
 
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance Tools
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioni
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 

Último

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 

Último (9)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 

Sviluppare applicazioni android

  • 1. Sviluppare applicazioni Android Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 2. Argomenti trattati •  Cos’è Android •  SDK (eclipse + tools) •  Struttura di un progetto android •  Componenti base (Activity, View, Intent …) •  Fragment (cenni) •  Frammentazione e Support library (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 3. Che cos’è android? Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Sistema operativo per dispositivi mobili •  Sviluppato dalla Open Handset Alliance (84 aziende tra cui Google, Samsung, LG, Nvidia…) •  Open Source e gratuito •  Basato su Kernel Linux •  Linguaggio di programmazione Java
  • 4. Android != Linux Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Basato inizialmente su Kernel 2.6 •  Supporto ARM (e successivamente x86) •  Sviluppato separatamente •  Aggiunte patch non presenti in main branch linux (ashmem, alarms, power management, low memory kliller, logger…) •  Parziale integrazione in versione 3.3 La  release  3.3  del  kernel  vi  perme1erà  di  avviare  un  userspace  Android  senza   alcuna  modifica,  sebbene  la  ges<one  dell’alimentazione  non  sia  molto  buona.   Nella  versione  3.4  del  kernel  si  spera  di  poter  correggere  questo  problema  e   arrivare  ad  una  piena  integrazione  con  Android.     Greg  Kroah-­‐Hartman  (Linux  kernel  –stable  branch  maintainer)  
  • 5. Java ma non JVM Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Dalvik Virtual Machine •  No Java SE v Java ME •  Subset Apache Harmony •  No executable jars: apk .java   .class   .dex  
  • 6. Architettura Copyright© 2013 Paolo Montalto http://www.xabaras.it Dalvik Virtual Machine E’ qui che agiamo!
  • 7. SDK Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Android developer tools •  tools a linea di comando (adb, zipalign) •  SDK Manager •  AVD Manager (android virtual device manager) •  Emulatore •  Eclipse ADT plugin L’android SDK è costituito da:  
  • 8. Android SDK Manager Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 9. AVD Manager Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 10. Emulatore Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Rom nativa android •  Google API •  Mock Locations •  Simulazione Rete GSM •  Pulsanti hardware •  Hardware keyboard •  D-Pad •  Pulsanti volume •  Pulsante “Power”
  • 11. Graphical layout editor Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 12. Dalvik Debug Monitor Server Copyright© 2013 Paolo Montalto http://www.xabaras.it •  system information •  screen capture •  thread/heap info •  logcat •  processi •  controllo emulatore •  traffico di rete •  stato della rete •  posizioni GPS (mock)
  • 13. Struttura di un Progetto Copyright© 2013 Paolo Montalto http://www.xabaras.it Codice Java Codice generato dal compilatore Librerie e dipendenze di sistema Definizione dell’applicazione Risorse: •  layout (xml) •  Immagini •  Stili •  File lingua Librerie .jar, .so Altri file dell’applicaizone (es. .pdf, .html, .db …)
  • 14. La directory “res” Copyright© 2013 Paolo Montalto http://www.xabaras.it Risorse grafiche Risorse che rappresentano valori (colori, dimensioni, stringhe di testo, stili della GUI) I valori dopo il “-” nei nomi delle directory sono i selettori delle risorse, servono ad identificare l’utilizzo che l’applicazione farà di quelle risorse: •  hdpi: dispositivi con densità di schermo alta •  sw600dp: device la cui risoluzione orizzontale sia almeno di 600dp •  v11: utilizzare solo se la versione di android sul dispositivo è 11 •  it: se la lingua del device è Italiano
  • 15. Activity Copyright© 2013 Paolo Montalto http://www.xabaras.it Activity è il “contesto” base di esecuzione in un’applicazione android. •  Entry point dell’applicazione android •  Solo una in foreground •  Solo una attiva •  Stack: nuove activity sempre on top
  • 16. Activity: ciclo di vita Copyright© 2013 Paolo Montalto http://www.xabaras.it
  • 17. View Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Componenti base della UI di android •  Definite e utilizzate nei file xml di Layout •  Una view sa come disegnare se stessa •  Risponde agli eventi (es: onClick, onLongClick) •  Organizzate in gerarchie (ViewGroup) Il framework android si occupa di misurare, disegnare e disporre le View e i ViewGroup
  • 18. Layout Copyright© 2013 Paolo Montalto http://www.xabaras.it •  RelativeLayout: Layout eredita da ViewGroup •  TextView è una View (come EditText, WebView, ListView, ScrollView…) •  Riferimenti a risorse esterne al Layout (@string, @drawable, @dimen) File xml
  • 19. Layout e Activity Copyright© 2013 Paolo Montalto http://www.xabaras.it Caricamento layout nell’activity Accesso alle View Accesso a risorse
  • 20. Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it E’ una descrizione astratta di un’operazione da eseguire. Generalmente usato per lanciare un’Activity Parametri principali: •  action: l’azione che è necessario compiere, ad esempio ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc. •  data: i dati sui quali effettuare l’operazione, ad esempio una persona nel database di contatti, un url di un sito web, etc. Esempi (action – data): •  ACTION_VIEW - content://contacts/people/1 mostra informazioni sulla persona il cui ID è 1 •  ACTION_DIAL - content://contacts/people/1 mostra la scheramata di chiamata per la persona il cui ID è 1 1/3
  • 21. Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it 2/3 Attributi secondari: •  category: informazioni aggiuntive sull’azione da eseguire (es. CATEGORY_LAUNCHER) •  type: specifica il MIME type dei dati passati all’Intent •  component: specifica esplicitamente il nome della classe da usare •  extras: può essere usato per passare informazioni aggiuntive all’activity lanciata Esempi: •  ACTION_MAIN con category CATEGORY_HOME lancia la schermata Home •  ACTION_GET_CONTENT con MIME type vnd.android.cursor.item/phone Mostra una lista di numeri di telefono, consentendo all’utente di selezionarne uno e ritornare il valore selezionato all’activity di partenza
  • 22. Intent Copyright© 2013 Paolo Montalto http://www.xabaras.it 3/3 Lanciare un’activity: Recuperare il risultato di un’activity:
  • 23. AndroidManifest.xml Copyright© 2013 Paolo Montalto http://www.xabaras.it Ogni applicazione android deve avere un file AndroidManifest.xml nella sua directory principale. Il manifest fornisce al sistema android informazioni essenziali sull’applicazione. •  Principali caratteristiche di AndroidManifest.xml •  definisce il package name dell’applicazione •  descrive i componenti dell’applicazione (activity, servizi, provider di contenuti) •  definisce quali permessi l’applicazione avrà per l’accesso a specifiche funzionalità / caratteristiche hardware •  dichiara il livello minimo di API supportato •  dichiara eventuali librerie utlizzate esterne all’applicazione (presenti in un package differente) 1/2
  • 24. AndroidManifest.xml Copyright© 2013 Paolo Montalto http://www.xabaras.it Package name Icona applicazione Nome visualizzato Permessi Versione App Versione Android SDK Intent Activity principale 2/2
  • 25. Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Introdotti in android 3.0 Honeycomb •  Fondamentali per il supporto alle applicazioni Tablet •  Porzioni indipendenti dell’interfaccia utente •  Hanno un loro ciclo di vita (legato a quello dell’activity) •  Possono essere combinati in layout muti-pane •  Possono essere riutilizzati 1/3
  • 26. Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it Tipico utilizzo dei Fragment 2/3
  • 27. Fragment (cenni) Copyright© 2013 Paolo Montalto http://www.xabaras.it 3/3 •  Possono essere inseriti nella definizione xml del layout •  Possono essere dichiarati via codice
  • 28. Altri componenti del framework Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Dialog visualizzano finestre di dialogo (es: i classici alert) •  Service eseguono codice in background, possono essere in esecuzione anche quando l’app non lo è •  Broadcast Receiver ricevono e gestiscono eventi in modo asincrono •  Content Provider consentono di accedere ai dati attraverso un’interfaccia standard (possibile definire custom) •  Notification mostrano informazioni nella barra delle notifiche
  • 29. Frammentazione Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Ecosistema frammentato •  Frammentazione delle versioni di android •  Frammentazione delle dimensioni di schermo •  Frammentazione delle densità di schermo •  Personalizzazioni dei produttori
  • 30. Support Library Copyright© 2013 Paolo Montalto http://www.xabaras.it •  Introdotta per porre un rimedio alla frammentazione relativa a differenti versioni del sistema operativo •  Consente l’accesso a tutta una serie di funzionalità introdotte da android HoneyComb(android 3.0 api v11) in poi su dispositivi con api precedente •  Supporta dispositivi android da api v4 in poi •  E’ anche detta support-v4 •  E’ distribuita sotto forma di .jar da includere nel progetto