Presentation is loading. Please wait.

Presentation is loading. Please wait.

.NET Mobile Application Development Messaging & Communication from Mobile Devices.

Similar presentations


Presentation on theme: ".NET Mobile Application Development Messaging & Communication from Mobile Devices."— Presentation transcript:

1 .NET Mobile Application Development Messaging & Communication from Mobile Devices

2 Introduction  In previous lectures and practical sessions we have considered >Developing applications using the.NET Compact Framework >Consuming XML Web service in mobile applications  In this session we will consider other forms of communication from mobile devices, including >Message queuing >SMS (text) messaging >Telephone features

3 Mobile Device Communication  Mobile devices can consume distributed computing technologies used by desktop devices  Unlike desktops, mobile devices also have a rich suite of communication facilities >Voice telephony >GSM/GPRS data transfer >SMS/EMS/MMS messaging >Ad-hoc Bluetooth networking  Mobile devices expose these communication facilities to the developer >A basis for rich, flexible applications?

4 Windows Mobile Platform  We will use the Windows Mobile (WinCE) platform to illustrate the use of these communication facilities  Other platforms, e.g. Java MicroEdition also offer similar features to the developer  Microsoft Mobile Platform >derivative(s) of Windows CE.NET >Operating System contains API’s to access the unique hardware capabilities and communication facilities of mobile devices ­API’s are unmanaged code; no managed equivalents exist ­we must use the P/Invoke feature to use these features from.NET Compact Framework

5 Platform Invoke (P/Invoke)  P/Invoke >allows managed code to invoke unmanaged functions residing in DLLs  Three stages involved >Declaration ­Specify signature of unmanaged function that will be called as a static extern function ­Uses the DllImportAttribute tag, including the DLL name >Invocation ­Unmanaged function invoked by calling it as normal, specifying any parameters as types expected by unmanaged code ­May need to declare managed types to replicate unmanaged ones and transform between them as necessary ­Unmanaged function invocation often wrapped in method of utility class >Error handling ­P/Invoke may generate MissingMethodException or NotSupportedException ­Unmanaged DLL may produce an error; retrieve error number using Marshal.GetLastWin32Error()

6 P/Invoke Data Marshalling  Marshalling >Process of moving data between managed and unmanaged code >Data passed by value or by reference >Automatic for value types, reference types composed of simple value types, one dimensional arrays of simple types >Programmer must assist in marshalling more complex types e.g. reference types composed of reference types C# TypeC++ type, pass by valueC++ type, pass by ref byteBYTE, charBYTE*, char* short, ushortSHORT, WORDSHORT*, WORD* int, uintint, DWORDint*, DWORD longunsupportedINT64* floatunsupportedfloat* doubleunsupporteddouble* IntPtrPVOIDPVOID* boolBYTEBYTE* stringLPCWSTRunsupported

7 P/Invoke Example  Retrieving power status of a mobile device >Uses the unmanaged GetSystemPowerStatusEx function in the “coredll” DLL  Declaration >using System.Runtime.InteropServices ; to import P/Invoke functionality >Managed SYSTEM_POWER_STATUS_EX type to hold data values produced by the call to GetSystemPowerStatusEx >Signature of GetSystemPowerStatusEx, with DllImportAttribute tag  Invocation >Need to pass to the function a boolean flag and an instance of SYSTEM_POWER_STATUS_EX which it will populate with appropriate data values  Doing something similar on a Java platform >is significantly more complicated >requires much more plumbing code and design time effort

8 Message Queuing & Mobile Devices  Message Queuing is a useful technique for asynchronous communication between distributed components  Windows CE supports Message Queuing through unmanaged operating system functions in coredll.DLL >CreateMsgQueue >OpenMsgQueue >CloseMsgQueue >ReadMsgQueue >WriteMsgQueue  P/Invoke needed to call these from managed code  Message queues are >fast and thread safe >useful for interprocess communication

