Utilizzare le API di connettività con.NET Compact Framework Marco Frontini...

45

Transcript of Utilizzare le API di connettività con.NET Compact Framework Marco Frontini...

Page 1: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.
Page 2: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Utilizzare le API di Utilizzare le API di connettività con .NET connettività con .NET Compact FrameworkCompact Framework

Marco FrontiniMarco [email protected]@softandroll.itwww.softandroll.itwww.softandroll.it

Fabio SantiniFabio [email protected]@microsoft.comwww.fsantini.netwww.fsantini.nethttp://blogs.msdn.com/fabiosantinihttp://blogs.msdn.com/fabiosantini

Page 3: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

AgendaAgenda

• UtilityUtility • P/Invoke per le API di connettivitàP/Invoke per le API di connettività• La classe MessageWindows La classe MessageWindows • API per la gestione degli SMS e delle chiamateAPI per la gestione degli SMS e delle chiamate• Comunicazioni IrDAComunicazioni IrDA• Intercettare un SMSIntercettare un SMS• Bluetooth in Windows Mobile 2003 con lo Smart Device Bluetooth in Windows Mobile 2003 con lo Smart Device

Framework 1.3Framework 1.3 • Connection ManagerConnection Manager• Nuove api del CF 2.0 per la gestione degli SMS, Phone , Nuove api del CF 2.0 per la gestione degli SMS, Phone ,

BluetoothBluetooth• Notification BrokerNotification Broker

Page 4: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Utility utili Utility utili

• vxUtil – Network/InternetvxUtil – Network/Internet• vxIpConfig – con release/renewvxIpConfig – con release/renew• vxSnmp – read/update value SNMPvxSnmp – read/update value SNMP• vxSniffer – Network monitorvxSniffer – Network monitor• PocketHost – PocketHost –

http://www.handango.com/PlatformProductDetail.jshttp://www.handango.com/PlatformProductDetail.jsp?p?siteId=1&jid=F735FE44921F5D6A184C7CC75BXBF2siteId=1&jid=F735FE44921F5D6A184C7CC75BXBF2AX&platformId=2&productType=2&catalog=0&AX&platformId=2&productType=2&catalog=0&sectionId=0&productId=54305sectionId=0&productId=54305

Page 5: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Chiamare codice unmanagedChiamare codice unmanaged P/Invoke (C#) P/Invoke (C#)

• Utilizzare Utilizzare platform invokeplatform invoke (P/Invoke) per chiamare codice (P/Invoke) per chiamare codice unmanagedunmanaged• dichiarare la dll esterna tramite l’attributo dichiarare la dll esterna tramite l’attributo DllImportDllImport• segnare il metodo come “static extern”segnare il metodo come “static extern”• chiamare il metodo normalmentechiamare il metodo normalmente• possono essere chiamate solo DLL non COMpossono essere chiamate solo DLL non COM

using System.Runtime.InteropServices;

public class DoStuff{ [DllImport("coredll.dll")] public static extern int SetCursor(int cursorHandle);

public void Warp(int handle) { SetCursor(handle); }}

NamespaceDllImport

rendere l’APIdisponibile

chiamata

Page 6: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Gestione degli erroriGestione degli errori• DllImportDllImport può rendere gli errori Win32 disponibili può rendere gli errori Win32 disponibili

• Impostare Impostare SetErrorSetError a True per mappare gli errori Win32 a True per mappare gli errori Win32• chiamare chiamare Marshal.GetLastWin32ErrorMarshal.GetLastWin32Error

using System.Runtime.InteropServices;

public class DoStuff{ [DllImport("coredll.dll", SetLastError = True)] public static extern int SetCursor(int cursorHandle);

public void Warp(int handle) { SetCursor(handle); if (Marshal.GetLastWin32Error() != 0) // handle error }}

chiamata

mappare glierrori

Controlloerrore

Page 7: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Supporto al marshalling di .NET Supporto al marshalling di .NET CFCF

• CF supporta solo i tipi baseCF supporta solo i tipi base• marshalling by-value molto limitatomarshalling by-value molto limitato

• deve essere un 32 bits (4 bytes) o menodeve essere un 32 bits (4 bytes) o meno• deve essere un integral deve essere un integral

• marshalling by-reference richiesto per molti tipimarshalling by-reference richiesto per molti tipi• richiede un puntatore nel metodo Win32richiede un puntatore nel metodo Win32• CF automaticamente ‘blocca’ i parametriCF automaticamente ‘blocca’ i parametri

• si assicura che il garbage collector non liberi quella memoriasi assicura che il garbage collector non liberi quella memoria

• classi e strutture presentano differenti problematicheclassi e strutture presentano differenti problematiche• spesso è richiesto un marshalling manualespesso è richiesto un marshalling manuale

Page 8: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

MarshallingMarshallingCF TypeCF Type C# TypeC# Type VB TypeVB Type Win32 TypeWin32 Type ByValByVal ByRefByRef

BooleanBoolean boolbool BooleanBoolean BYTEBYTE YesYes Yes (*)Yes (*)

Int16Int16 shortshort ShortShort SHORTSHORT YesYes Yes (*)Yes (*)

Int32Int32 intint IntegerInteger INT32INT32 YesYes Yes (*)Yes (*)

Int64Int64 longlong LongLong INT64INT64 YesYes Yes (*)Yes (*)

ByteByte bytebyte ByteByte BYTEBYTE YesYes Yes (*)Yes (*)

CharChar charchar CharChar WCHARWCHAR YesYes Yes (*)Yes (*)

SingleSingle floatfloat SingleSingle FLOATFLOAT NoNo Yes (*)Yes (*)

DoubleDouble doubledouble DoubleDouble DOUBLEDOUBLE NoNo Yes (*)Yes (*)

StringString stringstring StringString WCHAR *WCHAR * YesYes NoNo

StringBuilderStringBuilder StringBuilderStringBuilder StringBuilderStringBuilder WCHAR *WCHAR * YesYes NoNo

User Defined User Defined Value TypeValue Type structstruct StructureStructure struct or classstruct or class NoNo Yes (*)Yes (*)

classclass ClassClass ClassClass struct or classstruct or class Yes (*)Yes (*) NoNo

Array of Value Array of Value TypeType T[ ]T[ ] T( )T( ) T*/T[ ]T*/T[ ] YesYes NoNo

Page 9: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Lavorare con i messaggi WindowsLavorare con i messaggi Windows

• La maggior parte dell API richiede l’uso di un La maggior parte dell API richiede l’uso di un window handlewindow handle• I window handles (HWND) sono al centro I window handles (HWND) sono al centro

dell’architettura di Windowsdell’architettura di Windows• L’implementazione dei controlli del CF previene l’uso L’implementazione dei controlli del CF previene l’uso

di messaggi personalizzati di messaggi personalizzati • nessun accesso al sistema interno di gestione dei messagginessun accesso al sistema interno di gestione dei messaggi• nessun accesso a HWNDnessun accesso a HWND• nessuna personalizzazione del comportamentonessuna personalizzazione del comportamento

• e’ necessaria una classe speciale per gestire i e’ necessaria una classe speciale per gestire i messaggimessaggi

• Microsoft.WindowsCE.Forms.MessageWindowMicrosoft.WindowsCE.Forms.MessageWindow

Page 10: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

MessageWindowMessageWindow

• MessageWindow incapsula le funzionalità dei MessageWindow incapsula le funzionalità dei messaggi di windowsmessaggi di windows• La proprietà Hwnd è il window handleLa proprietà Hwnd è il window handle• si può fare l’override della WndProc per processare i si può fare l’override della WndProc per processare i

messaggimessaggi• riceve i messaggi in una strutturariceve i messaggi in una struttura• chiama la WndProc base per ottenere il comportamento di chiama la WndProc base per ottenere il comportamento di

defaultdefault

• metodi statici usati per send/postmetodi statici usati per send/post• MessageWindow.SendMessageMessageWindow.SendMessage• MessageWindow.PostMessageMessageWindow.PostMessage

Page 11: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

MessageWindow class MessageWindow class personalizzatapersonalizzata

public class MyMessageWin : MessageWindow{ const int WM_USER = 1024; public const int WM_DOWORK + 1;

protected override void WndProc(ref Message m) { base.WndProc (ref m); if (m.Msg == WM_DOWORK) { // m.WParam & m.LParam } }}

Page 12: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Usare la MessageWindow classUsare la MessageWindow class

public void DoWork(){ MyMessageWin _theWin = new MyMessageWin();

IntPtr longVal = new IntPtr(100);

Message m = Message.Create(_theWin.Hwnd, _theWin.WM_DOWORK, IntPtr.Zero, longVal);

MessageWindow.SendMessage(ref m); }

crea un istanza

handleSi utilizzano sempre gli

IntPtr

message

values

invio del messaggio

Page 13: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

MessageWindowsMessageWindowsMessageWindowsMessageWindows

Page 14: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

IrdaIrda

• Comunicazione tra dispositivi, stampanti Comunicazione tra dispositivi, stampanti (specialmente nei centri commerciali (specialmente nei centri commerciali ) e ) e ActiveSyncActiveSync

• Discovering dei dispositivi nel raggio d’azioneDiscovering dei dispositivi nel raggio d’azione

Page 15: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Demo IrDADemo IrDADemo IrDADemo IrDA

Page 16: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Short Message Service (SMS)Short Message Service (SMS)

• Usato per messaggi cortiUsato per messaggi corti• Capacità di concatenare messaggiCapacità di concatenare messaggi

• APIAPI• Text – SMS API (sms.h) per inviareText – SMS API (sms.h) per inviare• Text – Inbox Rule per intercettare i messaggiText – Inbox Rule per intercettare i messaggi

• Dopo un esempio con Fabio (CF 2.0)Dopo un esempio con Fabio (CF 2.0)

Page 17: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

SMS APISMS APISend Text MessageSend Text Message

• Low level API under all other SMS servicesLow level API under all other SMS services

SMS_HANDLE hsms = NULL;SMS_HANDLE hsms = NULL;hr = SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &hsms, 0);hr = SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &hsms, 0);

SMS_ADDRESS smsaAddress;SMS_ADDRESS smsaAddress;smsaAddress.smsatAddressType = SMSAT_INTERNATIONAL;smsaAddress.smsatAddressType = SMSAT_INTERNATIONAL;wcscpy(smsaAddress.ptsAddress, pszName); wcscpy(smsaAddress.ptsAddress, pszName);

TEXT_PROVIDER_SPECIFIC_DATA tpsData;TEXT_PROVIDER_SPECIFIC_DATA tpsData;tpsData.psMessageClass = PS_MESSAGE_CLASS1;tpsData.psMessageClass = PS_MESSAGE_CLASS1;psData.psReplaceOption = PSRO_NONE;psData.psReplaceOption = PSRO_NONE;

hr = hr = SmsSendSmsSend(hsms, NULL, &smsaAddress, NULL,(hsms, NULL, &smsaAddress, NULL,(BYTE*) pszMsg, wcslen(pszMsg) * sizeof(WCHAR),(BYTE*) pszMsg, wcslen(pszMsg) * sizeof(WCHAR),(BYTE*) &tpsData, sizeof(tpsData), (BYTE*) &tpsData, sizeof(tpsData), SMSDE_OPTIMAL, SMS_OPTION_DELIVERY_NONE,SMSDE_OPTIMAL, SMS_OPTION_DELIVERY_NONE,&smsmidMessageID)&smsmidMessageID)

hr = SmsClose(hsms);hr = SmsClose(hsms);

Page 18: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Classe Managed per SMS e PhoneClasse Managed per SMS e PhoneClasse Managed per SMS e PhoneClasse Managed per SMS e Phone

Page 19: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

InboxInboxApplicationApplication

Rule 1 DLLRule 1 DLL

InboxInboxApplicationApplication

Rule 1 DLLRule 1 DLL

InboxInboxApplicationApplication

Rule 1 DLLRule 1 DLL

Rule 2 DLLRule 2 DLL

SMSSMSTransportTransport

Inbox Rule ClientInbox Rule Client Ricezione di SMSRicezione di SMS

Your RuleYour RuleDLLDLL

Page 20: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

La nostra DLLLa nostra DLLRecupera il Recupera il

Body del Body del MessaggioMessaggio

E’ il messaggioE’ il messaggioche vogliamo?che vogliamo?

L’applicaziL’applicazione è in one è in

esecuzioneesecuzione??

Esegue Esegue l’applicazionel’applicazione

Passa il body Passa il body all’applicazione all’applicazione utilizzando vari utilizzando vari

sistemisistemi

SiSi SiSi

NoNo

Lo lascia Lo lascia andare verso la andare verso la

InboxInbox

NoNo

Inbox Rule ClientInbox Rule Client

Page 21: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Intercettare i messaggi SMSIntercettare i messaggi SMS +14250010001 !!!!+14250010001 !!!!

Intercettare i messaggi SMSIntercettare i messaggi SMS +14250010001 !!!!+14250010001 !!!!

Page 22: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

BluetoothBluetooth

• BluetoothBluetooth• Corto raggio (100 metri max)Corto raggio (100 metri max)• Massimo 16 dispositiviMassimo 16 dispositivi• 1 Mbps1 Mbps• Peer to peerPeer to peer• Autenticazione e CriptingAutenticazione e Cripting

Page 23: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Le API BluetoothLe API Bluetooth

• Le API dei dispositiviLe API dei dispositivi• BthSetMode()BthSetMode()• BthGetMode()BthGetMode()

• API per la gestione delle porte COMAPI per la gestione delle porte COM• Utilizzare WinsockUtilizzare Winsock• Utilizzare le interfaccie grafiche standardUtilizzare le interfaccie grafiche standard

Page 24: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Le API BluetoothLe API Bluetooth

• int BthSetMode( DWORD dwMode )int BthSetMode( DWORD dwMode )• Imposta la modalità BluetoothImposta la modalità Bluetooth

• int BthGetMode( DWORD* pdwMode )int BthGetMode( DWORD* pdwMode )• Recupera la modalità corrente del BluetoothRecupera la modalità corrente del Bluetooth

• ModalitàModalità• BTH_POWER_OFFBTH_POWER_OFF• BTH_CONNECTABLEBTH_CONNECTABLE• BTH_DISCOVERABLEBTH_DISCOVERABLE

Page 25: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Connection ManagerConnection Manager

Connection Manager

Voice

• Connessione “intelligente” Connessione “intelligente” • Network based vs. Connection basedNetwork based vs. Connection based

• Ogni CSP ha un suo criterio di connessioneOgni CSP ha un suo criterio di connessione• costo, larghezza di banda, latenza, tempo di connessione, etc.costo, larghezza di banda, latenza, tempo di connessione, etc.• Posso essere aggiunti altri CSPPosso essere aggiunti altri CSP

• Configurazioni predefiniteConfigurazioni predefinite• Impostate dai carrie o dalle aziendeImpostate dai carrie o dalle aziende

RAS Proxy PPTP GPRS etc

Planner

ConnectionServiceProviders

Page 26: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Connection ManagerConnection Manager

• Il Connection Manager sostituisce le RAS APIIl Connection Manager sostituisce le RAS API• Gestisce l’intero processo di connessioneGestisce l’intero processo di connessione• Le connessioni sono dichiarate a seconda della Le connessioni sono dichiarate a seconda della

destinazione (Internet o Corporate Network)destinazione (Internet o Corporate Network)• Il Connection manager gestisce connessioni che Il Connection manager gestisce connessioni che

prevedono più “salti”prevedono più “salti”• Esempio di connessione ad una rete corporate: il connection Esempio di connessione ad una rete corporate: il connection

manager attiva la connessione GPRS verso internet e in seguito manager attiva la connessione GPRS verso internet e in seguito attiva la connessione PPTP verso l’azienda.attiva la connessione PPTP verso l’azienda.

• Connection manager può utilizzare l’opzione “desktop pass Connection manager può utilizzare l’opzione “desktop pass through” attraverso Active Sync.through” attraverso Active Sync.

Page 27: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Connection Manager

Connection Manager EngineConnection Manager Engine

VoiceVoice RASRAS ProxyProxy PPTPPPTP GPRSGPRS etcetc

PlannerPlanner ConfigurationConfigurationManagerManager

UI del Connection ManagerUI del Connection Manager

XMLXMLProvisioningProvisioningDocumentDocument

URLURLMapperMapper

ApplicazioneApplicazione

Page 28: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Connection ManagerConnection Manager

• ConnMgrMapURL()ConnMgrMapURL()• Determina la destinazione corretta a seconda dell’URL Determina la destinazione corretta a seconda dell’URL

che viene utilizzatoche viene utilizzato• E’ importante usare questa API per stabilire se la E’ importante usare questa API per stabilire se la

connessione è internet o intranetconnessione è internet o intranet

• ConnMgrEstablishConnection()ConnMgrEstablishConnection()• Utilizzata per stabilire la connessioneUtilizzata per stabilire la connessione• Gestisce gli handle durante tutta la connessioneGestisce gli handle durante tutta la connessione• ConnMgrEstablishConnectionSync()ConnMgrEstablishConnectionSync()

Page 29: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Connection ManagerConnection Manager

• ConnMgrReleaseConnection()ConnMgrReleaseConnection()• Chiude la connessioneChiude la connessione

• ConnMgrConnectionStatus()ConnMgrConnectionStatus()• Determina lo stato della connessioneDetermina lo stato della connessione• Notifica cambiamenti attraverso eventi o messaggi Notifica cambiamenti attraverso eventi o messaggi

windowswindows• Controllare lo stato per determinare una eventuale Controllare lo stato per determinare una eventuale

disconnessionedisconnessione

Page 30: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Connection ManagerConnection ManagerConnection ManagerConnection Manager

Page 31: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Phone.TalkPhone.Talk

• Proprietà e eventi recuperabili tramiteProprietà e eventi recuperabili tramiteState & Notification BrokerState & Notification Broker

Dim phone As New Phonephone.Talk( “055-4400494” )

Page 32: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

E-Mail e SMSE-Mail e SMS

SmsMessage msg = new SmsMessage();

msg.To.Add( new Recipient(“3495555555"));

msg.Body = “Ciao Nello !";

msg.Send();

Page 33: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Contact != RecipientContact != RecipientContact myCustomer;// ...EmailMessage msg = new EmailMessage();msg.To.Add( myCustomer ); // Non Compilamsg.To.Add( new Recipient( myCustomer.Email2Address ) ); // OK

Page 34: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

SMS/Email: interazione con SMS/Email: interazione con l’utentel’utente

• Compose FormCompose Form• Visualizzazione InboxVisualizzazione Inbox• SincronizzareSincronizzare

Page 35: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Intercept SMSIntercept SMS

MessageInterceptor sms;

void Form_Load( ... ){ sms = new MessageInterceptor(); //... Proprietà opzionali sms.MessageReceived += new EventHandler(sms_MessageReceived);}

void sms_MessageReceived(...){ //... Arrivato messaggio !!!}

Page 36: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Che ne faccio del messaggio ?Che ne faccio del messaggio ?

MessageInterceptor sms;

void Form_Load( ... ){ sms = new MessageInterceptor(); sms.InterceptionAction = InterceptionAction.NotifyAndDelete; sms.MessageReceived += new EventHandler(sms_MessageReceived);}

void sms_MessageReceived(...){ //... Handle incoming message}

Page 37: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Bluetooth in Windows Mobile Bluetooth in Windows Mobile 5.05.0

• Utilizza la UI per fare il “pairing”Utilizza la UI per fare il “pairing”• Un dispositivo pubblica il servizioUn dispositivo pubblica il servizio

• New BluetoothService( GUID )New BluetoothService( GUID )

• Un dispositivo cerca i serviziUn dispositivo cerca i servizi• GetPairedDevices()GetPairedDevices()

• E si connette tramite il GIUDE si connette tramite il GIUD• BluetoothDevice.Connect( GUID )BluetoothDevice.Connect( GUID )

• A quel punto si ottiene un NetworkStream da utilizzare A quel punto si ottiene un NetworkStream da utilizzare per trasferire i datiper trasferire i dati

Page 38: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Nuove classi Windows Mobile 5.0Nuove classi Windows Mobile 5.0SMS e PhoneSMS e Phone

Nuove classi Windows Mobile 5.0Nuove classi Windows Mobile 5.0SMS e PhoneSMS e Phone

Page 39: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Gestione dello statoGestione dello statoMicrosoft.WindowsMobile.StatusMicrosoft.WindowsMobile.Status

• Nuovo State and Notification BrokerNuovo State and Notification Broker• Accesso allo stato di sistema e delle Accesso allo stato di sistema e delle

applicazioniapplicazioni• Supporta la notifica delle modifiche dello Supporta la notifica delle modifiche dello

statostato• Recupera e aggiorna i dettagli sui vari statiRecupera e aggiorna i dettagli sui vari stati• Condivide lo stato tra più applicazioniCondivide lo stato tra più applicazioni

• Oggi esiste ma è un casino Oggi esiste ma è un casino • Sono voci di registro che cambiano Sono voci di registro che cambiano

costantementecostantemente

Page 40: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Stati predefinitiStati predefiniti

• Più di 140 stati predefinitiPiù di 140 stati predefiniti• AppuntamentiAppuntamenti

• aggiunta, modifica, conflitti, etc. aggiunta, modifica, conflitti, etc.

• HardwareHardware• Camera, tastiera, cradle, headset, car kitCamera, tastiera, cradle, headset, car kit

• MessaggiMessaggi• Email, SMS, MMS, voice, ActiveSyncEmail, SMS, MMS, voice, ActiveSync

• PhonePhone• Profili, chiamate, segnale, GPRS, logProfili, chiamate, segnale, GPRS, log

Page 41: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

La classe SystemStateLa classe SystemState

• SystemState gestisce gli stati predefinitiSystemState gestisce gli stati predefiniti• RegistryState supporta stati customRegistryState supporta stati custom

Page 42: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Condizioni sugli statiCondizioni sugli stati

• Può restringere la notifica applicando delle Può restringere la notifica applicando delle condizionicondizioni• Confronto tra I valori di uno statoConfronto tra I valori di uno stato• Di default usa AnyChangeDi default usa AnyChange

Page 43: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Tipi di notificaTipi di notifica

• Notifica temporaneaNotifica temporanea• L’applicazione viene notificata quando è in esecuzioneL’applicazione viene notificata quando è in esecuzione• Viene chiamato un event handlerViene chiamato un event handler• Si perde dopo un resetSi perde dopo un reset

• Notifica persistenteNotifica persistente• L’applicazione viene eseguita se non è già in esecuzioneL’applicazione viene eseguita se non è già in esecuzione• Usa i parametri a riga di comandoUsa i parametri a riga di comando• Rimane dopo un soft resetRimane dopo un soft reset

Page 44: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

Notification BrokerNotification BrokerNotification BrokerNotification Broker

Page 45: Utilizzare le API di connettività con.NET Compact Framework Marco Frontini marco.frontini@softandroll.it  Fabio Santini fsantini@microsoft.com.

© 2004 Microsoft Corporation. All rights reserved.© 2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.Content created by 3 Leaf SolutionsContent created by 3 Leaf Solutions