SlideShare uma empresa Scribd logo
1 de 26
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
• L’applicazione può essere composta da una o più
  Activity
Application Components
Una Activity:
• Contrassegnata come principale diventa punto
   d'ingresso dell’applicazione
• 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
    dell’interfaccia grafica (lists, grids, text
    boxes, buttons)
• L’interfaccia 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 “un’azione”:
      Voglio aprire un link www.dotnetside.org
      Voglio aprite l’applicazione «xyz»
•   Consente di passare da una Activity ad un’altra
•   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 l’applicazione 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 un’altra 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
    all’uso (REST like content://)
Application Components
Broadcast Receivers

Consentono all’applicazione 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?

Mais conteúdo relacionado

Mais procurados

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 IntroductionGuido Magrin
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione XamarinAndrea 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 controCarmelo Ruota
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesFrancesco Bonacci
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with XamarinRaffaele 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 HTML5Gabriele Gaggi
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architectureLeonardo 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 MilanoGabriele 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-platformGabriele Gaggi
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobililuca 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 ServicesMichel Morelli
 

Mais procurados (20)

Xamarin Robotics
Xamarin RoboticsXamarin Robotics
Xamarin Robotics
 
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...
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 
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...
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
 
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
 
C# Mobile application architecture
C# Mobile application architectureC# Mobile application architecture
C# Mobile application architecture
 
Introduzione a Xamarin
Introduzione a XamarinIntroduzione a Xamarin
Introduzione a Xamarin
 
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
 
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
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
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-...
 
Beacon & Xamarin
Beacon & XamarinBeacon & Xamarin
Beacon & Xamarin
 
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal ServicesDrupalDay 2014: AngularJS + IonicFramework + Drupal Services
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
 
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
 

Destaque

Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaMauro Servienti
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - PrismDotNetMarche
 
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-ViewModelDotNetMarche
 

Destaque (9)

WPF 4 fun
WPF 4 funWPF 4 fun
WPF 4 fun
 
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteria
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
 
m-v-vm @ dotNetMarche
m-v-vm @ dotNetMarchem-v-vm @ dotNetMarche
m-v-vm @ dotNetMarche
 
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 ...
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 
Introduzione WPF
Introduzione WPFIntroduzione WPF
Introduzione WPF
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 

Semelhante a Writing apps for android with .net

Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventorfdizazzo
 
Android base day1
Android base day1Android base day1
Android base day1Andrea 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 appsDotNetCampus
 
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
 
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 GoogleDiego 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 MobilePietro 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 AppsAndrea Dottor
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
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 Appdotnetcode
 
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 progettoMicrosoft Mobile Developer
 

Semelhante a Writing apps for android with .net (20)

Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
 
Mobile e Smart Client
Mobile e Smart ClientMobile e Smart Client
Mobile e Smart Client
 
Android base day1
Android base day1Android base day1
Android base day1
 
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
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
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
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 
.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
 
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...
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
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
 
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
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
 

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 • L’applicazione può essere composta da una o più Activity
  • 8. Application Components Una Activity: • Contrassegnata come principale diventa punto d'ingresso dell’applicazione • 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 dell’interfaccia grafica (lists, grids, text boxes, buttons) • L’interfaccia 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 “un’azione”: Voglio aprire un link www.dotnetside.org Voglio aprite l’applicazione «xyz» • Consente di passare da una Activity ad un’altra • 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 l’applicazione 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 un’altra 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 all’uso (REST like content://)
  • 14. Application Components Broadcast Receivers Consentono all’applicazione 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! 