際際滷

際際滷Share a Scribd company logo
Writing apps for Android with .NET
Leo Alario
http://dotnetside.org/blogs/leo
http://twitter.com/leo_alario
leo.alario@gmail.com
Che cosa 竪 Android?
Android 竪 una piattaforma open source(AOSP) composta da:
 OS di base (Linux like)
 un middleware software
 applicazioni di sistema
 v1.0 10/2008 attualmente v4.2.1 11/2012
 Java: Piattaforma di riferimento
 Android SDK/NDK (strumenti di sviluppo, librerie, un
emulatore) + Eclipse + ADT plugin
Che cosa 竪 Android?
Svariati dispositivi supportati:
 Architettura x86 v.2.2 Froyo =>
 Architettura ARM6+
Architettura
Architettura
 Il codice Java (dialetto) viene compilato in
束Dalvik損 byte code (.dex)
 La Dalvik 束VM損 esegue .dex files
 Ogni applicazione viene eseguita in un proprio
processo Linux
 Ogni processo viene eseguito in una propria Dalvik
VM.
Architettura
Application Components
Le Activity
 Sono uno dei 4 elementi di base che possono
  costituire un'applicazione Android
 Sono adatte a quelle applicazioni destinate a una
  interazione diretta con l'utente
 Vengono create come oggetti di classe Activity da
  cui ereditano propriet e metodi
 Forniscono la UI per una schermata
 Lapplicazione pu嘆 essere composta da una o pi湛
  Activity
Application Components
Una Activity:
 Contrassegnata come principale diventa punto
   d'ingresso dellapplicazione
 Pu嘆 avviare altre Activity
 Pu嘆 assumere uno tra i seguenti stati:
     Running
     Paused
     Stopped
 Ha un ciclo di vita simile ad una pagina ASP.NET
Application Components
Life cycle di una Activity:
Application Components
La View
 Una View e la classe di base per la definizione
    dellinterfaccia grafica (lists, grids, text
    boxes, buttons)
 Linterfaccia grafica di una Activity viene in
    genere definita da una o pi湛 View
 Vari tipi di layout disponibili o layout custom
    estendendo uno preesistente
 Pu嘆 essere definita da codice (procedurale)
    oppure tramite un file XML (dichiarativa)
Application Components
Intent
 Un Intent rappresenta un meccanismo per
    descrivere la richiesta di unazione:
      Voglio aprire un link www.dotnetside.org
      Voglio aprite lapplicazione 束xyz損
   Consente di passare da una Activity ad unaltra
   Consente di avviare componenti di altre
    applicazioni
   Puo essere avviata senza alcun risultato, oppure
    richiedendo il ritorno di un risultato
   Consente di passare dati o parametri tra Activity
Application Components
Service
 Simile ai Windows services
 Privo di interfaccia utente
 Rimane attivo anche quando lapplicazione non
   竪 attiva
 Pu嘆 eseguire lunghi processi in background
   senza bloccare altri componente o la UI
 Pu嘆 comunicare con altre applicazioni tramite
   apposite interfacce definite
