Building Apps for
Windows Phone 8
Jump Start
Andy Wigley | Microsoft Technical Evangelist
Rob Tiffany | Microsoft Enterprise Mobility Strategist
•
– Works with the developer community and partners on app
development for Windows Phone and Windows 8
– Follow Andy’s blog at http://andywigley.com
•
– Joined Microsoft in October 2012
– Regular speaker at major conferences
– Co-authored several MS Press books
– Lives in Snowdonia, North Wales
•
– Executive advisor and speaker at global conferences
– Has been responsible for architecture, development, deployment of
many of the world’s largest mobile and wireless solutions
– Follow Rob’s blog at http://robtiffany.com
•
– Entrepreneur, developer, IT executive,
mobile strategist, author, smartphone pioneer
– Co-founded the world’s first cloud-based
mobile device management company
Target Agenda | Day 1
Module and Topic | 10-minute breaks after each session / 60-minute “meal break”
Planned
Duration
1a - Introducing Windows Phone 8 Application Development | Part 1
50:00
1b - Introducing Windows Phone 8 Application Development | Part 2
50:00
2 - Designing Windows Phone Apps
50:00
3 - Building Windows Phone Apps
50:00
4 - Files and Storage on Windows Phone 8
50:00
Meal Break | 60-minutes
60:00
5 - Windows Phone 8 Application Lifecycle
50:00
6 - Background Agents
25:00
7 - Tiles and Lock Screen Notifications
25:00
8 - Push Notifications
30:00
9 - Using Phone Resources on Windows Phone 8
50:00
Target Agenda | Day 2
Module and Topic | 10-minute breaks after each session / 60-minute “meal break”
Planned
Duration
10 - App to App Communication
35:00
11 - Network Communication on Windows Phone 8
50:00
12 - Proximity Sensors and Bluetooth
35:00
13 - Speech Input on Windows Phone 8
35:00
14 - Maps and Location on Windows Phone 8
35:00
15 - Wallet Support
25:00
16 - In App Purchasing
25:00
Meal Break | 60-minutes
60:00
17 - The Windows Phone Store
50:00
18 - Enterprise Applications in Windows Phone 8: Architecture and Publishing
50:00
19 - Windows 8 and Windows Phone 8 Cross Platform Development
50:00
20 – Mobile Web
50:00
M1a: Introducing
Windows Phone 8
App Development
Module Agenda
• New app platform in WP8
• Application development models
• WP8 version of WinRT
• Supported application models
• Getting started with WP8 app development
• New features overview
• WP7x compatibility
• Using the Windows Phone Developer Tools
New WP8 Hardware
Beautiful new hardware from Nokia, HTC, Samsung and more…
Modern Smartphone Platform
New multicore chipset
New graphics processor
Increased RAM: 1GB or 512MB
More Screen resolutions
Removable, encryptable storage
NFC
Shared Windows Core
Windows 8 and Windows Phone 8 share many components at the Operating System level
OS Modules
Windows
Windows
Windows
NT
Kernel
Kernel
Kernel
What ‘Shared Core’ Does – And Doesn’t – Mean
• Shared Core means
• OS components such as the kernel, networking, graphics support, file system and multimedia are
the same on both Windows 8 and Windows Phone 8
• Hardware manufacturers work with the same driver model on both platforms
• Windows Phone gets the support for multi-core and other hardware features that Windows has
had for years
• These solid, common foundations makes it easier to extend the Windows Phone platform into
the future
• It doesn’t mean
• Windows 8 and Windows Phone 8 developers work to exactly the same APIs
• (though you will see more commonality as new features are introduced to both platforms
in the future)
Windows Phone 8 Programming APIs
WP8.0 Games DirectX/Direct 3D & C++
• Windows Phone 8 supports
• Managed app dev using the
WP7.1, WP8.0 .NET and
Windows Phone Runtime APIs
• Native app dev using WinPRT
and Win32
• Games dev using the WP7.1
XNA framework
• Games dev using Direct3D or
DirectX
WP8.0 XAML & C#/VB with Direct3D Graphics
+ C++
WP8.0 XAML & C#/VB
+ C++
WP7.1 XNA & C#/VB
WP7.1 XAML & C#/VB
.NET API for
Windows
Phone
Windows
Phone
Runtime
Managed
Managed &
Native
Win32 &
COM
Native
.NET API for Windows Phone
.NET API for
Windows
Phone
Windows
Phone
Runtime
Managed
Managed &
Native
• The .NET API for Windows Phone is the primary managed API
• Includes *all* the types and APIs from Windows Phone OS 7.1
• Contains classes and types from the System and Microsoft.Phone namespaces
• There have been new classes added for Windows Phone 8.0, for example
• Microsoft.Phone.Wallet
• Microsoft.Phone.Tasks.ShareMediaTask
• Microsoft.Phone.Tasks.MapsTask
• Microsoft.Phone.Storage.ExternalStorage
• Microsoft.Phone.Networking.Voip
• Many more…!
Win32 &
COM
Native
Windows Phone Runtime API
.NET API for
Windows
Phone
Windows
Phone
Runtime
Managed
Managed &
Native
Win32 &
COM
Native
• Windows Phone Runtime is a subset of the full WinRT, plus some phone-specific additions
• Windows (Phone) Runtime is implemented in C++ and projected into C#, VB.NET, and C++
• HTML5/JavaScript projection not available on Windows Phone 8
Full WinRT (around
11,000 members)
Subset adopted for
Windows Phone
Runtime (around
2,800 members)
• Phone-specific additions to Windows
Phone Runtime include
New for
Windows
Phone
Runtime
(around 600
members)
•
•
•
•
Speech synthesis and recognition
Windows.Phone.PersonalInformation
LockScreen and LockScreenManager
More…
API Choices for Managed Code Developers
• Many of the APIs in Windows Phone Runtime exist to provide new functionality to Windows Phone
• Other APIs exist to expose Windows Phone capabilities to both native and managed code developers
and provide equivalent functionality to the .NET APIs
.NET API
Windows Phone Runtime API
System.IO.IsolatedStorage
Windows.Storage
System.NET.Sockets
Windows.Networking.Sockets
System.Threading.ThreadPool
Windows.System.Threading.ThreadPool
Microsoft.Devices.Sensors
Windows.Devices.Sensors
• Managed code developers can use whichever API they like
• Developers targeting WP7.1 and WP8 devices will prefer the .NET API
• Developers sharing code between WP8 and W8 targets will tend to use the Windows Phone Runtime API
Win32 and COM API
.NET API for
Windows
Phone
Windows
Phone
Runtime
Managed
Managed &
Native
Win32 &
COM
Native
• In addition to .NET and Windows Phone Runtime, you have access to some Win32 APIs
• Winsock for low-level networking
• Camera APIs for native code apps
• COM APIs such as CoInitializeEx, CoTaskMemAlloc, CoTaskMemFree, CreateFile2, ReadFile, WriteFile,
HeapAlloc, CreateMutexExW, WaitForSingleObjectW,…many others…
• Mainly of interest to native code developers
• Managed applications could call these by adding a native project to the solution, but there
are few situations where this will be used
• Not covered in this training!
• Windows Phone 8 offers
many additional ways of
building apps compared to
Windows Phone OS 7.1
App Models
XAML UI with Managed Code
• The most common way to build apps for Windows Phone
• UI defined using XAML
• Logic written using C# or Visual Basic .NET
• Access .NET APIs and Windows Phone Runtime APIs
XAML & C#/VB
.NET API for
Windows
Phone
Windows
Phone
Runtime
Managed
Managed
Demo 1: XAML and
Managed Code
XNA Games using Managed Code
• You can develop games for Windows Phone using the XNA framework
• Same functionality as in Windows Phone OS 7.1
• Logic written using C# or Visual Basic .NET
• Access .NET 7.1 APIs, not Windows Phone 8 APIs
• Same new project templates as Visual Studio 2010
XNA & C#/VB (+XAML)
.NET API for
Windows
Phone 7.1
XNA Libraries
for Windows
Phone 7.1
Managed
Demo 2: XNA and
Managed Code
Direct3D App
• Direct3D app written entirely in native code, and which
use only Direct3D for its UI
• Games development – significant sharing of code base
with a PC version
• Access Windows Phone Runtime APIs – significant
subset of the Windows 8 SDK
• Easier to share native components such as compute
engines, graphic libraries and API sets
Direct3D & C++
Windows
Phone
Runtime
Win32 &
COM
Native
Native
Direct3D and XAML
• Developers can also build managed apps using XAML that incorporate graphics created by a
Direct3D native library
• Allows addition of powerful graphics to XAML UIs
• Use the Windows Phone Direct3D with XAML App project template
• Available in Visual C#, Visual Basic and Visual C++ categories in the Add New Project dialogue
XAML & C#/VB.NET & C++
.NET API for
Windows
Phone
Windows
Phone
Runtime
Windows
Phone Runtime
(Direct3D)
Win32 &
COM
Managed
Native
Native
Demo 3: Direct3D Games
XAML/Managed plus Native Code
• Managed apps can also interact with native libraries
• Add C++ Dynamic Link Library or Windows Phone Runtime Component projects to a managed
XAML solution
• Win32 API set supports Winsock and File I/O functions to ease porting of existing native code libraries
• Implement compute-intensive components in native code for increased performance
• E.g. Image processing, compute modules, document rendering…
XAML & C#/VB.NET & C++
.NET API for
Windows
Phone
Windows
Phone
Runtime
Win32 &
COM
Managed
Managed
Native
DEMO 4: Managed and Native Component Interop
HTML5 App Development
• Windows 8-style HTML5/JavaScript app development is not supported
on Windows Phone 8
• Windows Phone Runtime projections to C#/VB.NET and C++ only
• However, Windows Phone 8 includes Internet Explorer 10
• Another shared codebase with Windows 8
• Great support for HTML5 (2 x feature support compared to
Windows Phone 7.5)
• New JavaScript processing engine (4 x faster than
Windows Phone 7.5)
• This same browser is at the heart of the WebBrowser control
• You can build HTML5-based apps rendered in the WebBrowser
against local or web-based content
HTML5 App Project Template
Demo 5: Managed App
Displaying HTML Content
Windows Phone 7.x App
Compatibility
Windows Phone OS 7.1 Apps on Windows Phone 8
• In general, the Windows Phone app
platform enables apps that target
Windows Phone OS 7.1 to run without
modification or recompilation on
Windows Phone 8
• Same APIs may exhibit slightly different
behaviour in WP 8.0 compared to
WP 7.1
• Feature improvements or
behavior changes
No recompilation
WP OS
7.1
app
WP
OS
7.1
app
WP 8.0
Runtime/
Libraries
Windows Phone OS 7.1 Apps on Windows Phone 8
• Instead of breaking WP 7.1 apps
running with the WP 8.0 runtime,
quirks mode is applied to retain
WP 7.1 behavior
• Apps that are upgraded to WP 8.0 and
recompiled run on the phone without
quirks mode being applied
No recompilation
WP OS
7.1
app
WP OS
8.0
app
WP
OS
8.0
app
WP
OS
7.1
app
+Quirks
WP 8.0
Runtime/
Libraries
Converting Code Developed for WP OS 7.1 to WP 8.0
• When converting existing WP7.1 code to WP 8.0, be careful your code does not rely on WP 7.1
behaviour
• Two scenarios to consider:
• Source code incompatibility – when code is recompiled for Windows Phone 8, the new WP8
behaviour applies which differs from how the same code behaved when run on WP 7.1
Example: Assembly.GetType property method searches for the specified type in mscorlib.dll as
well as in the assembly on which it is called on WP OS 7.1, but on WP8, it searches for the
specified type only in the assembly on which it is called
• Binary app incompatibility – some behaviours cannot be quirked, so an app that has been written
for, and tested on WP OS 7.1 will not run the same on a WP8 device because of a difference in
runtime behaviour
Example: The garbage collector in the WP8 runtime is completely different from that on WP OS
7.1. If your 7.1 code relies on a particular order of object finalization, it may be broken. The
dependency on a particular order of finalization should be removed
Source Code Incompatibility Examples
Code that Behaves Differently When Compiled for WP8 and Quirks Mode is no longer Applied
Item
Windows Phone OS 8.0
Windows Phone OS 7.1
IsolatedStorageFile.FileExists(String)
method
If passed a null, the method throws an
ArgumentNullException exception.
The method returns false.
Mutex class
Mutex names cannot include a
backslash character
A backslash character is allowed in a
mutex name and is replaced with
another character at run time
BeginRead , BeginWrite, EndRead,
EndWrite, and subclassed methods
Thread.CurrentCulture and
Thread.CurrentUICulture properties
Input/output operations are performed Input/output operations are performed
asynchronously
synchronously
Changes to the current culture and
current UI culture affect only the
current thread
Changes to the current culture and the
current UI culture affect all app threads
XmlSerializer class
Serialized types must have a default
(parameterless) constructor
It is not necessary for serialized types
to have a default constructor
….many more…. !
See the topic Windows Phone app platform compatibility in the
documentation
Binary App Incompatibility Examples
Code that Behaves Differently When run on WP8 , whether it is compiled for WP OS 7.1 or for WP8
Windows Phone OS 8.0 runtime
behavior change
Impact on code that assumes
Windows Phone OS 7.1 behavior
Background File Transfers
The limit on the number of concurrent
file transfers has increased from 5 to
25
Code that assumed that the
maximum number of transfers cannot
exceed 5 will fail
Networking
Because the Windows Phone 8
Developer Preview client can handle
the Vary header and cache responses,
a Web service call may complete
much faster than in previous versions
If you are making a Web service call
your code must not rely on the
download taking more than a second.
When checking the response time it
could be less than 1 second
Access to private nested classes
Windows Phone OS 7.1 allows a class
to access its private nested classes;
Windows Phone 8 Developer Preview
does not
Access to private nested classes is
unsupported
….many more…. !
See the topic Windows Phone app platform compatibility in the
documentation
Item
M1b: Introducing
Windows Phone 8
App Development
Target Agenda | Day 1
Module and Topic | 10-minute breaks after each session / 60-minute “meal break”
Planned
Duration
1a - Introducing Windows Phone 8 Application Development | Part 1
50:00
1b - Introducing Windows Phone 8 Application Development | Part 2
50:00
2 - Designing Windows Phone Apps
50:00
3 - Building Windows Phone Apps
50:00
4 - Files and Storage on Windows Phone 8
50:00
Meal Break | 60-minutes
60:00
5 - Windows Phone 8 Application Lifecycle
50:00
6 - Background Agents
25:00
7 - Tiles and Lock Screen Notifications
25:00
8 - Push Notifications
30:00
9 - Using Phone Resources on Windows Phone 8
50:00
Overview of New
Features for Developers
in Windows Phone 8.0
Coming up in the rest of this course…
Tile Templates and Tile Sizes
• Windows Phone 8 supports three
Tile templates
• Flip – flips from front to back
(similar to the WP 7.1 Tile template)
• Iconic – clean iconic layout designed
to reflect Windows Phone design
principles
• Cycle – cycles through up to
nine images
Lock Screen on Windows Phone 8
• You can register your app as a lock screen
provider, which enables:
• User can select your app to show
detailed status on the lock screen
• Can select your app as one of the
five apps to show quick status (icon
and count)
• Can select your app as the lock screen
background image provider
New Launchers
• Launchers are APIs that help a user perform common tasks… Invoke part of the phones’
built-in capabilities to perform tasks such as
• Take a photo, Add a contact, sSend an email or SMS message
• Etc…
• New Launchers in Windows Phone 8:
• SaveAppointmentTask
• ShareMediaTask
• MapDownloaderTask
• MapUpdaterTask
• MapsTask
• MapsDirectionsTask
Maps
• Windows Phone 8 has new Maps controls
• Bing Maps control from Windows Phone OS 7.1 is still supported, but deprecated
• The new Maps controls use technology supplied by Nokia
• New features:
• Vector-based for faster rendering
• Four cartographic map modes
• Light and dark color modes
• Display landmark and pedestrian features
Location and Location Tracking
• New Location API in the Windows Phone Runtime API set
• Similar to Windows 8 Location API
• Windows Phone OS 7.1 .NET Location API still supported
• Background location-tracking apps
• Run continuously in the background when the user
navigates away from the app
• Enables scenarios such as Run Trackers, turn-byturn navigation
Speech
• Windows Phone 8 allows you to enable users to robustly interact
with your app using their voice
• Two types of voice interaction are new:
• Voice Commands - Allows users to deep-link into your app by
holding down the Start button and speaking a prefix you
specify for your app, followed by a command that you define.
• Speech Recognition and Text-to-Speech APIs - While in the
context of your app, allow users to provide input using their
voice, and readout text to users via text-to-speech
Wallet
Credit & Debit Cards
Loyalty & Membership Cards
Access Saved Deals
Supports NFC ‘Tap to Pay’
UI Controls
New Controls in Windows Phone 8 SDK
• LongListSelector
• Flat lists
• Grouped lists –
with headers
• Jump List
• Formerly in the
Silverlight Toolkit
• Pivot and Panorama now in ROM
• WebBrowser control now based on
Internet Explorer 10
3 Screen Resolutions
WVGA
800 x 480
15:9
WXGA
1280 x 768
15:9
720p
1280 x 720
16:9
Camera and Photos
• Lenses
• Type of extensibility available to apps that provide unique camera functionality via the camera APIs
• As a lens, your app provides the user with a viewfinder experience and interacts directly with the camera
• New Picture.GetPreviewImage() method to return thumbnail images
• New Photos extensibility features
• In addition to extending the Photos Hub, the photo app picker, and the share picker, your app can now integrate
with the photo edit picker or register as a rich media editor
• Background Photo Auto-upload
• Automatically upload photos to a photo storage service using a resource-intensive background agent
• Advanced camera capture APIs for apps that require fine control of the camera
• Use the PhotoCaptureDevice class to control photo properties such as ISO, white balance, and exposure. You can
even programmatically adjust the focus position
• The AudioVideoCaptureDevice class offers a similar level of control for video and audio recording
Media
• Music media library
• Add and remove music files from the user’s music collection with the SaveSong and Delete
methods of the MediaLibrary class
• Pictures media library
• In Windows Phone 8, for each picture saved on the phone, the following two thumbnail images are
automatically created and can be retrieved by your apps:
• A small thumbnail image. You can retrieve this thumbnail with the GetThumbnail method of the
Picture class
• A preview image that has the same dimensions as the phone's screen. You can retrieve this preview
image with the new GetPreviewImage extension method of the Picture class
• Background Audio
• New PlayStateChangedEventArgs returns data when state of BackgroundAudioPlayer changes
VoIP and Video Chat
• Incoming VoIP calls work like any other call
• Integrates with built-in phone features
• VoIP apps continue to run in the background
• Available to all developers
Bluetooth and NFC
• Create apps that communicate with other phones using Bluetooth technology
• Bluetooth API enables the following scenarios for Windows Phone 8:
• App-to-app communication
• App-to-device communication
• Proximity API enables:
• App-to-app connection using Bluetooth technology
• Establish a Wi-Fi, Bluetooth, or Wi-Fi Direct connection between your app and an
instance of your app on a proximate device
• Send data between devices using NFC.
• Use a phone to interact with NFC tags
Better Sharing with NFC
Other Networking Enhancements
• Windows.Networking Windows Phone Runtime API
• New networking API highly compatible with Windows 8
• Incoming Sockets
• Supported in both System.Net.Sockets and Windows.Networking.Sockets, which means
your app can listen for an incoming network connection
• Support for IPV6
• Winsock native API support
• Helps porting of existing native libraries that use the Winsock API
Storage – Read from SD Card
MicroSD Support
• Apps can use the
Microsoft.Phone.Storage API to read
files from an SD card
• User can also use SD card to extend
device storage for their personal files
and media
• Store photos, music, videos
• Can install apps from a MicroSD store
Custom Contact Store
• Create a set of contacts owned exclusively by the app, though visible through
the phones built-in Contacts app
• APIs are provided to create, update, delete, and query the app’s contacts
• Sync the app’s contact list with a remote list maintained by the app’s cloud
service
File and Protocol Associations
Enables App to App Communication
• App can register a File Association
• Automatically launch your app when a file of the registered type is
received as an email attachment or opened in the browser, or through
Sharepoint
• One app can launch another by sending it a file of the registered type
• App can register a protocol
• Allows your app to automatically launch when another app ‘opens’ a
special URI
• Protocol is the first part of a URI, e.g.
myprotocol:/ShowProducts?CategoryID=aea6ae1f
• App launches another and passes it data in the remainder of the
launch URI
In-App Purchase
Build apps with higher and recurring revenue opportunity
Extend reach
Attract a larger user base
with free baseline
experience
Upsell
Upsell users to purchase
paid digital goods and
services that enhance or
extend the app experience
in the app itself
Customize
Add and modify different
paid options for different
user segments
In-App Purchase used for digital content
Offer digital assets
Durables: buy once & own forever,
e.g. new game levels, maps, game items
Consumables: game currency, movie
rentals, access to digital magazines for 6
months, etc.
Enterprise app deployment
License apps directly to business
Build apps
Build enterprise apps, for
example LOB, Expense
reports, Remote Access,
HR, Sales
Make apps
available
Promote and offer the
apps to enterprise
customers
Monetize
Design the right business
model, e.g. volume discount
Enterprise Deployment process
Company develops or
licenses app
Company acquires and applies certificate to
managed devices
Company deploys through:
Microsoft tools, internal distribution or third party installer
Company manages and revokes on
command
Company Hub
Localization and Globalization
RTL and BiDirectional Support
• Windows Phone 8 supports languages such as Arabic, Hebrew and Persian
that are read from right to left
• FrameworkElement.FlowDirection property allows right-to-left layout
in StackPanels and other content controls
• FlowDirection property also enables RTL text display in text controls
• Sometimes RTL languages contain content that flows from left to right. For
example, a network share name such as \\server1\folder\file.ext, should
always be displayed LTR
• In such cases, you can use the Run element to contain the LTR text, and
then set the FlowDirection property on the Run element to “LeftToRight”
Consumer Store Coverage: Over 180 countries
120+ new
180+
123
31
Developer: Over 180 countries
140+ new
Languages: 50 languages
26 New
Windows Phone 8
50 Languages
Windows Phone 7.5
24 Languages
Windows Phone 8 Apps Run Faster 
• Managed Apps are NGEN’d for you (compiled to native) in the Windows Phone Store in
Windows Phone 8, so typically start and run faster 
• When you build your app in Visual Studio, the code is not compiled into a native image,
but into a machine-independent Common Intermediate Language (CIL) binary file
(formerly known as Microsoft Intermediate Language, or MSIL)
• When you submit your app to the Windows Phone Store, you submit the CIL file
• On submission, CIL file is converted to optimized Machine Dependent Intermediate
Language, or MDIL
• When a user downloads your app to a device, it is pre-jitted to a native image
Getting Started
Developing for
Windows Phone 8.0
67
12/4/2012
Getting The Tools
• The Windows Phone Developer Center is your base for all things Windows Phone related!
• In Windows Phone 7.x, used to be called AppHub and was at http://create.msdn.com
• Now, at http://dev.windowsphone.com
• Get the SDK - FREE download!
• Read articles, browse and download samples and participate in the community forums
• Submit apps for testing and publication to the Windows Phone Store
Windows Phone Dev Center
Development PC Requirements
• Your computer must meet the following system requirements to run
Windows Phone SDK 8.0:
Supported operating systems
Windows 8 64-bit (x64) client versions
Hardware
8 GB of free disk space
4 GB of RAM (recommended)
64-bit (x64) motherboard
Windows Phone Emulator
Windows 8 Pro or higher (for Hyper-V) and
Second Level Address Translation (SLAT)
Second Level Address Translation (SLAT)
• SLAT is required to run the WP8 emulator.
• PCs that support SLAT are Intel-based processors that start with i (e.g., i3, i5, i7, i9) or any
CPUs based on the Nehalem, Westmere, or Sandybridge micro-architectures.
• To determine if your machine supports SLAT, perform the following steps:
• Download SysInternals/TechNet CoreInfo at
http://technet.microsoft.com/en-us/sysinternals/cc835722
• Run "coreinfo -v"
• If you have "*" next to "EPT" you should be good.
• If you have a "-" next to EPT then you should start looking for a new computer :)
Coreinfo Output
• If you see the below, you're in good shape for running the WP8 emulator on this machine:
• If you see the below, you can't run the WP8 emulator on this machine:
Getting a Windows Phone Developer Account
• You do not need a Windows Phone Developer account to download the SDK and start developing apps
• You do need a developer account to unlock a phone for development and to submit apps for testing
and publication in the Windows Phone Store (formerly known as Windows Phone Marketplace)
• To get a Developer Account:
• Included if you have an MSDN subscription
• Free to students who have a Dreamspark subscription
• $99 charge per annum for individual developers
• Register for an account at the Windows Phone Developer Center http://dev.windowsphone.com
Using the
Windows Phone 8.0
Development Tools
Connecting to the Windows Phone
• If you are developing apps for
Windows Phone OS 7.1, you must
install the Zune software to connect
to the Windows PC
• Also used to synchronise media
• Perform phone updates
• Windows Phone 8 devices require
only a USB connection
Developer Phone Registration
• Before you can deploy your own programs to the
device you need to register it as a developer device
• This is done once for a particular phone
• Registered developers can register up to
three devices
• Registered students can register
one device
Deploying to the Phone
• Visual Studio lets you select the target device for your
program when you run it
• The development environment is exactly the same for
both platforms
• You can debug in exactly the same way for each too
Applications on the Phone
• Once you have deployed an application the phone device it is stored on the device
for later use
• You are limited to ten of your own applications on the phone at any one time
• You can also send compiled versions of your application to other registered developers for
them to use on their developer devices
Visual Studio Debugging
• Visual Studio provides an exceptional debugging experience
• This experience extends to Windows Phone
• You can do all the debugging actions in Windows Phone that you can do with a Windows
PC application
• Breakpoints
• Single Stepping
• Viewing and modifying variables
To Test Your app as an Optimized Native Image
• Select Device as the deployment target. You cannot test
native code generation using the emulator
• Deploy and run your app on the device by using
Ctrl+F5 (Start without debugging) or Alt+F1 (Start
Windows Phone Performance Analysis) to test the app
as an optimized native image
• Test the app’s performance and responsiveness
The Windows Phone Emulator
• The Windows Phone emulator runs as a Hyper-V virtual machine on your
Windows PC
• It contains the same software as a “real” phone, but built for the Windows PC
platform
• The emulator is supplied with the Windows Phone SDK
• You can perform location and orientation simulation using the emulator
• You can use the Simulation Dashboard in Visual Studio to manage the
emulator environment
• Lock and unlock the phone
• Control the quality and availability of the network connection
Emulator Performance
• The emulator is not a reliable way of predicting how a program will perform
on a real device
• The processor in a Windows PC may be more powerful than the one
in the phone
• The emulator is for functional testing only
• If you have any concerns about performance you should ensure you run your program on
a real device
• There are profiling tools that you can use to inspect the activity of your programs, both in
the device and in the emulator
Deploying to the Emulator
• Visual Studio lets you select the target device for a
program when it runs
• The emulator is started the first time you deploy to it
• It will then remain running until you stop it, and
maintain its own local storage during that time
• Emulators provided for each of the new screen
resolutions, plus WVGA 512MB to emulate reduced
memory Windows Phone 7.5 devices
Emulator Interface
• You can use the PC mouse to control the emulator
• If you have a multi-touch display you can use multiple touchpoints
to pinch and zoom on the display
• The emulator will emulate the touch keyboard so you can type by
clicking on the keys
• Use the PgUp/PgDn keys to switch between the emulator software
keyboard and using your PC keyboard for text input
Emulator Orientation
• Use the command bar at the right
side of the emulator to access an
extra set of tools
• These allow you to rotate the
emulator into different orientations
• Use this to test how your software
responds to orientation changes
Camera Emulation
• The camera emulator just “takes” a simple photograph and
returns it
• You can use this to show your applications are invoking the
camera task and receiving the result correctly
Demo 5: Photo Snap
Demo 5:
Photo Snap
Location Emulation
• Windows Phone applications can use the emulator
to generate location data for them
• To do this we open the Additional Tools pane on
the emulator
Additional Tools
Additional Tools
• This is the Location tab in the
Additional Tools
• You can click on any location to
“move” the emulator to that position
• You can also place pushpins to
describe a route, and then “replay”
that route
Demo 6:
Location Demo
Lock the Screen in the Emulator
• Showing the Lock Screen in the emulator is a good way of
testing what happens when your app is deactivated
• Using the Keyboard:
• Press F12 on your computer keyboard twice
• Using the Simulation Dashboard:
• On the Visual Studio Tools menu, open the Simulation
Dashboard
Network Simulation
• Simulation Dashboard also includes
Network Simulation
• Test your app on the emulator under
different simulated network conditions
Capturing Screenshots
• It is very useful to be able to take
screenshots of the emulator
• These can be used in documentation
and also to promote the application
in the Marketplace
• The emulator Additional Tools pane
provides a Screenshot tab
Capturing Screenshots on a Real Device
• New in Windows Phone 8!
• Press the power and Windows buttons simultaneously
• Easy to share screenshots on social networks
Summary
• Windows Phone 8 has very many new features
• The shared core means that at a low level, components of the OS are
the same between Windows 8 and Windows Phone 8
• Windows Phone 8 supports XAML+managed, XNA+managed,
Direct3D+native app development, and hybrids of those
• Apps built for Windows Phone OS 7.1 in general run without
modification or recompilation on Windows Phone 8
The information herein is for informational
purposes only an 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.
© 2012 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.