Windows Phone - Getting started
Thinking about coding for the upcoming Windows Phone? If you are an existing .NET developer, you're in a good position. If you are already coding in Silverlight or XNA, get with it already! It's amazingly simple to get started.
Start by heading to create.msdn.com, and downloading the free tools. These include Visual Studio Express for Windows Phone, Expression Blend for Windows Phone, XNA Game Studio 4.0, the Windows Phone emulator, and some related tools. If you already have Visual Studio and/or Blend installed, you'll get a number of templates installed to support Phone development. This includes integration with the emulator or a physical phone, new libraries, and support for the phone design surface.
This initial download starts with a misleading <5MB file for setup. Since it's an online installer, the actual setup size is considerably larger - over a gig! It doesn't actually seem to install the Blend/Visual Studio lite products if the full versions are installed, but it's still a very long process. One thing to note - the emulator actually uses processor virtualization to run, so you can't run the development tools within a virtualized environment like Virtual PC or Hyper-V. There's also no Windows XP or Windows Server support.
Anyone can download the tools for free to get started, but without paying the annual registration fee, you can't submit your apps to the marketplace, and you can't debug on a physical device. It's important to know that the emulator is lacking certain features, so if you don't want to pay the fee at first (to enable device debugging), you won't really be able to fully test your code. Missing features include:
- Sensors/Input
- GPS
- Accelerometer
- Camera (although you get a fake image returned for testing)
- Platform software
- Address book*
- Photo hub
- Music hub
- Office hub
- Phone features*
- Mail*
- Calendar
The starred features are available in light forms when requested from the application, but you can't directly access them from the launcher screens.
You can do quite a lot though. You can deploy the application so it appears in the launcher, you can move between screens of your app, and you can trigger a good number of tasks and system launchers. These include:
- Taking (fake) pictures
- Adding or retrieving contacts
- Simulating an outgoing call (sorry, no way to simulate an incoming interruption)
- Selecting a photo from the image library
- Playing a file from the built-in media player
- Composing an email
- Lots more!
In upcoming posts, I'll talk about the application lifecycle (including tombstoning), debugging on a physical device or emulator, and page navigation, and other features as I think about them!