Windows Phone 8 Development – Introduction

1. Introduction (this post)
2. Screen resolutions
3. MVVM
4. Localization
5. …
6. …
7. …
8. …
9. …
10. …

This will be the first post of several regarding Windows Phone 8 development. To get started it would be good to get an overview of what is new and what to expect in upcoming posts. So let’s go through most of the features and technologies provided and available for Windows Phone 8 development.

Shared Core

So the first statement that a lot of people has gotten wrong is about “Shared Core”. That Windows Phone 8 has Windows 8 OS and that you can build apps that runs on both Windows 8 and Windows Phone 8.

This is not exactly true. With shared core we mean

  • Some 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 manufactures work with the same driver model on both platforms
  • Windows Phone 8 now also has support for multi-core and other features like Windows
  • Most important is that this common foundation makes it easier to extend the Windows Phone platform into the future

But where there is a misunderstanding is that shared core does NOT mean

  • that Windows 8 and Windows Phone 8 work against the exact same API

Windows Phone 8 is also said to be backward compatible, meaning all WP7.1 apps will run on WP8, but this is not true either, since all the apps that has used special SDKs, like the Hybrid SDK will not run by default on a WP8 device. So don’t be alarmed if you are missing some of your favorite apps in the Store on your Windows Phone 8 device.

Windows Phone 8 Programming Model

Let’s take a closer look at the Windows Phone 8 Programming Model

  • Windows Phone 8 will use the WinPRT (Windows Phone Runtime) programming model which is a subset of WinRT. This allows a lot of code to actually be shared between the two platforms.
  • We also have access to managed app development targeting WP7.1 and WP8.0
  • Native app dev using WinPRT and Win32
  • Games dev using WP7.1 XNA framework
  • Games dev using Direct3D or DirectX

WP8 Programming Model

managed The .NET API for Windows Phone is the primary managed API used. It contains all the types and APIs from WP7.1 but there as also been a lot of new classes added for Windows Phone 8, like for example, Microsoft.Phone.Wallet and many more…
managedAndNative WinPRT (Windows Phone Runtime) is a subset of the full WinRT with some phone-specific additions. One important part to high-light is that WinPRT is implemented in  C++ and projected into C#, VB.NET and C++ but HTML5/JavaScript projection is not available on Windows Phone 8.
win32Com Win32 and COM API gives you access to native app dev and access to for example:

  • Winsock for low-level networking
  • Camera API
  • and a bunch of COM APIs such as ReadFile, WriteFile and many more…

Note that managed application could call these APIs if we add a native project to the solution, but I don’t think to many projects will need that.

Tile Templates and Tile Sizes

Windows Phone  8 now supports 3 different Tile templates that you can use/support to let users pin your app to the start screen.

tiles

Flip Template, which is similar to what we have in WP7.1 template that flips the tile front to back
Iconic Template (new in WP8) that has a clean iconic design that incorporates Windows Phone Design Principles
Cycle Template (new in WP8). The Cycle Tile template cycles through between one and nine images.

Lock Screen

One new awesome feature is that you can now register your app as a lock screen provider which enables users to select your app to show detailed status on the lock screen. The possibility to select your app as one of the five apps to show quick status as an icon and count. And also select your app as the lock screen background image provider. I see a lot of potential good apps that I would love to be able to get detailed status info from directly on the lock screen. Let’s see if there are some apps that actually use this feature.

Launchers

Windows Phone 8 introduces a few new launchers. Launchers are APIs that helps the user perform common tasks, which means that the users can invoke parts of the phone’s built-in capabilities to perform tasks.

The new launchers in WP8 are:

For a complete list of Tasks available see Windows Phone Dev Center

Maps

One big news is that Bing Maps control has now been set as obsolete/deprecated and the new Maps control is provided by Nokia (although you can still use Bing Maps but it will probably eventually be removed). The new Maps control provided by Nokia is really good and has a lot of good features

  • Vector-based for faster rendering
  • Four cartographic map modes
  • Light and dark color modes
  • Display landmark and pedestrian features

Location and Location Tracking

WinPRT has a new location API that is similar to Windows 8 Location API. The Windows Phone 7.1 .NET Location API is still supported.

We can also implement Background location-tracking apps that
– run continuously in the background when the user navigates away from your app
– enables scenarios such as a Run Tracker, turn-by-turn navigation etc.

Speech

Another really nice feature that existed on WP7 is Speech, but in WP8 we as developers can also add speech support to our apps!

There are two types of voice interactions

  • Voice Commands, that basically allows users to deep-link into your app
  • Speech Recognition and Text-to-Speech APIs

Wallet

  • Credit & Debit  Cards
  • Loyalty & Membership Cards
  • Access Saved Deals
  • Supports NFC ‘Tap to Pay’

More Screen Resolutions

WP8 now supports 3 different screen resolutions

resolutions

More on this in later post regarding what we as developers need to think about to support the different resolutions.

Camera and Photos

  • Lenses
  • New Picture.GetPreviewImage() method to return thumbnail images
  • New Photos extensibility features
  • Background Photo Auto-upload
  • Advanced camera capture APIs for apps that require fine control of the camera

Media

  • Add and remove music files from the users’s collection with SaveSong and Delete methods
  • Each picture saved on the phone will automatically generate two different thumbnail images and be possible to be retrieved by your app
    – A small thumbnail image
    – A preview image that has the same dimensions as the phone’s screen resolution.
    this enables the developers to get better performance when displaying images on the phone
  • There is now also a new PlayStateChangedEventArgs that returns data when the state of the BackgroundAudioPlayer changes. This was very difficult to handle in previous versions and should now enable the developers to create more robust and performing audio apps.

VoIP and Video Chat

  • Incoming VoIP calls work like any other call
  • Integrates with built-in phone features
  • VoIP apps continue to run in the background
  • Available to all developers!

Bluetooth and NFC

  • Create apps that communicate with other phones using Bluetooth technology
  • Bluetooth API enables the following scenarios for Windows Phone 8:
    – App-to-app communication
    – App-to-device communication
  • Proximity API enables:
    – App-to-app connection using Bluetooth technology
    – Establish a Wi-Fi, Bluetooth, or Wi-Fi Direct connection between your app and an instance of your app on a proximate device
    – Send data between devices using NFC.
    – Use a phone to interact with NFC tags

Using NFC developers will now be able to build apps that can easily share data between Windows Phone 8 and a Windows 8 device, can’t wait to see what the community/developers creates!

Networking Enhancements and Changes

  • Windows.Networking WinPRT API
    – New networking API highly compatible with Windows 8
  • Incoming Sockets
    – Supported in both System.Net.Sockets and Windows.Networking.Sockets, which means your app can listen for an incoming network connection
  • Support for IPV6
  • Winsock native API support
    – Helps porting of existing native libraries that use the Winsock API

Storage

Apps can now use the Microsoft.Phone.Storage API to read files from an SD card. More on this in upcoming posts.

Custom Contact Store
  • Create a set of contacts owned exclusively by the app, though visible through the phones built-in Contacts app! How cool isn’t that, although don’t really know what types of apps will use it except apps like Facebook and similar.
  • APIs are provided to create, update, delete, and query the app’s contacts
  • Sync the app’s contact list with a remote list maintained by the app’s cloud service

File and Protocol Associations

This is another really awesome new feature. Apps can now register their own File Associations which means that we can automatically launch your app when a file of the registered type is received as an email attachment or opened in the browser or even through SharePoint. This actually enables App-to-App communications. One app can launch another app by sending it a file of the registered type. If the user opens a file that is associated with your app, this will actually not prevent other apps from registering the same file extensions. How this will actually work in the end is yet to see. A really cool feature but will it be used?

An app can register a protocol that allows your app to automatically launch when another app ‘opens’ a special URI
– Protocol is the first part of the URI, e.g. myprotocol:/ShowItems?ItemID=4711
– App launches another and passes data in the remainder of the launch URI

Windows Phone 8 apps run faster!
In Windows Phone 8 Managed Apps are actually NGEN’d for you (compiled to native) in the Windows Phone Store, which means they will typically start and run faster without any special tasks performed by the developer!! This means that 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) and when you submit your app to the Windows Phone Store, you submit the CIL file and that is converted automatically and optimized to Machine Dependent Intermediate Language, or MDIL. So when the users download your app to their device, it is actually pre-jitted to native image to increase performance!
.
Stuff to know
Other new features we have in WP8 and important stuff we need to know about that I hopefully will cover in upcoming posts are among others
  • In-App Purchase
  • Enterprise App Development
  • Company Hub
  • Converting Apps from 7.1 to 8.0
    – Source Code incompatibilities
    – Binary App Incompatibilities (basically code that behaves differently when run on WP8 compared to WP7.1)
  • Development Tools, Visual Studio tools, Emulator tools, Network Simulations
  • etc…

Hopefully this gives you a good introduction on what new features we have in Windows Phone 8 development and in upcoming posts I will dig in more to give you more meat to the bones!

Happy coding!
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: