Windows Phone Unleashed


imageWant to learn how to build a windows phone application (Become a WP7Dev).  Then join us for the Windows Phone Unleashed Series.  The content was created by Daniel Egan (me) and Bret Stateham.

Windows Phone Unleashed is put on by the community.  It is an all day event with 3 instructor led sessions paired with Hands On Labs that when you are finished complete the Coffee Findr application. At the end of the day there is a app contest with Prizes.

You can download the finished app from the Marketplace .  From this application you will learn the following skills.  Check it out now.

Register for an Event Near You.

  • Working with Live Tiles
  • Periodic Execution
  • Pulling Data from Rest Services
  • Deserializing Json
  • Binding data to your UI
  • Using Bing for Maps and Directions
  • Using Isolated Storage and  SQL CE on the Phone
  • Navigation
  • And much much more

We also have TWO different events this time…. We have also added a Games Development Unleashed Event.  So look for an event near you.  But register quickly… seats go fast for this FREE event.

Register for an Event Near You.

(If you have been to an Unleashed Event before. This is NEW content)


Agenda for both types of events


Line of Business Apps

Introduction to Windows Phone 7 Programming

In this session, we start with a discussion of windows phone, the architecture changes made from 6.5 to 7.0, the hardware specifications and then move into the beginnings of building a WP7 application including…

  1. Application life cycle
  2. Hardware Foundation
  3. Files associated with project template
  4. Splash screen and the importance of 1 second / 19 second loading
  5. Application Bar
  6. Panorama and Pivot controls
  7. MVVM
  8. Marketplace

Connecting to Services

In this session, we will discuss how Cloud Services help to bring power to the phone. We will be binding to a rest based services and show how to search and display the information received. In this session we will also talk about Navigation, passing information between screens, while working with List and detail information.

  1. Navigation
  2. Location
  3. JSON Deserialization
  4. Bing Maps
  5. Isolated Storage
  6. Binding Sample Data
  7. Navigation

Recording Data

In this session we will be adding to our knowledge and learn the importance of live tiles. We will show you how to set up a periodic agent and how to set up and read and write to a SQL Database on Windows Phone.

  1. Live Tiles
  2. SQL CE
  3. Background Processes and Periodic Agents
  4. Launchers and Choosers

Games Development

Introduction to XNA

XNA Game Basics

  1. What is XNA
  2. Game Development Tools
  3. XNA Game Projects
  4. XNA Game Loop
  5. Debugging Games

Working with Images, Sounds and Text

  1. Working with Textures
  2. Playing Songs and Sound Effects
  3. Drawing text with SpriteFonts

Getting User Input

  1. Getting input on the phone
  2. Using the Accelerometer
  3. Using Touch

Game State Management

Managing Game Play

  1. Keeping Score
  2. Tracking Health and Lives
  3. Adding Levels

Managing Screens

  1. Creating Multi-Screen games
  2. Loading content in the background
  3. How to pause the game

Managing State

  1. Phone Application Lifecycle
  2. Supporting Fast Application Switching
  3. Persisting and Restoring State

Silverlight and XNA Integration

  1. Introduction to Silverlight
  2. Silverlight and XNA Integration
  3. Creating a Silverlignt and XNA Game

Advanced XNA Games

Marketplace and Advertisements

  1. Understanding the Windows Phone Marketplace
  2. Submitting your Game to the Marketplace
  3. Adding Advertisements to your game

3D Games

  1. 3D Support in XNA
  2. Creating a simple 3D Game

Multi-Platform Games

  1. Building Games for Phone, PC and XBOX
  2. Other Multi-Platform options

Cloud Integration

  1. Using Windows Azure
  2. Social Gaming Toolkit


Remember… Daniel Egan knows Windows Phone Smile

Phone Gap Tutorial #3 – Reducing the load

This is a   tutorial Series in which I will create a phone gap application for each of the platforms it supports. It is mostly a journey of my own that you get to follow along on.  I will start with Windows Phone and then convert it to IPhone, IPad, Android, Blackberry, Symbian. We will discuss tips and tricks along the way.

In the last post Phone Gap Tutorial #2 we looked at everything that was created for us when you start a project for Windows Phone from scratch. As I said in that post :

The first folder you will notice is the GapLib folder. This contains the Phone Gap dll that is specific to windows phone. This .dll has some interesting side effects when it comes to submitting to the marketplace.

In this post, we will discuss those issues and show you want you need to do to get around them.

If we look at the Solution Explorer we can see that there is a folder with the WP7GapClassLib.dll which is all the code of . We can also see that there is a reference to it as well.


Normally, this would be fine but with Windows Phone and the Windows Phone marketplace, the source code from phone camp contains information on ALL the capabilities.  (Since this is what does, it connects your HTML to the native capabilities). Normally this would be great, but since during the Marketplace verification process it will detect capabilities and list them to the users who will download your application, we don’t want that.

Why don’t you want that?   Well, its simple, if you are writing an app that DOES NOT use contacts, or the phone dialer, or the camera, etc… you don’t want the marketplace to say you do because some users may stay away from your application because you pull to much of their data.

So how do you fix this?  Its easy.   First we remove the reference to WP7GapClassLib (Right click –> Remove), and delete the GabLib Folder



Next we want to add another project to this solutions.  (Right click on Solution in Solution Explorer –> Add Existing Project) and navigate to where you downloaded in the \lib\windows\framework folder.


You will notice that there are 2 projects in here

  • WP7GapClassLib.csproj (This is the one with the FULL Source- we DON’T want this (see above))
  • WP7GapClassLibBare.csproj (This contains the bare minimum for ))  SELECT THIS ONE


Then add a reference to this project from your project (Right click on references –> Add Reference –> Projects Tab)


If you build and run the project, everything should run fine. BUT at this point you don’t have access to any of the capabilities of the native phone from you HTML.

To show you this simply, we will try to use the camera from our HTML 5 (Example borrowed from )

First add a call to getPicture to the onDeviceReady() method., onFail, { quality: 50 }); 

Next, add the onSuccess and onFail methods we pointed to in the getPicture method.

function onSuccess(imageData) {
            var image = document.getElementById('myImage');
            image.src = "data:image/jpeg;base64," + imageData;
        function onFail(message) {
            navigator.notification.alert('Failed because: ' + message); 


Next, in the same document (in the body section), we will add a link that will call the showAlert() function.  

If you try to run this project now, it wont work. And if you look in your Output window, it will show the following.


And you should also get an alert in the emulator (from the onFail function)


That is because since we are only using the WP7ClassLibBare project, we need to add this functionality in if we want to use it. (This is what we want, add ONLY the capabilities that we need)

Right click on the Plugins Folder and select Add Existing Item.

Navigate to where you donwloaded phonegap and go to the \lib\windows\framework\PhoneGap\Commands folder.



Select camera and choose Add As Link.

Now run the code and you will see you have access to the camera. 

Now since we are not using the camera in this application right now, we are not doing anything special with this code. This was just to show you what you will need to do going forward to add functionality to your phonegap application as you build it.

In the next tutorial, we will begin to build the pages in our application and talk about making it METRO.

Other Posts in this Series

(This list will automatically grow as I write them)

[catlist name=phone-gap-tutorial]