Presentation is loading. Please wait.

Presentation is loading. Please wait.

Insight Developing for Mobile Devices Rob Miles Department of Computer Science.

Similar presentations

Presentation on theme: "Insight Developing for Mobile Devices Rob Miles Department of Computer Science."— Presentation transcript:

1 Insight Developing for Mobile Devices Rob Miles Department of Computer Science

2 Overview  Windows Mobile platforms >Introduction to the history and capabilities of mobile devices  Visual Studio 2005 and mobile devices >Practical : Creating a sample application (Secret Encoder)  Advanced Programming >Creating Casual Games for Mobile Devices >Practical : A working mobile game – StarLight space shooter

3 Windows Mobile Platforms Introduction  Before we look at the process of development, we should look at the platforms themselves >The origins of the Pocket PC and Smartphone >What constitutes state of the art at the moment >What the future holds

4 Pocket PC  Originally called the “wallet PC”  Launched in 1996 with Version 1.0 of Windows CE  Superseded in the following year with Version 2.0  Initially available in keyboard and keyboard-less versions

5 Breakthrough Pocket PC: Compaq Ipaq  This was the first device to deliver on performance, display and battery life >120MHz processor >32MB of RAM >Flash ROM >RS232 and IR ports >240x320 TFT colour display

6 State of the art Pocket PC  Dell Axim V50s >624Mhz Processor >64MB RAM >480x640 colour display >WIFI and Bluetooth >3D Graphics accelerator  Windows Mobile 5  £150 less than the original IPAQ!

7 Smartphone  In 2001 Microsoft announced that it would be launching a range of Smarpthones (codenamed "Stinger")  The Smartphones would be "Windows based"  The version of Windows in question was Windows CE 3.0  Launched in October 2002 with Orange SPV

8 Breakthrough Smartphone: SPV E200  First to deliver on performance and battery life: >32MB user memory >Built in Bluetooth support >Built in camera >Smartphone 2003 Operating System >.NET Compact Framework

9 State of the art Smartphone: SPV C600  Launched in August 2005 >64MB of internal memory >Fast internal processor (200 MHz) >Small form factor >Runs Windows Mobile 5  The Imate SP5 version of this platform also has WIFI

10 Pocket PC Phone Edition  Combines PDA with phone >Launched in July 2002 >206-MHz Intel StrongArm processor >32MB RAM >Based on Pocket PC 2002

11 Breakthrough Device: XDA II  Launched in April 2004 >400MHz Processor >128MB RAM >Camera >Bluetooth >Windows Mobile 2003

12 State of the Phone Edition: XDA IIS  Launched in April 2005 >Integrated Keyboard >Improved performance

13 Imate Jasjar  First 3G Windows Mobile Device >Branded as Orange M5000 >VGA resolution display (640x480) >WIFI support >Two cameras >Windows Mobile 5.0  A viable desktop alternative

14 Other devices of note  Palm Treo >First Palm Windows Mobile 5.0 device >Available in USA with broadband network speed >Being positioned as a “Blackberry killer"  Imate JAM >Very small Pocket PC phone edition >New form factor for Pocket PC

15 The Future…  The development of the devices over the last few years has been amazing  The systems are going to get more powerful and more connected  Location based behaviour is now very easy to implement in systems

16 Visual Studio 2005 and mobile devices Introduction  The key components  The Smartdevice project type  Language and Development options  The project as an executable program  Deploying to a target  Simple debugging

17 Key Development Components  ActiveSync 4.1 >connects the Smartphone device to the PC  Visual Studio 2005 >provides development environment  Smart Device Developer Kits >provides development project types  SOTI Remote commander >provide a remote viewer for the mobile device

18 ActiveSync 4.1  The precise version is important  Manages the link between the PC and the Smartphone  Can use wired (USB or RS232), infrared (IRDA) or Bluetooth connection to the developer PC  You do not need to partner with a device in order to develop for it

19 ActiveSync Deployment  Visual Studio uses an ActiveSync connection to deploy programs and debug them  ActiveSync sets up a TCP/IP connection to the target device  If the connection does not support a native TCP/IP connection a private subnet is set up

20 ActiveSync Private Subnet  The ActiveSync connection establishes an IP address for the connected device: >PC Emulator: >USB Connected Device:  These connections allows programs on the Smartphone to originate connections  ActiveSync 4.1 will also connect to emulators and synchronise with them

21 Connection Limitations  The private subnet set up by ActiveSync does not allow external programs to originate a connection to the device  This is not a problem, since any application you write will run on a phone which you will be unable to connect to in this way because the GPRS IP address will not be known  If two Smartphones are to exchange information over TCP/IP this should be via a third party server or by using web services

22 ActiveSync Connections  Universal Serial Bus (USB) >All Smartphones are shipped with a USB cable or cradle for connection to a PC  Infra Red (IRDA) >Most Smartphones have an IRDA connection which can be used for ActiveSync  Serial port (RS232) >Some Smartphones are also equipped with a serial port which can be used by ActiveSync. Note that programs on the Smartphone may also make use of this connection  Bluetooth >ActiveSync can connect using the Bluetooth serial port implementation. This is configured as a serial port connection

23 Preferred Connections  USB is the most reliable  Bluetooth is the most convenient, but can be problematic to set up and maintain  IRDA works surprisingly well, particularly with notebook and tablet PCs  The serial port connection will require a special cable, and is declining in popularity

24 Visual Studio 2005  This provides the development environment for the mobile devices  Can create.dll libraries and executables  Produces both managed an unmanaged (native) code  Also supports remote debugging in the target (on both emulator and device)

25 SOTI Remote Commander  Earlier versions of the mobile operating systems supported remote control tools which were provided in the Mobile Powertoys >Window Mobile 5.0 does not support these  To write applications which use the target hardware (camera, phone, SMS messages) you need remote access to the device  I use SOTI Remote Commander: (

26 Inside a Compact Framework Program  Because the executable is a.NET program you can use ILDASM and other tools to manipulate it  You could even create MSIL applications for the Smartphone if you wish

27 Deploying the Program  When the program is executed from within Visual Studio it is copied into a directory on the target device and executed from there  You can deploy the program just as an executable file if you wish, by copying it into a directory on the Smartphone using ActiveSync

28 Finding the Program  The more recent mobile phones are shipped with file browser programs you can use to find and run the executable directly  Pocket PC owners can use the built in file browser

29 Stopping a program on the target  The program can be stopped at any time  If the program is running on a remote device it will also be stopped  If the ActiveSync connection fails Visual Studio will display an error, but the program will continue to execute on the target device

30 Selecting the Target Device  The target device is selected from within Visual Studio  If you try to use a real device, and none is connected, the deployment will take a while to time out  Note the different display form factors

31 Debug and Release Mode  The program can be compiled for Debug or Release mode  This is selected from within Visual Studio  When using Debug mode a Program Debug Database is created alongside the program executable file

32 Debugging  The debug tools are very powerful  You can: >Pause an executing program >Add a breakpoint to an executing program without stopping it  These facilities work on the target device too  You must however have used Debug mode to build the application  The Remote Display Power tool can be useful here

33 The Configuration Manager  You can create your own forms of configuration to customise your development  The manager is accessed from the Build menu

34 Project Properties  The Project Properties give you an even finer level of control of the project  This includes where on the target device the program is actually deployed

35 Smartphone Games Development Secret Encoder Program  We are going to explore the development process by developing a simple program for the mobile platforms  This will allow us to explore input/output and program design  The work could be the basis of a student practical exercise

36 Introduction  The “Secret Encoder” Program >Encodes text entered, based on a simple keyword  Will allow us to explore the issues of mobile development >User Input >Output Display >Use of the Menu Buttons >Program termination

37 Encoder Program  Screen contains three areas: >Encryption key entry >Secret message entry >Output display entry  When the code button is pressed the key is applied to the message to produce the result  The encryption is performed using XOR, so that it is reversible Key: mykeytext In: password Out: xwbqegg231 Code

38 Getting Started  Once the Smartphone extensions have been loaded you can create a Smart Device application  Call it SecretEncoder

39 Good Practice  Rename the source file from Form1 to SecretEncoderForm >Note that the refactoring process automatically offers to rename the classes as well  Then change the text on the form from Form1 to Secret Encoder >Use the properties of the form to do this

40 Encoder Project  First we have to add the data entry components for the program  The Visual Studio Toolbox holds only the components which are available for the Smartphone display  We are going to use Label and TextBox components

41 Encoder Form  Now add four Label and two TextBox components onto the form  Make sure they are given sensible names and aligned correctly

42 Field Traversal  The Smartphone application begins running with the most recently added TextBox selected first  Moving “forwards” through the fields actually moves towards the “oldest” TextBox  This might not be what the user will want  You should add the lowest TextBox first >Or make use of the tool to change the field order

43 Smartphone Tab Order  The Smartphone Tab order dialogue, selected from the View menu allows you to re-arrange the tab order of the fields on the form  Click on the fields in the order you want

44 Data Entry  The present program will run, and the user can move between the two entry boxes and type text into either  We now need a way of triggering the encode action

45 Adding Menu Keys  To add a menu key just click on the screen above the key and type the name of the key  The menu item is created automatically

46 Menu Keys Names  Once you have added the keys to the form you can type menu selections onto them by clicking on the “Type Here” item

47 Smartphone Menu  The menu key is displayed as shown  We now need to bind an event to the key press to perform our encode action

48 Menu Names  I rename menus (and other components) so that the names of their event handlers make sense  You should do this as soon as you have created one

49 Adding the Event Handler  Double click on the menu item to create an event hander for it

50 Encode Action  I have created a method to perform the encode action  I could have placed this code inside the event hander itself, but it is more flexible to create a method to do the job:  This calls an encode method which actually performs the translation of the text itself

51 Testing the program  The initial version of the encode method simply returns the original text  This allows me to test the program and ensure that it works correctly

52 The Encode method

53 Secret Encoder  The encryption works, but it is a very weak method  Note that the space in the input reveals the key character at that position  I leave it to you to create a better one!

54 Exiting the program  At the moment there is no way to exit the program on the Smartphone device  We can stop it with Visual Studio, but the user will not be able to do that  It is very easy to add an exit menu option

55 Stopping an Application  We can use the standard application termination method to stop the program:  This frees off any resources and exits the program cleanly  Note that the Windows CE guidelines aren’t keen on you stopping your programs (but I do it anyway)

56 TextBox Key Entry  You may wish to not show the password when you are using the program  As with standard Windows Forms, the TextBox component can be set to allow password entry

57 Debugging  The program can be debugged in exactly the same manner as any other Visual Studio application  Any exceptions which are thrown are trapped and you are given the option to debug

58 Running on the PC  The application will run on a standard PC  Note how the behaviour of the menu has been adapted for a Windows Form  It is often useful to be able to run programs on a PC to test them >Particularly if they make use of file input/output

59 Labels and Bugs  There is a bug in this program; some characters are interpreted by the label display component as controls for access keys (even though these have no meaning for Smartphone!)  The key of “cheese” gives the output as shown

60 TextBox Replacement  Using a TextBox set to read only allows the correct text to be displayed  The read only property of the text box is used to prevent the user changing it

61 Pocket PC Version  The Pocket PC version is very similar  Just about all of the Smartphone code can be transferred directly over to Pocket PC  Changing the target is very easy

62 Migrated Code  The Pocket PC has menu keys just like the Smartphone  The program can therefore be used unchanged

63 Workspaces  You can combine several device projects into a single workspace  The common behaviour (the encoder) has been brought out into a separate project  We will explore this later

64 Development  You can explore further development of this code: >Add buttons to the Pocket PC implementation >Store the key in a file on the device >Allow the use of multiple keys >Improve the encoder quality

65 Advanced Development Overview  Windows Mobile 5.0 and Casual Games  Writing code for Windows Mobile 5.0  Adding compelling features: >Mobile graphics >Personal Information Management >Messaging >Camera integration  A complete sample game

66 What is a Casual Game?  A casual game should be: >quick to play >with you all the time >preferably quick to write  Windows Mobile 5.0 is a great platform to create casual games: >wide range of mobile platforms >powerful and effective programming tools >gives the security of managed code

67 Windows Mobile 5.0  Common to all the hardware platforms  Provides easy access to underlying device properties and events: >Device configuration >Camera controls >Direct3D >Outlook PIM information >Messaging and Email >GPS device support

68 Writing Games Software Deployment  For devices containing phones the service provider may lock the phone  To run an application on a locked phone it must be signed >Most phones can be unlocked for development  Use the Mobile2Market program to sell your code

69 Writing Games Cheese Breakout  The basis of the game is to bounce the cheese and hit the tomatoes  The player controls the bread bat and hits the cheese with it:  Sprites >transparency >double buffering >animation  User input >event driven keypad

70 Bouncing Cheese Drawing the cheese private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImage(cheeseImage,cx,cy); } private void timer1_Tick(object sender, EventArgs e) { updatePositions(); Invalidate(); }  I use the timer tick method to trigger updates

