Sviluppare applicazioni per
dispositivi mobili con
Visual Studio 2005 e
.NET Compact Framework 2.0
Fabio Santini
[email protected]
Categorie dei dispositivi Windows Mobile
– PDA e dispositivi
convertibili
– Dispositivi per la
messaggistica
– Touch Screen
– Tastiere QWERTY
– Applicazioni verticali
– Piattaforma estendibile
– Innanzitutto un telefono
– Input tramite Keypad e
joystick
– Ottimizzati per una
navigazione tra le
funzionalità ad una
mano
– Piattaforma estendibile
– Dedicato a contenuti
multimediali
– Interfaccia grafica
ottimizzata
– Non touch, navigazione
tramite telecomando
– Capacità di video in e
out
Momento
• Più di 10 millioni di dispositivi con il
.NET Compact Framework in ROM
• Più di 200,000 sviluppatori su .NET Compact
Framework
• Più di 600,000 download della Service Pack 1
SP3 Total Installed Base
SP2 Total Installed Base
600,000
500,000
400,000
300,000
200,000
100,000
0
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
Libri
In Full
In Part
Piccolo ma compatibile
• Una copertura del 28% in un 8% di dimensione
• Non supportate
–
–
–
–
–
–
–
Server functionality
ASP.NET
Remoting
Code Access Security
Reflection Emit (scripting)
Individual properties, methods, events – classes factored at member level
Managed C++, J#
Ground-up rewrite
Snapshot & Modify
Execution Engine
System.Threading
JIT, GC, Loader,
assembly cache
System.IO
Microsoft.Win32.
Registry
86% del
.NET
Framework
System.Text.Regex
System.Collections
System.Xml
System.Generic.
Collections
System.Cryptography
Microsoft.DirectX.
Direct3DMobile
System.Data
System.Resources
System.IO.Ports
System.Messaging
System.Net
Windows.Forms
System.Drawing
System.Web.Services
System.String
Microsoft.VisualBasic
91% dell
.NET
Framework
System.Globalization
System.Text
Copy
Compatibilità
• Le applicazioni sviluppate con versioni precedenti del.NET Compact
Framework funzioneranno con la nuova versione
– Il goal è il 100% di compatibilità
• La nuova versione del .NET Compact Framework potrà girare su
versioni precedenti di Windows CE e Windows Mobile
Dispositivi supportati
V1
V2
PocketPC 2000
PocletPC 2002
PocketPC 2003, SE
SmartPhone 2003
WinCE 4.1
WinCE 4.2
WinCE 5.0
Pocket PC 2003 SE
Pocket PC 2005
Smart Phone 2005
WinCE 5.0
Controllli Windows.Forms
•
•
•
•
•
•
•
•
•
•
DateTimePicker
MonthCalendar
DocumentList
LinkLabel
Notification Bubble
Help
RichInk
WebBrowser
DataContainer
UserControl
Funzionalità Windows.Forms
• Supporto per la Clipboard
• Nuove proprietà, metodi e eventi
– Control.DoubleClick
– ToolBarButton tooltips
– Più eventi Treeview
– ComboBox editabile
– Textbox.HideSelection
– UserControl
– FontCollection
• Più supporto per la tastiera
– Form.KeyPreview
– TabIndex, TabStop
Tastiera
integrata
HP
4300
Funzionalità per Smartphone
.NET Compact Framework 2.0
• Gestione dei dati
– SQL Server 2005
Mobile Edition
(Windows Mobile 5.0)
– DataGrid
• Textbox IME switching
– InputModeEditor
• Abilitazione di più
menu item nel menù
di sinistra
Networking e Web service
• Web service
– Aumento di prestazioni dovute alla classe
XmlSerializer
– Supporto per SOAP 1.2
• Autenticazione
– Kerberos e NTLM
– Automaticamente viene selezionato il metodo
più sicuro
WebService service = new WebService();
service.Credentials =
new NetworkCredential(username, password, domain);
• IPv6
Managed D3D Mobile
• Incluso in WinCE 5.0 e le future versioni di
Windows Mobile
– Le API Native derivano da DX8
– Le API Managed derivano da DX9
• Funzionalità
– Accesso completo alle D3DM API
– Supporto ai Fixed point
(Vertex Data, Matrices, Lights,
e Materials)
– Sprite
– Font
– Mesh
– TextureLoader
– Tutorials and Samples
Emulatori
• Novità di VS 2005 Beta 2
• Emulatori ARM (come i device reali)
• DMA Trasport Patch (più veloce)
– Installare
– Da VS 2005 Configurare DMA Transport
• ActiveSync 4.0
• Device Manager nuovo !
– Fare Cradle -> Emulatore == Device !!!
– Es. File Explorer - Sincronizzazione
• Deploy su Device anzichè emulatore
DataSet
• Serializzazione su singola DataTable
• DataSet.Copy()
– Utile per inviare copie per aggiornamento
continuando a lavorare con i dati
• DataSet.GetChanges
– Finalmente
• DataSet.Merge
– Per ottenere modifiche incrementali da un WS
e unirle al DS corrente
DataTable Serialization
• WriteXml, ReadXml
• Una DataTable può essere inviata/ricevuta come
argomento di un web service
private void DeptComplete(string deptName, DataSet ds)
{
DataTable dt = ds.Tables["DeptDetail"];
dt.WriteXml(deptName + ".xml");
dt.Clear();
}
private void DeptRestore(string deptName, DataSet ds)
{
DataTable dt = ds.Tables["DeptDetail"];
dt.Clear();
dt.ReadXml(deptName + ".xml");
}
XML Serializer
• Le classi possono essere serializzate e
deserializzate
– XmlSerializer disponibile nel framework
– Serialize: salva le istanze in XML
– Deserialize: legge l’XML per ricostruire l’istanza
• Controllo sulla Serialization
– Costruttore di default
– Attribute per controllare il comportamento
• XmlElement
• XmlAttribute
XPath
• Supportato da XmlDocument
• Metodi
– SelectNode
• Restituisce un singolo XmlNode in base al match
– SelectNodes
• Lista di matching node
Linguaggio
.NET Compact Framework 2.0
• Nuove funzionalità del linguaggio
–
–
–
–
Generics
Metodi anonimi
Iterators
Partial Types
Generics
• I generics sono classi
e metodi che lavorano
in maniera uniforme
su tipi differenti
• Benefici
– Le variabili sono di un
tipo ben preciso e non
Object
– Non è necessario un
cast (errori in fase di
compilazione)
– Riutilizzo reale del
codice
class Stack<T>
{
private T[] store;
private int size;
public Stack() {
store = new T[10];
size = 0;
}
public void Push(T x) {
// push code goes here
}
public T Pop() {
return store[--size];
}
}
void Add(Stack<int> s) {
int x = s.Pop();
int y = s.Pop();
s.Push(x+y);
}
Metodi anonimi
Blocchi di codice incapsulati in delegate
Senza metodi anonimi
button.Click
+= new EventHandler(ProcessClick);
// separate method
void ProcessClick(object sender, EventArgs e)
{
// increment a counter or other action
}
Con metodi anonimi
button.Click += new EventHandler(sender, args)
{
// increment a counter or other action
};
Partial Type
• Divide la definizione di un tipo in file separati
• Il compilatore C# combina i file per creare un unica classe
• La separazione aiuta a mantenere aggiornato il codice
sopratutto in presenza di generaziona automatica
Cliente1.cs
Cliente2.cs
public partial class Cliente
{
public void GetOrders()
{
public partial class
Cliente
{
public void
GetInvoice()
{
}
}
}
}
Visual Studio 2005
.NET Compact Framework 2.0
Nuove API Managed in
Windows Mobile 5.0
Pocket Outlook
Microsoft.WindowsMobile.PocketOutlook
• Wrapper sul Pocket Outlook Object Model
(POOM)
– Espone molte funzionalità di Pocket Office
• Facilita l’uso delle informazioni dentro al PIM
– Appuntamenti, contatti e task
– Account di Email e SMS e messaggi
– Recipienti e allegati
• La classe OutlookSession è la porta
d’ingresso
– Wrapper dell’application objecy di Pocket
Outlook
Le classi di Pocket Outlook
Pocket Outlook
PocketOutlook.MessageInterception
• Fornisce un meccanismo di processo dei
messsaggi
–
–
–
–
Intercetta I messaggi SMS in ingresso
Può eseguire specifiche applicazioni
E’ possibile impostare dei criteri di selezione
Può togliere il messaggio dalla “coda”
• Utile in tante situazioni
– Evidenziare alcuni messaggi
– Meccanismi di Push dal server
– Tasporto di semplici informazioni
• configurazione
Le classi Message Interception
Forms
Microsoft.WindowsMobile.Forms
• Fornisce una serie di nuove finestre di
dialogo
– Foto dalla camera digitale, scelta di un
contatto, selezione di un immagine
Forms
Nuove dialog
Forms
Esempio
// using Microsoft.WindowsMobile.Forms;
// using Microsoft.WindowsMobile.PocketOutlook;
CameraCaptureDialog cameraCaptureDialog = new CameraCaptureDialog();
cameraCaptureDialog.ShowDialog();
this.image = cameraCaptureDialog.FileName;
this.imageDisplay.Image = new Bitmap( this.image );
ChooseContactDialog chooseContactDialog = new ChooseContactDialog();
chooseContactDialog.ShowDialog();
this.contact = chooseContactDialog.SelectedContact;
this.contactName.Text = this.contact.FileAs;
SelectPictureDialog selectPictureDialog = new SelectPictureDialog();
selectPictureDialog.ShowDialog();
this.picture = selectPictureDialog.FileName;
this.pictureDisplay.Image = new Bitmap( this.picture );
Nuove API Managed in
Windows Mobile 5.0
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN
THIS SUMMARY.
Scarica

Sviluppare applicazioni per dispositivi mobili con Visual