Application Components
Content Provider
Il modello di sicurezza impedisce di leggere o
scrivere i dati (db, file) di unaltra applicazione.
Il Content provider:
   Consente ad una applicazione di rendere
    disponibili i propri dati ad altre applizioni
    presenti nel sistema
   Queryable application data stores
   Content Provider nativi (android.provider)gi pronti
    alluso (REST like content://)
Application Components
Broadcast Receivers

Consentono allapplicazione di ricevere segnali dal
sistema o da altre applicazioni in esecuzione
   Privi di interfaccia utente
   Condivisione dati
   Segnali di sistema (batteria scarica, connettivit ..)
   Broadcast di messaggi custom
   Pu嘆 avviare una Activity
Application Components
Storage
   Internal storage
   External storage (SD card)
   External storage (USB)
   Local Database (SQLite)
Development
E se volessi scrivere applicazioni Android in .NET?




                        +             =
                                           Monodroid
Che cos竪 Mono?
   Implementazione del .NET CLR
   Open source
   Cross platform
   .NET 4.0
    No WPF, Entity Framework, WF, subset di WCF

   Attualmente 3.0.x Series (in beta)
      .NET 4.5
      C# 5.0 - async support
      Entity Framework
      WinRT compatibility API
      Migliorie a vari assembly per la gestione asincrona
Mono+Android=Monodroid
Mono for Android
 Applicazione commerciale di Xamarin
  Free Emulator only
  Professional 399$
  Enterprise 999$
Ambienti di sviluppo
   Plugin di Visual Studio 2010 - Visual Studio 2012
    (no Express)
   MonoDevelop
    Open source Multi-platform Linux, Windows and Mac OSX
Mono+Android=Monodroid
Come funziona Mono for Android?
   Mono VM Runs side by side with Dalvik
   Fornisce un interop engine che collega il mondo C#
    con il mondo Java e viceversa
    Android/Managed Callable Wrappers
Mono+Android=Monodroid
MonoDroid API
 Namespaces (System.* Mono.* Android.* java.*)
 Listener => Eventi .NET
 JavaBean Properties => c# properties
 Android constants => c# enums
 Java.util.collections => System.Collections.Generic
 Threading (Runnables) => Action
 Strongly typed API type safety, intellisense, docs,
 C# (delegates, lambdas, anonymous methods)
 Utilizzo di librerie jar esistenti-Java Binding Library
Mono+Android=Monodroid
MonoDroid API
 Parallel Framework and PLINQ
   LINQ to Objects
   LINQ to XML
   WCF (Silverlight)
   REST Based Web Service
 .NET Web Services (.asmx / SOAP)
 Client-side Odata
 System.Data.SqlClient - System.Data
Mono+Android=Monodroid
Perch辿 utilizzare MonoDroid in ambito Enterprise?
   Produttivit elevata con Visual Studio
   Riutilizzo delle competenze C# + .NET
   .NET Compact Framework => Monodroid
   Android ottima alternativa a Windows CE
   Piattaforma aperta hardware e driver custom
   Semplicit di distribuzione applicazioni
Mono+Android=Monodroid
Perch辿 utilizzare MonoDroid per sviluppare App?
 Produttivit elevata con Visual Studio
 Riutilizzo delle competenze C# + .NET
 Riutilizzo del codice e copertura del 100% del mercato:
Mono+Android=Monodroid
Perch辿 Android?
 PERCHE NON E NECESSARIO AVERE
  HARDWARE DEDICATO PER SVILUPPARE APP!
Risorse
http://developer.android.com
http://xamarin.com/monoforandroid
http://docs.xamarin.com/android/guides
https://github.com/xamarin/monodroid-samples
http://www.droiddraw.org/
Q&A



 Domande?

More Related Content

What's hot (20)

Xamarin Robotics
Xamarin RoboticsXamarin Robotics
Xamarin Robotics
Fabio Cozzolino
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Codemotion
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
Guido Magrin
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
Andrea Tosato
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Gaetano Patern嘆
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
Carmelo Ruota
Xamarin & Cognitive Services 際際滷s
Xamarin & Cognitive Services 際際滷sXamarin & Cognitive Services 際際滷s
Xamarin & Cognitive Services 際際滷s
Francesco Bonacci
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
Gabriele Gaggi
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
Leonardo Alario
Introduzione a Xamarin
Introduzione a XamarinIntroduzione a Xamarin
Introduzione a Xamarin
Beniamino Ferrari
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
Nicol嘆 Carandini
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
Nicol嘆 Carandini
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
luca mezzalira
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Michele Aponte
Beacon & Xamarin
Beacon & XamarinBeacon & Xamarin
Beacon & Xamarin
Lorenzo Giudici
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesDrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
Michel Morelli
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
Michele Aponte
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Xamarin Forms: one technology to rule them all - Matteo Pagani - Codemotion R...
Codemotion
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
Guido Magrin
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
Andrea Tosato
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Gaetano Patern嘆
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
Carmelo Ruota
Xamarin & Cognitive Services 際際滷s
Xamarin & Cognitive Services 際際滷sXamarin & Cognitive Services 際際滷s
Xamarin & Cognitive Services 際際滷s
Francesco Bonacci
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
Raffaele Fanizzi
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
Gabriele Gaggi
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
Leonardo Alario
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
luca mezzalira
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Michele Aponte
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesDrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
Michel Morelli

Viewers also liked (9)

WPF 4 fun
WPF 4 funWPF 4 fun
WPF 4 fun
DotNetMarche
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteria
Mauro Servienti
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
Alessandro Andreose'
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
DotNetMarche
m-v-vm @ dotNetMarche
m-v-vm @ dotNetMarchem-v-vm @ dotNetMarche
m-v-vm @ dotNetMarche
Mauro Servienti
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Fabrizio Callar
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
DotNetMarche
Introduzione WPF
Introduzione WPFIntroduzione WPF
Introduzione WPF
Ercole Palmeri
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
Alessandro Andreose'
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteria
Mauro Servienti
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
DotNetMarche
m-v-vm @ dotNetMarche
m-v-vm @ dotNetMarchem-v-vm @ dotNetMarche
m-v-vm @ dotNetMarche
Mauro Servienti
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Fabrizio Callar
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
DotNetMarche

Similar to Writing apps for android with .net (20)

Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
fdizazzo
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
Emanuel Di Nardo
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
Antonio Di Motta
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
Raffaele Rialdi
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
Emanuele Di Saverio
Android base day1
Android base day1Android base day1
Android base day1
Andrea Zaza
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
Open Makers Italy
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
Diego Giorgini
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
Dominopoint - Italian Lotus User Group
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
Pietro Libro
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
Codemotion
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
Andrea Dottor
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
Paolo Tosato
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
dotnetcode
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
dotnetcode
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
Bergamo Linux Users Group
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
Felice Pescatore
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Microsoft Mobile Developer
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
fdizazzo
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
Emanuel Di Nardo
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
Antonio Di Motta
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
Raffaele Rialdi
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
Emanuele Di Saverio
Android base day1
Android base day1Android base day1
Android base day1
Andrea Zaza
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
Open Makers Italy
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
Diego Giorgini
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
Pietro Libro
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
Codemotion
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
Andrea Dottor
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
Paolo Tosato
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
dotnetcode
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
dotnetcode
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Microsoft Mobile Developer

Writing apps for android with .net

  • 1. Writing apps for Android with .NET Leo Alario http://dotnetside.org/blogs/leo http://twitter.com/leo_alario leo.alario@gmail.com
  • 2. Che cosa 竪 Android? Android 竪 una piattaforma open source(AOSP) composta da: OS di base (Linux like) un middleware software applicazioni di sistema v1.0 10/2008 attualmente v4.2.1 11/2012 Java: Piattaforma di riferimento Android SDK/NDK (strumenti di sviluppo, librerie, un emulatore) + Eclipse + ADT plugin
  • 3. Che cosa 竪 Android? Svariati dispositivi supportati: Architettura x86 v.2.2 Froyo => Architettura ARM6+
  • 5. Architettura Il codice Java (dialetto) viene compilato in 束Dalvik損 byte code (.dex) La Dalvik 束VM損 esegue .dex files Ogni applicazione viene eseguita in un proprio processo Linux Ogni processo viene eseguito in una propria Dalvik VM.
  • 7. Application Components Le Activity Sono uno dei 4 elementi di base che possono costituire un'applicazione Android Sono adatte a quelle applicazioni destinate a una interazione diretta con l'utente Vengono create come oggetti di classe Activity da cui ereditano propriet e metodi Forniscono la UI per una schermata Lapplicazione pu嘆 essere composta da una o pi湛 Activity
  • 8. Application Components Una Activity: Contrassegnata come principale diventa punto d'ingresso dellapplicazione Pu嘆 avviare altre Activity Pu嘆 assumere uno tra i seguenti stati: Running Paused Stopped Ha un ciclo di vita simile ad una pagina ASP.NET
  • 10. Application Components La View Una View e la classe di base per la definizione dellinterfaccia grafica (lists, grids, text boxes, buttons) Linterfaccia grafica di una Activity viene in genere definita da una o pi湛 View Vari tipi di layout disponibili o layout custom estendendo uno preesistente Pu嘆 essere definita da codice (procedurale) oppure tramite un file XML (dichiarativa)
  • 11. Application Components Intent Un Intent rappresenta un meccanismo per descrivere la richiesta di unazione: Voglio aprire un link www.dotnetside.org Voglio aprite lapplicazione 束xyz損 Consente di passare da una Activity ad unaltra Consente di avviare componenti di altre applicazioni Puo essere avviata senza alcun risultato, oppure richiedendo il ritorno di un risultato Consente di passare dati o parametri tra Activity
  • 12. Application Components Service Simile ai Windows services Privo di interfaccia utente Rimane attivo anche quando lapplicazione non 竪 attiva Pu嘆 eseguire lunghi processi in background senza bloccare altri componente o la UI Pu嘆 comunicare con altre applicazioni tramite apposite interfacce definite
  • 13. Application Components Content Provider Il modello di sicurezza impedisce di leggere o scrivere i dati (db, file) di unaltra applicazione. Il Content provider: Consente ad una applicazione di rendere disponibili i propri dati ad altre applizioni presenti nel sistema Queryable application data stores Content Provider nativi (android.provider)gi pronti alluso (REST like content://)
  • 14. Application Components Broadcast Receivers Consentono allapplicazione di ricevere segnali dal sistema o da altre applicazioni in esecuzione Privi di interfaccia utente Condivisione dati Segnali di sistema (batteria scarica, connettivit ..) Broadcast di messaggi custom Pu嘆 avviare una Activity
  • 15. Application Components Storage Internal storage External storage (SD card) External storage (USB) Local Database (SQLite)
  • 16. Development E se volessi scrivere applicazioni Android in .NET? + = Monodroid
  • 17. Che cos竪 Mono? Implementazione del .NET CLR Open source Cross platform .NET 4.0 No WPF, Entity Framework, WF, subset di WCF Attualmente 3.0.x Series (in beta) .NET 4.5 C# 5.0 - async support Entity Framework WinRT compatibility API Migliorie a vari assembly per la gestione asincrona
  • 18. Mono+Android=Monodroid Mono for Android Applicazione commerciale di Xamarin Free Emulator only Professional 399$ Enterprise 999$ Ambienti di sviluppo Plugin di Visual Studio 2010 - Visual Studio 2012 (no Express) MonoDevelop Open source Multi-platform Linux, Windows and Mac OSX
  • 19. Mono+Android=Monodroid Come funziona Mono for Android? Mono VM Runs side by side with Dalvik Fornisce un interop engine che collega il mondo C# con il mondo Java e viceversa Android/Managed Callable Wrappers
  • 20. Mono+Android=Monodroid MonoDroid API Namespaces (System.* Mono.* Android.* java.*) Listener => Eventi .NET JavaBean Properties => c# properties Android constants => c# enums Java.util.collections => System.Collections.Generic Threading (Runnables) => Action Strongly typed API type safety, intellisense, docs, C# (delegates, lambdas, anonymous methods) Utilizzo di librerie jar esistenti-Java Binding Library
  • 21. Mono+Android=Monodroid MonoDroid API Parallel Framework and PLINQ LINQ to Objects LINQ to XML WCF (Silverlight) REST Based Web Service .NET Web Services (.asmx / SOAP) Client-side Odata System.Data.SqlClient - System.Data
  • 22. Mono+Android=Monodroid Perch辿 utilizzare MonoDroid in ambito Enterprise? Produttivit elevata con Visual Studio Riutilizzo delle competenze C# + .NET .NET Compact Framework => Monodroid Android ottima alternativa a Windows CE Piattaforma aperta hardware e driver custom Semplicit di distribuzione applicazioni
  • 23. Mono+Android=Monodroid Perch辿 utilizzare MonoDroid per sviluppare App? Produttivit elevata con Visual Studio Riutilizzo delle competenze C# + .NET Riutilizzo del codice e copertura del 100% del mercato:
  • 24. Mono+Android=Monodroid Perch辿 Android? PERCHE NON E NECESSARIO AVERE HARDWARE DEDICATO PER SVILUPPARE APP!