71 Bouncing Cheese Updating the cheese position private void updatePositions() { cx+=xSpeed; if ( ((cx + cheeseImage.Width) >= this.Width) || (cx <= 0) ) { xSpeed *= -1; } cy+=ySpeed; if ( ((cy + cheeseImage.Height) >= this.Height) || (cy <= 0) ) { ySpeed *= -1; }

72 Moving Cheese

73 Writing Games User Input  The event driven Windows Forms input model lends itself well to games >Events are fired on key down and key up  However, each platform has some input limitations: >No touchscreen on the Smartphone >Smartphone joypad does not support diagonals

74 Writing Games Windows Mobile 5.0 Graphics  You can create 2D graphics using GDI >This is perfect for 2D sprite based games  You can also access the screen directly >But the GAPI interface has been deprecated  For 3D graphics you can use Direct3D: >Some devices have hardware acceleration ­Dell Pocket PC ­Coming soon to Smartphones

75 Writing Games Structuring your solutions  Windows Mobile 5.0 programs can run on any of the platforms  But you do need to address control issues >The input mechanisms for Pocket PC and Smartphone are necessarily different  But you can structure your code to address this

76 Writing Games Structuring your solutions  The interfaces isolate the game engine from the particular platform Smartphone UI Pocket PC UI Pocket PC Phone UI ↑↑↑↑ Interfaces ↓↓↓↓ Underlying Game Engine

77 Writing Games Structuring your solutions : UI  The UI components expose their behaviours by means of an interface  The game engine uses this to drive the display public interface IBlackJackUI { void DoRedraw(); void DoSettingBet(); void ShowBets(); void DoStartPlayerHand(); void DoStartDealerHand(); void ShowPlayerBust();...... }

78 Writing Games Structuring your solutions : Game  This is how the UI code views the game engine  It passes user events into the engine which then generates display events in response public interface IBlackJackGame { void DoHitPlayer(); void DoNewGame(); void DoPlayerStay(); void DoStartHand(); GameMode Mode { get; }...... }

79 Writing Games Solutions and Projects  The solution contains Windows PC and Smartphone games  They both use the same game engine  A Pocket PC version would be very easy to add

80 Blackjack Game

81 Writing Games Multiple Platforms  You can create a single binary which will work on multiple platforms  It can determine the actual dimensions of the target and then scale appropriately  Beware of issues with transparent colors when they are scaled however  Can load multiple versions of game images if required

82 Writing Games Discovering Device Configuration  There are a wide range of platforms and configurations  It is easy to find out what is available on the platform in use

83 Device properties Finding the camera using Microsoft.WindowsMobile.Status;...... bool hasCamera = Convert.ToBoolean( SystemState.GetValue(SystemProperty.CameraPresent) ); if (hasCamera) { cameraMessageLabel.Text = "Camera Present"; } else { cameraMessageLabel.Text = “No Camera"; }

84 Camera Finder

85 Writing Games Device Events  You can also bind your code to events generated when a given property changes  Every event which is managed by the system can be monitored in this way >Battery: level/power supply >Media: currently playing song >Connectivity: network, phone, cradle  This is very easy to use

86 Writing Games Binding to the headset event using Microsoft.WindowsMobile.Status;...... SystemState headsetState; public HeadsetForm() { InitializeComponent(); headsetState = new SystemState(SystemProperty.HeadsetPresent); headsetState.Changed += new ChangeEventHandler(headsetState_Changed); }

87 Writing Games The headset event handler void headsetState_Changed(object sender, ChangeEventArgs args) { bool gotHeadset = Convert.ToBoolean(args.NewValue); if (gotHeadset){ headsetPresentLabel.Text = "Headset Present"; } else{ headsetPresentLabel.Text = "No Headset"; }

88 Headset Detector

89 Compelling Features Using the Outlook PIM  Windows Mobile 5.0 provides direct access to the Outlook on the mobile device  This was previously achieved using the Pocket Outlook Object Model (POOM) but with Windows Mobile 5.0 this is built in  Making use of contact details and sending messages is now very easy

90 Using Outlook The OutlookSession class OutlookSession outlook = new OutlookSession(); System.Collections.Generic.List mobileCcontacts = new System.Collections.Generic.List (); void findMobileContacts() { foreach (Contact c in outlook.Contacts.Items) { if (c.MobileTelephoneNumber != "") { mobileCcontacts.Add(c); } } }

91 Using Outlook Sending an SMS message SmsMessage sms = new SmsMessage(contact.MobileTelephoneNumber, message); try { sms.Send(); MessageBox.Show("Message Sent OK"); } catch { MessageBox.Show("Send Message Failed"); }

92 Addressbook Roulette

93 Compelling Features Incoming messages  It is very easy to create code which will react to messages when they arrive  In this way you can create games which will act on SMS messages or incoming emails  The event code should be quite familiar

94 Incoming Messages Binding to the event mgot = new MessageInterceptor(); mgot.InterceptionAction = InterceptionAction.NotifyAndDelete; mgot.MessageReceived += new MessageInterceptorEventHandler(mgot_MessageReceived);...... void mgot_MessageReceived(object sender, MessageInterceptorEventArgs e) { Message mess = e.Message; if ( mess.GetType() == typeof(SmsMessage) ) { SmsMessage sms = mess as SmsMessage; if (sms.Body == "bang") { MessageBox.Show("BANG!"); } } }

95 Phone Exploder

96 Compelling Features Acting on incoming messages  It is also possible to use an incoming SMS to trigger an application to start up  This is done via the properties of the MessageInterceptor instance that is created

97 Compelling Features Using the Camera  If the device has a camera you can use this in your games  You do not have direct control over the device itself >This is to protect user privacy  But you can integrate the use of the camera into games that you write

98 Using the camera The camera dialog  The camera is used in a way directly analogous to a File dialog  It returns the name of the file which contains the picture as taken  You can also configure the camera  The actual behaviour of the dialog is platform dependent

99 Using the camera Picture taking method static public string TakePicture(Form parent) { string result = null; CameraCaptureDialog camera = new CameraCaptureDialog(); camera.Mode = CameraCaptureMode.Still; if (camera.ShowDialog() == DialogResult.OK){ result = camera.FileName; } parent.Show(); camera.Dispose(); return result; }

100 Using camera images Picking Pictures  There is also a SelectPictureDialog  This works in exactly the same way as the CameraCaptureDialog  It allows the player to choose a picture  It also provides a camera capture option if the device has a camera  For this reason I prefer it

101 Play with Friends

102 The Play With Friends demo Graphical notes  The game has around 20 or so sprites on the screen at any time >Small sprite class linked to a few images  They are only created once at the start of the program to reduce garbage collection  A backbuffer is used to implement the scrolling background >Runs at around 20 Hz on the SPV C600

103 Resources  Games Programming with Cheese >Now being upgraded to Windows Mobile 5.0 >Search msdn for “Smartphone cheese”  Windows Mobile 5.0 SDK > >  All the demos are available for download >

Download ppt "Insight Developing for Mobile Devices Rob Miles Department of Computer Science."

Similar presentations

Ads by Google