SlideShare a Scribd company logo
1 of 89
Oliver Scheer
Senior Technical Evangelist
Microsoft Deutschland
http://the-oliver.com
Introducing
Windows Phone 8
App Development
Agenda
Introducing Windows Phone 8
New app platform in WP8
Application development models
WP8 version of WinRT
Supported application models
Getting started with WP8 app development
New features overview
Using the Windows Phone Developer Tools
WP7x compatibility
New WP8 Hardware
Beautiful new hardware from Nokia, HTC, Samsung and more…
New multicore chipset
New graphics processor
Increased RAM: 1GB or 512MB
More Screen resolutions
Removable, encryptable storage
NFC
Modern Smartphone Platform
Windows 8 and Windows Phone 8 Share Many Components At The Operating System Level
Shared Windows Core
Windows KernelWindows KernelWindows NT Kernel
OS Modules
• 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)
What ‘Shared Core’ Does – And Doesn’t - Mean
Windows Phone 8 Programming APIs
Windows Phone 8 supports
• Managed app dev using
the WP7.1, WP8.0 .NET
and WinPRT APIs
• Native app dev using
WinPRT and Win32
• Games dev using the
WP7.1 XNA framework
• Games dev using
Direct3D or DirectX
.NET API for
Windows
Phone
Windows
Phone
Runtime
Win32 &
COM
Managed Managed &
Native
Native
WP7.1 XAML & C#/VB
WP8.0 XAML & C#/VB
WP8.0 Games DirectX/Direct 3D & C++
WP7.1 XNA & C#/VB
WP8.0 XAML & C#/VB with Direct3D Graphics
+ C++
+ C++
• 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…!
.NET API for Windows Phone .NET API for
Windows
Phone
Windows
Phone
Runtime
Win32 &
COM
Managed Managed &
Native
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
Windows Phone Runtime API .NET API for
Windows
Phone
Windows
Phone
Runtime
Win32 &
COM
Managed Managed &
Native
Native
Full WinRT (around
11,000 members)
Subset adopted
for Windows
Phone Runtime
(around 2,800
members)
New for
Windows
Phone
Runtime
(around 600
members)
• Phone-specific additions to Windows
Phone Runtime include
• Speech synthesis and recognition
• Windows.Phone.Networking.Voip
• Windows.Phone.PersonalInformation
• LockScreen and LockScreenManager
• More…
• 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
• 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
API Choices for Managed Code Developers
.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
System.Device.Location Windows.Devices.GeoLocation
• 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!
Win32 and COM API .NET API for
Windows
Phone
Windows
Phone
Runtime
Win32 &
COM
Managed Managed &
Native
Native
App Models
Windows Phone 8 offers many
additional ways of building apps
compared to Windows Phone OS
7.1
• 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 UI with Managed Code
.NET API for
Windows
Phone
Windows
Phone
Runtime
Managed Managed
XAML & C#/VB
DEMO 1: XAML and 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 Games using Managed Code
.NET API for
Windows
Phone 7.1
Managed
XNA & C#/VB (+XAML)
XNA Libraries
for Windows
Phone 7.1
DEMO 2: XNA and Managed Code
• 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 App
Windows
Phone
Runtime
Native
Direct3D & C++
Win32 &
COM
Native
• 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
Direct3D and XAML
XAML & C#/VB.NET & C++
.NET API for
Windows
Phone
Windows
Phone
Runtime
Win32 &
COM
Managed Managed Native
Windows
Phone Runtime
(Direct3D)
Native
DEMO 3: Direct3D Games
• 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/Managed plus Native Code
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
• 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 Development
HTML5 App Project Template
DEMO 5: Managed App Displaying HTML Content
Getting Started
Developing for
Windows Phone 8.0
12/18/2014Microsoft confidential25
• 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
Getting The Tools
Windows Phone Dev Center
• Your computer must meet the following system requirements to run
Windows Phone SDK 8.0:
Development PC Requirements
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)
• 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 :)
Second Level Address Translation (SLAT)
• 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:
Coreinfo Output
• 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
Getting a Windows Phone Developer Account
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
• 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
Lock Screen on Windows Phone 8
• 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
• Send an email or SMS message
• Etc…
• New Launchers in Windows Phone 8:
• SaveAppointmentTask
• ShareMediaTask
• MapDownloaderTask
• MapUpdaterTask
• MapsTask
• MapsDirectionsTask
New Launchers
• 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
Maps
• 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-by-turn
navigation
Location and Location Tracking
• 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
Speech
Wallet
Credit & Debit Cards
Loyalty & Membership Cards
Access Saved Deals
Supports NFC ‘Tap to Pay’
• 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
UI Controls
New Controls in Windows Phone 8 SDK
3 Screen Resolutions
WVGA
800 x 480
15:9
WXGA
1280 x 768
15:9
720p
1280 x 720
16:9
• 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
Camera and Photos
• 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 the state of the BackgroundAudioPlayer changes
Media
• 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
VoIP and Video Chat
• 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
Bluetooth and NFC
Better Sharing with NFC
• 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
Other Networking Enhancements
• 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
Storage – Read from SD Card
MicroSD Support
• 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
Custom Contact Store
• 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
File and Protocol Associations
Enables App to App Communication
Customize
Add and modify different paid
options for different user
segments
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
In-App Purchase
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.
License apps directly to business
Monetize
Design the right business
model, e.g. volume discount
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
Enterprise app deployment
Enterprise Deployment process
Company develops or
licenses app
Company deploys through:
Microsoft tools, internal distribution or
third party installer
Company manages and
revokes on command
Company acquires and applies
certificate to managed devices
Company Hub
• 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
server1folderfile.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”
Localization and Globalization
RTL and BiDirectional Support
Consumer Store Coverage: Over 180 countries
120+ new
180+
123
31
Developer: Over 180 countries
140+ new
38 Countries
Windows Phone 7.x
180+ Countries
Windows Phone 8.0
Languages: 50 languages
26 New
Windows Phone 7.5
24 Languages
Windows Phone 8
50 Languages
• 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
Windows Phone 8 Apps Run Faster 
Windows Phone
7.x App
Compatibility
• 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
behaviour changes
Windows Phone OS 7.1 Apps on Windows Phone 8
WP OS
7.1
app
WP 8.0
Runtime/
Libraries
No recompilation
WP
OS
7.1
app
• Instead of breaking WP 7.1 apps
running with the WP 8.0 runtime, quirks
mode is applied to retain WP 7.1
behaviour
• Apps that are upgraded to WP 8.0 and
recompiled run on the phone without
quirks mode being applied
Windows Phone OS 7.1 Apps on Windows Phone 8
WP OS
7.1
app
WP 8.0
Runtime/
Libraries
No recompilation
WP
OS
7.1
app
+Quirks
WP OS
8.0
app
WP
OS
8.0
app
• When converting existing WP7.1 code to WP 8.0, be careful that your code does not rely
on WP 7.1 behaviour
• Two scenarios to consider:
• Source code incompatibility – when the 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 behaviors 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 behavior
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.
Converting Code Developed for WP OS 7.1 to WP 8.0
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
Input/output operations are
performed asynchronously
Input/output operations are
performed synchronously
Thread.CurrentCulture and
Thread.CurrentUICulture properties
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
Item 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
Using the
Windows Phone
8.0
Development
Tools
• 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
Connecting to the Windows Phone
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
• 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
Applications on the Phone
• 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
Visual Studio Debugging
• 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
To Test Your app as an Optimized Native Image
• 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
The Windows Phone Emulator
• 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
Emulator Performance
• 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
Deploying to the Emulator
• 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 Interface
• 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
Emulator Orientation
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
• 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
Location Emulation
81
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
Additional Tools
Demo 6:
Location Demo
• 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
Lock the Screen in the Emulator
• Simulation Dashboard also includes Network
Simulation
• Test your app on the emulator under different
simulated network conditions
Network Simulation
• 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
• New in Windows Phone 8!
• Press the power and Windows buttons simultaneously
• Easy to share screenshots on social networks
Capturing Screenshots on a Real Device
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.
© 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.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION
IN THIS PRESENTATION.

More Related Content

What's hot

.Net framework
.Net framework.Net framework
.Net frameworkArun Pal
 
Windows programming ppt
Windows programming pptWindows programming ppt
Windows programming pptSAMIR CHANDRA
 
.NET Framework 4.0 – Changes & Benefits
.NET Framework 4.0 – Changes & Benefits .NET Framework 4.0 – Changes & Benefits
.NET Framework 4.0 – Changes & Benefits Deepika Chaudhary
 
Dev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiDev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiBill Buchan
 
Dotnet framework
Dotnet frameworkDotnet framework
Dotnet frameworkNitu Pandey
 
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0Antonio Chagoury
 
Windowsphone7
Windowsphone7Windowsphone7
Windowsphone7yuvaraj72
 
.net CLR
.net CLR.net CLR
.net CLRDevTalk
 
Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...
Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...
Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...Ken Cenerelli
 
Introduction to ,NET Framework
Introduction to ,NET FrameworkIntroduction to ,NET Framework
Introduction to ,NET FrameworkANURAG SINGH
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchAndreano Lanusse
 

What's hot (19)

Explore asp.net core 3.0 features
Explore asp.net core 3.0 featuresExplore asp.net core 3.0 features
Explore asp.net core 3.0 features
 
C# on a CHIPs
C# on a CHIPsC# on a CHIPs
C# on a CHIPs
 
Presentation[1]
Presentation[1]Presentation[1]
Presentation[1]
 
.Net framework
.Net framework.Net framework
.Net framework
 
Windows programming ppt
Windows programming pptWindows programming ppt
Windows programming ppt
 
.NET Framework 4.0 – Changes & Benefits
.NET Framework 4.0 – Changes & Benefits .NET Framework 4.0 – Changes & Benefits
.NET Framework 4.0 – Changes & Benefits
 
Dev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiDev buchan leveraging the notes c api
Dev buchan leveraging the notes c api
 
Vb.net class notes
Vb.net class notesVb.net class notes
Vb.net class notes
 
Dotnet framework
Dotnet frameworkDotnet framework
Dotnet framework
 
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
 
Introduction to .NET Framework
Introduction to .NET FrameworkIntroduction to .NET Framework
Introduction to .NET Framework
 
CLI313
CLI313CLI313
CLI313
 
Windowsphone7
Windowsphone7Windowsphone7
Windowsphone7
 
Python Intro
Python IntroPython Intro
Python Intro
 
.net CLR
.net CLR.net CLR
.net CLR
 
Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...
Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...
Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference ...
 
Introduction to ,NET Framework
Introduction to ,NET FrameworkIntroduction to ,NET Framework
Introduction to ,NET Framework
 
.Net Overview
.Net Overview.Net Overview
.Net Overview
 
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and MonotouchDelphi Prism for iPhone/iPad and Linux with Mono and Monotouch
Delphi Prism for iPhone/iPad and Linux with Mono and Monotouch
 

Similar to Intro WP8 App Dev Agenda New Features Hardware OS Share

Xe OneDay - Modernizing Enterprise Apps
Xe OneDay - Modernizing Enterprise AppsXe OneDay - Modernizing Enterprise Apps
Xe OneDay - Modernizing Enterprise AppsMirco Vanini
 
Windows 8 mobile app development
Windows 8 mobile app developmentWindows 8 mobile app development
Windows 8 mobile app developmentTirth Thakkar
 
.NET Conf 2021 - Hot Topics Desktop Development
.NET Conf 2021 - Hot Topics Desktop Development.NET Conf 2021 - Hot Topics Desktop Development
.NET Conf 2021 - Hot Topics Desktop DevelopmentMirco Vanini
 
.NET Conf 2020 - Hot Topics Desktop Development
.NET Conf 2020 - Hot Topics Desktop Development.NET Conf 2020 - Hot Topics Desktop Development
.NET Conf 2020 - Hot Topics Desktop DevelopmentMirco Vanini
 
Introducing Windows Phone 8 Development
Introducing Windows Phone 8 DevelopmentIntroducing Windows Phone 8 Development
Introducing Windows Phone 8 DevelopmentDave Bost
 
Learn the java basic programming with example and syntaxchapter1-part-b.pptx
Learn the java basic programming with example and syntaxchapter1-part-b.pptxLearn the java basic programming with example and syntaxchapter1-part-b.pptx
Learn the java basic programming with example and syntaxchapter1-part-b.pptxGaytriMate
 
Developing Apps for Windows Phone 8
Developing Apps for Windows Phone 8Developing Apps for Windows Phone 8
Developing Apps for Windows Phone 8KMS Technology
 
Mob02 windows phone 8.1 app development
Mob02   windows phone 8.1 app development Mob02   windows phone 8.1 app development
Mob02 windows phone 8.1 app development DotNetCampus
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern DesktopOren Novotny
 
Developing Windows 10 Hosted Web Apps
Developing Windows 10 Hosted Web AppsDeveloping Windows 10 Hosted Web Apps
Developing Windows 10 Hosted Web AppsChris Dufour
 
Introducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development PlatformIntroducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development PlatformMariano Sánchez
 
.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel Zikmund.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel ZikmundKarel Zikmund
 
Introduction to building apps for windows phone 8
Introduction to building apps for windows phone 8Introduction to building apps for windows phone 8
Introduction to building apps for windows phone 8Khalil Saleem
 
Evolution of .NET Framework and Features of different versions
Evolution of .NET Framework and Features of different versionsEvolution of .NET Framework and Features of different versions
Evolution of .NET Framework and Features of different versionsNilanshu Srivastava
 
Universal Apps Oct 2014
Universal Apps Oct 2014Universal Apps Oct 2014
Universal Apps Oct 2014Joe Healy
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)Shoaib Ghachi
 
Future of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsFuture of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsAniruddha Chakrabarti
 

Similar to Intro WP8 App Dev Agenda New Features Hardware OS Share (20)

Xe OneDay - Modernizing Enterprise Apps
Xe OneDay - Modernizing Enterprise AppsXe OneDay - Modernizing Enterprise Apps
Xe OneDay - Modernizing Enterprise Apps
 
Windows 8 mobile app development
Windows 8 mobile app developmentWindows 8 mobile app development
Windows 8 mobile app development
 
.NET Conf 2021 - Hot Topics Desktop Development
.NET Conf 2021 - Hot Topics Desktop Development.NET Conf 2021 - Hot Topics Desktop Development
.NET Conf 2021 - Hot Topics Desktop Development
 
.NET Conf 2020 - Hot Topics Desktop Development
.NET Conf 2020 - Hot Topics Desktop Development.NET Conf 2020 - Hot Topics Desktop Development
.NET Conf 2020 - Hot Topics Desktop Development
 
Windows 8 Development
Windows 8 DevelopmentWindows 8 Development
Windows 8 Development
 
Introducing Windows Phone 8 Development
Introducing Windows Phone 8 DevelopmentIntroducing Windows Phone 8 Development
Introducing Windows Phone 8 Development
 
Windows Phone Introduction
Windows Phone IntroductionWindows Phone Introduction
Windows Phone Introduction
 
Learn the java basic programming with example and syntaxchapter1-part-b.pptx
Learn the java basic programming with example and syntaxchapter1-part-b.pptxLearn the java basic programming with example and syntaxchapter1-part-b.pptx
Learn the java basic programming with example and syntaxchapter1-part-b.pptx
 
Developing Apps for Windows Phone 8
Developing Apps for Windows Phone 8Developing Apps for Windows Phone 8
Developing Apps for Windows Phone 8
 
Mob02 windows phone 8.1 app development
Mob02   windows phone 8.1 app development Mob02   windows phone 8.1 app development
Mob02 windows phone 8.1 app development
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
 
Developing Windows 10 Hosted Web Apps
Developing Windows 10 Hosted Web AppsDeveloping Windows 10 Hosted Web Apps
Developing Windows 10 Hosted Web Apps
 
Introducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development PlatformIntroducing the Windows Phone 8.1 App Development Platform
Introducing the Windows Phone 8.1 App Development Platform
 
