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
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: