Andrej Radinger, MVP
APPA Mundi Ltd.
www.appamundi.com
andrej@appamundi.com
MOB303
About Andrej Radinger
Director for Consulting and Training at APPA Mundi
Microsoft MVP for Mobile Devices since 2004
Regular speaker on Microsoft events in the region
Contact me at: andrej@appamundi.com
Mobile Services: Consulting, Development, Training
http://www.appamundi.com
Assumptions & Disclaimers
This is a level 300 session!
You already know the basics of Windows Mobile
development with .NET Compact Framework
Making things easy:
Windows Mobile 6 Professional = Pocket PC
Windows Mobile 6 Standard = Smartphone
All demos in this session apply to both
Windows Mobile 6.1 & 6.5
Based on hardware-specific APIs
Agenda
Windows Mobile Device Input Options
Mobile UI Design Guidelines & Best Practices
Next Generation Input for Devices
Unified Sensor API (Codeplex)
Working with Accelerometers
Working with Light Sensors
Detecting Simple Touch Screen Gestures
Provide Sensory Feedback to Users
Summary
Windows Mobile Device Form Factors
Pocket PC (including Pocket PC Phone)
Tactile screen, stylus, standard buttons
QWERTY Keyboard: Built-in, “slideable”, none
Smartphone
Numeric keypad or full QWERTY keyboard
No stylus, cursor keys
Industrial/Embedded
“Ruggedized” Pocket PCs
Numeric/Alphanumeric keypads
Handheld PC
Clamshell, Tablet-style
VGA, ½-VGA screen
QWERTY Keyboard
Understanding the Windows Mobile
User Interface
Limited Screen Real Estate
Limited Memory Environment
Touch-Sensitive Screen on Pocket PCs:
Stylus or Finger Input
Soft Input Panel (Pocket PC)
Hardware Keys
Built-in/slideable Keyboards
(on certain models)
Numeric Keypad (Smartphone)
Voice Commands
Key User Interface Principles
Design a new UI for a mobile device,
don’t port your desktop UI
Completely redesign the user interface
Business logic may be reusable
Choose the correct model based on the form factor
Pocket PC should always be full-screen
Limit free text entry on devices with no keyboards
Keep the user interface simple
Avoid control overcrowding
Limit the required number of clicks as much as possible
Take advantage of new UX hardware options!
New UX Hardware Options
User Experience (UX) includes input & output
Touch Screen Gestures
Feedback via Vibration
Feedback via Sounds
Accelerometers
Light Sensors
Navigation Wheels
Capacitive Touch Screens*
Not featured on any Windows Mobile device announced to date
Unified Sensor API
Allows developers to easily access the hardware
sensors that are available on various devices
Accelerometer (GSensor)
Light Sensor
Stylus Sensor
Navigation Wheel
CodePlex Open Source Community Project
http://sensorapi.codeplex.com
Created by Koushik K. Dutta
http://www.koushikdutta.com
Devices: HTC Touch*, Samsung Omnia/Instinct
Accelerometer: GSensor
Return a device orientation vector
The vector is the direction of force relative to the
orientation of the device.
Tilt X: 0 is flat, -1000 to +1000
Tilt Y: 0 is flat, -1000 to +1000
Tilt Z: 0 is straight up, -1000 is flat, 1000 is face down
Switch between landscape/portrait mode
Can be used to as an alternative to
-X
4-way cursor keys
+Y
-Z
+Z
+X
-Y
Unified Sensor API
Working with the Accelerometer using GSensor
Light Sensor
Return the ambient luminance based on a
device’s light sensor
Single numerical value
Ranges from 0 to 30
Change UI color scheme based on
ambient lighting
Create a new light sensor with
HTCSensorOpen(HTCSensor.Light)
in HTCSensorSDK.dll
Unified Sensor API
Detecting Ambient Lighting with LightSensor
Touch Screens & Gestures
Windows Mobile devices use a resistive touch
screen: single touch point
Can detect simple gestures using the “mouse”
events in .NET Compact Framework
Stylus and fingers fire mouse events in Compact
Windows Forms
MouseDown: Capture the start position
MouseUp: Detect end position, calculate direction,
even the distance if needed
Track the position with MouseMove if the user
goes off-screen
Detecting Simple Screen Gestures
Tracking the Stylus with “Mouse” Events in WinForms
Providing Feedback to the User
Visual Cues on Screen
Playing Sounds
Vibrating the device
Vibration
Providing vibration feedback to the user
Playing Sound in NETCF 3.5
// Play custom sound files with SoundPlayer
Dim soundplayer As New Media.SoundPlayer
With soundplayer
.SoundLocation = "\My Documents\My
Ringtones\murloc.wav"
.Play()
End With
// Play standard system sounds
Media.SystemSounds.Asterisk.Play()
Media.SystemSounds.Beep.Play()
Media.SystemSounds.Exclamation.Play()
Media.SystemSounds.Hand.Play()
Media.SystemSounds.Question.Play()
Summary
Users expect more from their mobile devices
Create a next generation user experience (UX)
Tap into the advanced hardware capabilities of your
Windows Mobile devices
Make your device application input intuitive
Use simple gestures to add another layer of
interaction to your mobile application
Provide audible and sensory feedback
to your users
Download and test drive the Windows Mobile
Unified Sensor API from CodePlex
Additional Resources
Windows Mobile Developer Center @ MSDN Online
http://msdn.microsoft.com/en-us/windowsmobile/default.aspx
Koushik Dutta’s Blog: My Brain Hurts
http://www.koushikdutta.com
Microsoft Mobile Development Handbook
By Andy Wigley, Daniel Moth, Peter Foot – Microsoft Press (2007)
Andrej Radinger, MVP
APPA Mundi
www.appamundi.com
andrej@appamundi.com
Resources
www.microsoft.com/teched
www.microsoft.com/learning
Sessions On-Demand &
Community
Microsoft Certification & Training
Resources
http://microsoft.com/technet
http://microsoft.com/msd
n
Resources for IT Professionals
Resources for Developers
Complete an evaluation
on CommNet and enter
to win an Xbox 360
Elite!
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it
should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO
WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.