.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel Zikmund.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Amsterdam 2017 - .NET Standard -- Karel Zikmund
 
Introduction to building apps for windows phone 8
Introduction to building apps for windows phone 8Introduction to building apps for windows phone 8
Introduction to building apps for windows phone 8
 
Evolution of .NET Framework and Features of different versions
Evolution of .NET Framework and Features of different versionsEvolution of .NET Framework and Features of different versions
Evolution of .NET Framework and Features of different versions
 
Universal Apps Oct 2014
Universal Apps Oct 2014Universal Apps Oct 2014
Universal Apps Oct 2014
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
 
Future of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsFuture of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows Platforms
 
Session i
Session iSession i
Session i
 

Intro WP8 App Dev Agenda New Features Hardware OS Share

  • 1. Oliver Scheer Senior Technical Evangelist Microsoft Deutschland http://the-oliver.com Introducing Windows Phone 8 App Development
  • 2. Agenda Introducing Windows Phone 8 New app platform in WP8 Application development models WP8 version of WinRT Supported application models Getting started with WP8 app development New features overview Using the Windows Phone Developer Tools WP7x compatibility
  • 3. New WP8 Hardware Beautiful new hardware from Nokia, HTC, Samsung and more…
  • 4. New multicore chipset New graphics processor Increased RAM: 1GB or 512MB More Screen resolutions Removable, encryptable storage NFC Modern Smartphone Platform
  • 5. Windows 8 and Windows Phone 8 Share Many Components At The Operating System Level Shared Windows Core Windows KernelWindows KernelWindows NT Kernel OS Modules
  • 6. • 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) What ‘Shared Core’ Does – And Doesn’t - Mean
  • 7. Windows Phone 8 Programming APIs Windows Phone 8 supports • Managed app dev using the WP7.1, WP8.0 .NET and WinPRT APIs • Native app dev using WinPRT and Win32 • Games dev using the WP7.1 XNA framework • Games dev using Direct3D or DirectX .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed Managed & Native Native WP7.1 XAML & C#/VB WP8.0 XAML & C#/VB WP8.0 Games DirectX/Direct 3D & C++ WP7.1 XNA & C#/VB WP8.0 XAML & C#/VB with Direct3D Graphics + C++ + C++
  • 8. • 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…! .NET API for Windows Phone .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed Managed & Native Native
  • 9. • 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 Windows Phone Runtime API .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed Managed & Native Native Full WinRT (around 11,000 members) Subset adopted for Windows Phone Runtime (around 2,800 members) New for Windows Phone Runtime (around 600 members) • Phone-specific additions to Windows Phone Runtime include • Speech synthesis and recognition • Windows.Phone.Networking.Voip • Windows.Phone.PersonalInformation • LockScreen and LockScreenManager • More…
  • 10. • 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 • 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 API Choices for Managed Code Developers .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 System.Device.Location Windows.Devices.GeoLocation
  • 11. • 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! Win32 and COM API .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed Managed & Native Native
  • 12. App Models Windows Phone 8 offers many additional ways of building apps compared to Windows Phone OS 7.1
  • 13. • 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 UI with Managed Code .NET API for Windows Phone Windows Phone Runtime Managed Managed XAML & C#/VB
  • 14. DEMO 1: XAML and Managed Code
  • 15. • 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 Games using Managed Code .NET API for Windows Phone 7.1 Managed XNA & C#/VB (+XAML) XNA Libraries for Windows Phone 7.1
  • 16. DEMO 2: XNA and Managed Code
  • 17. • 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 App Windows Phone Runtime Native Direct3D & C++ Win32 & COM Native
  • 18. • 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 Direct3D and XAML XAML & C#/VB.NET & C++ .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed Managed Native Windows Phone Runtime (Direct3D) Native
  • 20. • 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/Managed plus Native Code XAML & C#/VB.NET & C++ .NET API for Windows Phone Windows Phone Runtime Win32 & COM Managed Managed Native
  • 21. DEMO 4: Managed and Native Component Interop
  • 22. • 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 Development
  • 23. HTML5 App Project Template
  • 24. DEMO 5: Managed App Displaying HTML Content
  • 25. Getting Started Developing for Windows Phone 8.0 12/18/2014Microsoft confidential25
  • 26. • 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 Getting The Tools
  • 28. • Your computer must meet the following system requirements to run Windows Phone SDK 8.0: Development PC Requirements 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)
  • 29. • 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 :) Second Level Address Translation (SLAT)
  • 30. • 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: Coreinfo Output
  • 31. • 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 Getting a Windows Phone Developer Account
  • 32. Overview of New Features for Developers in Windows Phone 8.0 Coming up in the rest of this course…
  • 33. 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
  • 34. • 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 Lock Screen on Windows Phone 8
  • 35. • 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 • Send an email or SMS message • Etc… • New Launchers in Windows Phone 8: • SaveAppointmentTask • ShareMediaTask • MapDownloaderTask • MapUpdaterTask • MapsTask • MapsDirectionsTask New Launchers
  • 36. • 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 Maps
  • 37. • 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-by-turn navigation Location and Location Tracking
  • 38. • 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 Speech
  • 39. Wallet Credit & Debit Cards Loyalty & Membership Cards Access Saved Deals Supports NFC ‘Tap to Pay’
  • 40. • 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 UI Controls New Controls in Windows Phone 8 SDK
  • 41. 3 Screen Resolutions WVGA 800 x 480 15:9 WXGA 1280 x 768 15:9 720p 1280 x 720 16:9
  • 42. • 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 Camera and Photos
  • 43. • 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 the state of the BackgroundAudioPlayer changes Media
  • 44. • 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 VoIP and Video Chat
  • 45. • 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 Bluetooth and NFC
  • 47. • 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 Other Networking Enhancements
  • 48. • 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 Storage – Read from SD Card MicroSD Support
  • 49. • 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 Custom Contact Store
  • 50. • 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 File and Protocol Associations Enables App to App Communication
  • 51. Customize Add and modify different paid options for different user segments 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 In-App Purchase
  • 52. 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.
  • 53. License apps directly to business Monetize Design the right business model, e.g. volume discount 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 Enterprise app deployment
  • 54. Enterprise Deployment process Company develops or licenses app Company deploys through: Microsoft tools, internal distribution or third party installer Company manages and revokes on command Company acquires and applies certificate to managed devices
  • 56. • 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 server1folderfile.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” Localization and Globalization RTL and BiDirectional Support
  • 57. Consumer Store Coverage: Over 180 countries 120+ new 180+ 123 31
  • 58. Developer: Over 180 countries 140+ new 38 Countries Windows Phone 7.x 180+ Countries Windows Phone 8.0
  • 59. Languages: 50 languages 26 New Windows Phone 7.5 24 Languages Windows Phone 8 50 Languages
  • 60. • 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 Windows Phone 8 Apps Run Faster 
  • 62. • 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 behaviour changes Windows Phone OS 7.1 Apps on Windows Phone 8 WP OS 7.1 app WP 8.0 Runtime/ Libraries No recompilation WP OS 7.1 app
  • 63. • Instead of breaking WP 7.1 apps running with the WP 8.0 runtime, quirks mode is applied to retain WP 7.1 behaviour • Apps that are upgraded to WP 8.0 and recompiled run on the phone without quirks mode being applied Windows Phone OS 7.1 Apps on Windows Phone 8 WP OS 7.1 app WP 8.0 Runtime/ Libraries No recompilation WP OS 7.1 app +Quirks WP OS 8.0 app WP OS 8.0 app
  • 64. • When converting existing WP7.1 code to WP 8.0, be careful that your code does not rely on WP 7.1 behaviour • Two scenarios to consider: • Source code incompatibility – when the 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 behaviors 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 behavior 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. Converting Code Developed for WP OS 7.1 to WP 8.0
  • 65. 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 Input/output operations are performed asynchronously Input/output operations are performed synchronously Thread.CurrentCulture and Thread.CurrentUICulture properties 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
  • 66. Binary App Incompatibility Examples Code that Behaves Differently When run on WP8 , whether it is compiled for WP OS 7.1 or for WP8 Item 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
  • 68. • 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 Connecting to the Windows Phone
  • 69. 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
  • 70. 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
  • 71. • 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 Applications on the Phone
  • 72. • 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 Visual Studio Debugging
  • 73. • 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 To Test Your app as an Optimized Native Image
  • 74. • 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 The Windows Phone Emulator
  • 75. • 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 Emulator Performance
  • 76. • 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 Deploying to the Emulator
  • 77. • 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 Interface
  • 78. • 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 Emulator Orientation
  • 79. 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
  • 81. • 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 Location Emulation 81 Additional Tools
  • 82. • 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 Additional Tools
  • 84. • 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 Lock the Screen in the Emulator
  • 85. • Simulation Dashboard also includes Network Simulation • Test your app on the emulator under different simulated network conditions Network Simulation
  • 86. • 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
  • 87. • New in Windows Phone 8! • Press the power and Windows buttons simultaneously • Easy to share screenshots on social networks Capturing Screenshots on a Real Device
  • 88. 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
  • 89. 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. © 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. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Editor's Notes

  1. Managed Managed apps use XAML to define the user interface and Visual Basic or C# as the coding language. Existing Windows Phone apps that were written using these techniques are fully compatible with Windows Phone 8. XAML-based apps have gained new features such as new controls and auto-scaling to high resolution. New managed APIs coming to Windows Phone 8 include a new map control powered by Nokia maps and a wallet API for storing payment methods and enabling NFC-based payments.
  2. Native Windows Phone 8 SDK supports native development, including significant subset of the Windows 8 SDK, enabling developers to share a significant amount of code between Windows 8 and the phone, particularly for native apps. With the addition of native development support, Windows Phone 8 reduces the need to port and maintain components such as compute engines, graphic libraries, and API sets. In addition to native development, Direct3D is being added to the family of Windows Phone technologies. This means that for the first time, a Direct3D-based PC game can share much of its code base with a phone version, and developers can use state-of-the-art middleware tools and engines that power the industry’s biggest game titles to develop games for Windows Phone. Direct3D app refers to apps that are written entirely in native code, and which use only Direct3D for their UI. This type of app uses a completely different app model than managed apps, and can’t use many of the features of managed apps, such as live Tiles and push notifications.. However, in Windows Phone 8 Developer Preview several new features were added for Direct3D apps to provide software keyboard input support, device theme, and screen resolution detection, and a set of Launchers and Choosers for adding many common phone tasks to your Windows Phone app. Windows Phone 8 SDK supports a subset of the Direct3D library at the 9_3 feature level.
  3. Direct3D and XAML Direct3D and XAML app development is an attractive choice for developers who want the graphics capabilities of Direct3D but also want to use some of the features only available to managed apps such as Tiles and XAML controls. You can use the DrawingSurface and DrawingSurfaceBackgroundGrid controls to incorporate Direct3D graphics into managed apps to take advantage of managed code features with a very small performance loss.
  4. XAML/Managed + Native Windows Phone 8 SDK supports the development of solutions where the primary UI is written in XAML using C# or VB, but where a native project is included to perform some processing in native code. This allows the porting of existing components written in C++ for other platforms to Windows Phone and allows managed apps to use them. Developers can enjoy all the productivity and benefits of developing most of the UI of their app using XAML and managed code, but still call out to ported components that have previously been developed in C++ for other platforms. These could be components such as compute engines, graphic libraries, and API sets.
  5. HTML HTML-based phone apps are not a supported app model in Windows Phone 8 SDK. However, a developer can create an app that uses an embedded browser control to display local HTML content. Also, in Windows Phone 8 SDK, the phone’s browser has been upgraded to Internet Explorer Mobile 10, with a host of new features such as a robust HTML5/CSS3 implementation, Scalable Vector Graphics (SVG), ES5, IndexedDB, gesture events, and the addition of the high-performance scripting engine, creating new, interesting possibilities for Windows Phone 8 SDK HTML developers.
  6. HTML5 App Project Template A developer can create a managed app with a XAML front end that uses an embedded browser control to display local HTML content, and it’s possible to access phone APIs by using the InvokeScript method and ScriptNotify events.
  7. There are several things you can do with Tiles: Support multiple sizes, customizable by your customer. Choose from one of three visual templates to help your app stand out. Offer a variety of secondary Tiles. Control which page your customers land on when clicking on your secondary Tiles. The Tile API wraps the OS Tile experience so 3rd party app developers have access to exactly the same tile functionality as the built-in apps.
  8. You can use Launchers in your Windows Phone 8 Developer Preview app to help a user perform common tasks. The following Launchers are new in Windows Phone 8 Developer Preview. SaveAppointmentTask MapDownloaderTask MapUpdaterTask MapsTask MapsDirectionsTask ShareMediaTask Through the ShareMediaTask class, your app can directly access the share picker, so users can share photos like they do using the built-in photo viewer.
  9. Speech In Windows Phone 8 SDK, users can interact with your app using their voice.
  10. Windows Phone 8 SDK introduces the Wallet, which app users can use to do the following: Collect coupons, credit cards, memberships, loyalty cards, and more in one place. Manage the payment instruments that they use in the app and music store. Link items in the Wallet to apps on their phone. Make contactless transactions, using Near-Field Communication (NFC), in some markets. The Wallet gives app developers the ability to provide users with a richer experience by integrating with their Wallet items. Using the functionality provided through the Wallet namespace, you can create, read, write, and delete Wallet items from your app. The Wallet integration is additional functionality that allows you to better reach customers by being able to engage with them on an additional new surface area. In addition, Wallet items enable users to deep link in to your app so that you can provide a more meaningful in-app experience.
  11. LongListSelector The LongListSelector the Swiss Army Knife of selection. Think of it as ListBox++--, it has everything you expect from ListBox plus a bunch of advanced capabilities and great on-device performance minus the levels of abstraction and generality that tend to slow ListBox down. LongListSelector supports flat lists, grouped lists (with headers!), and also implements the "jump list" header navigation UI that makes the "People" app so efficient!  
  12. With Windows Phone 8 SDK, you can create Voice over IP (VoIP) apps that allow users to make audio and video calls over their data connection. VoIP apps are integrated into the built-in phone experience so that, for example, incoming calls are displayed using the same phone UI as regular cellular calls.
  13. On two devices that each have a Near-Field Communication (NFC) chip, app users can perform these scenarios simply by tapping their phones, or phone and tablet together
  14. Windows.Net.Networking The Windows Runtime API, Windows.Networking.Sockets, has been adopted for Windows Phone 8. It has been implemented as a Windows Phone Runtime API, making it easy to use in whatever supported programming language you choose. Although we've enhanced the .NET API, System.Net.Sockets, to support more features such as IPv6 and listener sockets, you should consider using the new API for sockets programming because it is more portable than the .NET API. Windows.Networking.Sockets has been built from the ground up to be clean, secure, and easy-to-use APIs that enforce best practices. Incoming sockets Windows Phone 8 Developer Preview introduces the enhancements to incoming sockets. System.Net.Sockets and Windows.Networking.Sockets both support incoming sockets, which means your app can listen for an incoming network connection, and then bind to that connection. Support for IPv6 Support for the 128-bit addressing system for devices on a network has been added to System.Net.Sockets, and also is supported in Windows.Networking.Sockets. Winsock native API support Winsock native APIs are supported in Windows Phone 8 SDK. One key advantage of using Winsock APIs is that you can reuse the custom networking functionality that you’ve already implemented using Winsock, so it’s easier for you to create your app on the Windows Phone OS 8.0 platform.
  15. On Windows Phone 8, you can create a custom contact store for your app. When you save contacts to this store, they will appear on the phone’s People hub, integrated with the user’s other contacts. Your contact store can use the standard set of contact properties, such as name and address, but you can also store custom properties for each contact. The contact store APIs also provides a mechanism for you to enumerate changes between your custom contact store on the phone and a contact store you maintain in a cloud service in order to synchronize the two stores. Note: The custom contact store APIs only provide access to the contacts created by your app. If your app needs read-access to the phone’s contact store or calendar, there are different APIs that you should use.
  16. You can use file and protocol associations in Windows Phone 8 to automatically launch your app when another app launches a particular file type or protocol. For example, a file association allows your app to launch to handle an email attachment. You can also use the association launching API to launch another app based on a specific file type or protocol.
  17. Using IN-App Purchasing, you can create apps or games that sell virtual products for real money Microsoft servers host the catalog of products that are available for in-app purchasing, including price and descriptive metadata Microsoft also provides a commerce infrastructure, including methods for users to pay in 190 regions around the world All purchase methods that users can use to purchase apps and games are supported for in-app purchasing The app or game must host and deliver any content associated with the in-app product
  18. For each product that users can purchases through in-app purchasing, a developer enters a description in Windows Phone Dev Center, in addition to prices for each region where users can make the in-app purchase. Using the APIs in Windows Phone 8 Developer Preview, a developer can list, within an app, the products that are available for users to purchase in that app. Developers don’t need to write special code for handling different types of purchase instruments. All purchase methods that users can use to purchase apps and games are supported for in-app purchasing. The app or game must host and deliver any content associated with the in-app product.
  19. The new project templates create projects that are setup for localization and globalization. They contain all the code elements you need to localize your app.
  20. 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. However, there are occasional differences in behavior between versions of the Windows Phone Application Platform. Typically, the new behaviour includes a feature improvement or a bug fix.
  21. Windows Phone 8 introduces feature improvements or behavior changes that may cause incompatibility issues for existing apps. For some features and APIs, rather than introducing a breaking change, the Windows Phone Application Platform provides a quirks mode that preserves the legacy behavior and applies it where appropriate, depending on the version of the Windows Phone the app was originally built and tested for. If the target version is Windows Phone OS 7.1, quirks mode either emulates the same behavior or uses the same code as Windows Phone OS 7.1. In other words, the app runs in Windows Phone 8 as it did when it was tested against the runtime it originally targeted. However, if the source code for an app that targets Windows Phone OS 7.1 is recompiled to target Windows Phone 8, quirks mode is no longer in effect. Because the app now targets Windows Phone 8, it executes the new code in all cases. Quirks mode is not an opt-in or configurable feature—it is applied automatically depending on an app's target platform. There are two scenarios in which a Windows Phone OS 7.1 app may behave differently when it runs on Windows Phone 8 Developer Preview. Source incompatibility and quirks are applied. With source app compatibility issues, there is a runtime quirk provided in Windows Phone 8 Developer Preview that executes the legacy Windows Phone OS 7.1 behavior regardless of the whether the phone is a Windows Phone OS 7.1 or Windows Phone 8 Developer Preview device. When the same app is recompiled for Windows Phone 8 Developer Preview the quirk is no longer applied and the app behaves differently. Binary app incompatibility: When an app that is compiled for Windows Phone OS 7.1 is run on Windows Phone 8 Developer Preview, but does not operate the same because of a difference in runtime behavior.
  22. There are two scenarios in which a Windows Phone OS 7.1 app may behave differently when it runs on Windows Phone 8 Developer Preview. Source incompatibility and quirks are applied. With source app compatibility issues, there is a runtime quirk provided in Windows Phone 8 Developer Preview that executes the legacy Windows Phone OS 7.1 behavior regardless of the whether the phone is a Windows Phone OS 7.1 or Windows Phone 8 Developer Preview device. When the same app is recompiled for Windows Phone 8 Developer Preview the quirk is no longer applied and the app behaves differently. Binary app incompatibility: When an app that is compiled for Windows Phone OS 7.1 is run on Windows Phone 8 Developer Preview, but does not operate the same because of a difference in runtime behavior
  23. The table gives a few examples of quirks mode behavior for common language runtime features and in the .NET Framework for Windows Phone. Windows Phone apps compiled for WP OS 7.1 will run on WP8 with quirks mode applied, so they retain their Wpos 7.1 behaviour. However, if you then upgrade the project to WP8, recompile and re-deploy, the same code will now run without quirks mode applied, so some changes in behaviour may be encountered. Typically, problems will only be encountered if you have written code that implicitly or explicitly assumed WP OS 7.1 behaviour.
  24. The table shows a few examples of the app compatibility issues between the Windows Phone OS 7.1 and Windows Phone 8 Developer Preview platforms that are not affected by quirks mode. Some of these changes may require modification to your apps so they run the same on Windows Phone OS 7.1 and Windows Phone 8. There are very many more! Read the documentation!
  25. Connecting to the Windows Phone When you connect a Windows Phone OS 7.1 to a PC for the first time, it will prompt you to download and install the Zune software application onto your PC. This software must be running on the PC to provide the connection to the phone to synchronize media and apply OS updates. Windows Phone 8 devices do not need Zune. Just a USB cable will suffice. When you connect a phone with a USB cable to your PC, the Zune software will launch.        
  26. Developer Phone Registration Before you can debug apps on a real device, you must developer unlock the phone. To do this, you must register on AppHub and pay the $99 per year subscription for a regular developer which then allows you to unlock up to three devices. If you are a student registered in the Drreamspark program, you can register for free and that allows you to unlock a single device. You use the Developer Phone Registration tool which comes with the SDK to register or unregister a phone for development. You have good control over this process, both using the registration tool and also via the App Hub dashboard. Once a phone has been registered in this way it can be used to receive programs from any version of Visual Studio, on any machine. This is much more relaxed than some programs from other vendors.      
  27. Deploying to the Phone You can select the target for the debug session using the dropdown in the Visual Studio toolbar. If you select ‘Device’, the application runs on the phone while attached to the debugger which means you can single step code while programs are running in the phone, and also stop at breakpoints.      
  28. Applications on the Phone When you deploy an application onto a developer-unlocked phone, it is installed alongside any other apps that you install onto the phone through the normal channels, via Marketplace. You can also send the zap file for your app to other developers and they can easily install it onto any developer unlocked phone (or the emulator) by using the Application Deployment tool that comes with the SDK. You are limited to 10 developer apps installed at any time, so you will get an error if you try to install an eleventh. To continue, you must uninstall one of the 10 developer apps by tap and hold on it on the Programs menu on the phone, and then tapping ‘Uninstall’. These restrictions are to prevent too many “sideloaded” programs getting passed around developers.        
  29. Visual Studio debugging This is a big feature. Debugging support in Visual Studio is superb for apps running on either a real device or on the emulator.      
  30. The Windows Phone Emulator The emulator runs a full copy of the Windows Phone OS inside a virtual machine. You can debug your apps on the emulator pretty much the same way as when running on the real phone. The emulator contains most of the complete Windows Phone experience It does have the browser and will provide the phone behaviours for things like placing calls and sending SMS messages It also contains an emulation of the Windows Phone camera, GPS and motion sensors You can also use the emulator to capture screenshots of programs running on the phone      
  31. Emulator Performance Although the emulator runs a proper version of the Windows Phone OS inside a virtual machine, it is running on PC hardware so performance will not be the same as on a real device. They do restrict performance, so it only runs on a single core of a multi-core PC, and XNA games still refresh at 30fps, but certain aspects of an apps performance will not be the same. This tends to become most obvious when you have complex Silverlight animations that may look great on the emulator, but don’t work so well on a real device. The key message here is that you should try to test on one or more real devices to accurately gauge your apps performance on real devices.      
  32. Deploying to the Emulator Simply select the appropriate target in the dropdown on the Visual Studio toolbar.  
  33. Emulator Interface You click with your mouse to simulate touching the screen of the phone. If you have a PC that has a touch sensitive screen, then you can use touch directly onto the emulator screen, just as with a real phone. The emulator is multi-touch aware as well, so you can do pinch and stretch operations and other things that require multiple touch points of contact. Using the PC Keyboard You can press the PgUp (Page Up) key on your PC keyboard to hide the on screen keyboard, and then you can enter text into the phone using your PC keyboard. PgDn (Page Down) reverses this and switches back to the on-screen keyboard. This is not just about making it easier to enter text into apps running on the emulator. Some versions of Windows Phone have hardware keyboards, and that this allows you to test your apps as if they are running on such phones.      
  34. Emulator Orientation You can hover your mouse over the top right of the emulator to show the toolbar. One of the icons on the toolbar allows you to change the orientation of the emulator. When the orientation changes on the emulator or when the user tips over a real phone, the Page OrientationChanged event fires. You can write apps that respond to orientation changes by changing their layout to better suit the re-orientated screen. Most applications support portrait mode. Most games work better in landscape mode. You can choose to have your apps work only in portrait or in landscape, or you can write them to support both and respond to OrientationChanged events to apply a different layout to the UI of your app. Landscape Orientation The button on the emulator allows you to ‘rotate’ the phone either clockwise or anti-clockwise. The supported orientations are portrait, landscape left or landscape right. Note that ‘upside down’ is not supported.    
  35. Camera Emulation The emulator supports an emulated camera. You cannot take real pictures with the emulated camera, even if your laptop has a webcam. When the emulated camera is activated, the viewfinder display shows a simple solid block that moves around the perimeter of the screen. When you ‘take’ the picture it captures the blank screen with the block at that moment. You can use this to test programs that take pictures.  
  36. For demonstration notes please look in the “Demonstration” folder and open the corresponding Word document.
  37. Location Emulation You can even use the emulator to test apps that use Location services. If you click the lowest button on the emulator toolbar, you can activate the Additional Tools pane. This has tools for emulating the phones current position, for emulating the tilt and rotation of the emulator and for capturing screenshots. These tools are all new in the Mango SDK.  
  38. Additional Tools The Location tab of the Additional Tools pane allows you to set the current ‘position’ of the emulator. By default, the emulators’ position is ‘Unknown’, but as soon as you click on the map on the Location tab, it creates a pushpin at that location, and the phone position is set to that location. If the app you are testing has an active GeoLocater object, a PositionChanged event will fire that your app software can respond to. The default map shown is centered on Microsoft campus in Redmond, WA, but you can move the map to any location in the world. You can type into the search box at the top of the screen to look for a named location anywhere in the world and position the map at that location. When you have created a number of pushpins on the map that describe a route, you can export them to a file. You can import a file of locations and load them onto the map as pushpins. You can replay a route from pushpins on the map and set the time interval between locations. The app you are testing will then get a sequence of PositionChanged events so you can test how your app responds to a sequence of changes of location.  
  39. For demonstration notes please look in the “Demonstration” folder and open the corresponding Word document.  
  40. Capturing Screenshots Screenshots are valuable for putting on web pages or any other form of documentation of your app. Most importantly, you need at least one screenshot when you submit your app for publishing on Marketplace. The screenshot is shown in the Marketplace app on the phone, and on the marketplace entry for your app in Zune and in the web marketplace (http://www.windowsphone.com/marketplace ).