9 Message Queuing Example  Uses the unmanaged functions in the “coredll” DLL >CreateMsgQueue >ReadMsgQueue >WriteMsgQueue  Follows typical approach to using P/Invoke >Declares managed types to correspond to required unmanaged types >Places calls to unmanaged code in a managed wrapper >Clients of the wrapper do not need to know that they are using with unmanaged code >All handling of errors due to unmanaged code occurs in one place  One thread creates a message queue and sends a message to it  Second (UI) thread reads messages from the queue

10 Making Voice Calls  All mobile phones support voice calls >Programmatic control is possible  Windows Mobile has Phone API for controlling voice calls >Unmanaged API; need to use P/Invoke >Good example of a P/Invoke wrapper for the Phone API on MSDN site ­Enables placing of calls and retrieving information from SIM card ­Our example uses this to create a simple form application for placing a phone call to a chosen numberexample

11 SMS Messaging  Short Message Service (SMS) >Store and forward text messaging system supported by all mobile phones >Maximum 160 character text message >Messages routed through Short Message Service Centre (SMSC) to recipient’s phone ­Acts as a Post Office; queues messages for later delivery if recipient is unavailable >Two-way communication; replies possible  Enhanced Message Service (EMS) >allows messages to include formatted text, pictures, animation, sounds and ring tones.  Programmatic control possible for >Sending SMS messages >Processing received SMS messages

12 Windows Mobile SMS Messaging  Unmanaged SMS API provided by Windows CE  Good sample wrapper on MSDN site >Shows basics of setting up the SMS messaging component and sending a message >Our example uses this wrapper to send a message to a chosen phone numberexample  Processing of incoming SMS messages is also possible  Incoming SMS messages are placed in device Inbox >SMS API has pluggable architecture ­Developer can write plug-in filter through which SMS messages pass on way to Inbox ­Allows incoming SMS messages to be trapped, handled and removed by an application before they reach the Inbox ­Allows SMS messaging to be used as a general purpose bi-directional asynchronous communication channel between mobile clients

13 Demo: SMS Battleships Game  Demo given at Microsoft Mobility Developer conference 2003 >CLI201 SMS Message Interception Demo  Shows use of SMS for general communication amongst distributed components on mobile devices  Free SMS sending services exist on the Web >Calling these appropriately from a desktop app could provide a unidirectional communication channel to mobile clients

14  In this session we have discussed >Calling unmanaged code from managed applications using P/Invoke >Typical communication features available on mobile devices >Programmatically accessing these features using P/Invoke  In the next session we consider >Using and manipulating data in.NET applications >Accessing databases in.NET >Database support features for mobile devices Summary

15 Reading and Resources Reading  Wigley & Wheelwright, Microsoft.NET Compact Framework Core Reference, Microsoft Press, 2003 Resources  Using Connection Manager to Establish Data Calls, http://msdn.microsoft.com/library/en-us/dnppcgen/html/conmgrdtac.asp?frame=true http://msdn.microsoft.com/library/en-us/dnppcgen/html/conmgrdtac.asp?frame=true  Sending SMSs from your Microsoft.NET Compact Framework-based Applications, http://msdn.microsoft.com/library/en- us/dnnetcomp/html/netcfsendsms.asp?frame=true http://msdn.microsoft.com/library/en- us/dnnetcomp/html/netcfsendsms.asp?frame=true  Accessing Phone APIs from the Microsoft.NET Compact Framework, http://msdn.microsoft.com/library/en- us/dnnetcomp/html/netcfphoneapi.asp?frame=true http://msdn.microsoft.com/library/en- us/dnnetcomp/html/netcfphoneapi.asp?frame=true  An Introduction to P/Invoke and Marshaling on the Microsoft.NET Compact Framework, http://msdn.microsoft.com/library/en- us/dnnetcomp/html/netcfintrointerp.asp?frame=truehttp://msdn.microsoft.com/library/en- us/dnnetcomp/html/netcfintrointerp.asp?frame=true  Creating a P/Invoke Library, http://msdn.microsoft.com/library/en- us/dnnetcomp/html/PInvokeLib.asp?frame=truehttp://msdn.microsoft.com/library/en- us/dnnetcomp/html/PInvokeLib.asp?frame=true


Download ppt ".NET Mobile Application Development Messaging & Communication from Mobile Devices."

Similar presentations


Ads by Google