Tip – Windows Phone Mango Training Videos

There are a great series of training videos available from those nice people at MSDEV at http://www.msdev.com/Directory/SeriesDescription.aspx?CourseId=174   If you get the chance (and you have the bandwidth) I would urge you to watch them online now.

However, if you are like me (bandwidth and time challenged) then you might want to download them for viewing later.  Two options present themselves:

The first is to go into the download page of each video and download them in your browser (that can be a little time consuming).

The second is the essence of this tip and involves using a third party application called “free download manager”


I use this app all the time for batch downloading of all sorts of files.  One of the useful features that I often take advantage of is the option to download a list of files from the clipboard (CTRL+SHIFT+V).

For this particular series I noticed that the urls for all the videos were consecutive, so I simply copied the first one to notepad and replicated the rest of the links myself:


So it was then simply a case of copying the above links to the clipboard (Select All then CTRL+C), firing up “Free Download Manager” and using CTRL+SHIFT+V to begin the downloads in the background.  I can now get on with other work until I am notified that the downloads are complete.  I hope you find this tip useful.

You can download Free Download Manager from here: http://fileforum.betanews.com/detail/Free-Download-Manager/1090197761/1

And just in case you are a little lazy, here are the titles of the videos (hosted by none other than Adam Kinney):

MSDN How Do I: Use the new features in the Window Phone Emulator and Tools?
MSDN How Do I: Use the Windows Phone Profiler?
MSDN How Do I: Work with the Execution Model?
MSDN How Do I: Use the new Bing Tasks?
MSDN How Do I: Access Contacts and Appointments Data?
MSDN How Do I: Use Toast, Tile and Raw Notifications?
MSDN How Do I: Update Tiles and Use Secondary Tiles?
MSDN How Do I: Use the System Tray features?
MSDN How Do I: Use the Search Extensibility features?
MSDN How Do I: Combine Silverlight and XNA?
MSDN How Do I: Programmatically Access Camera Features?
MSDN How Do I: Create an Augmented Reality Application?
MSDN How Do I: Use the WebBrowser Control?
MSDN How Do I: Use HTML5 in the WebBrowser Control?
MSDN How Do I: Use the RichTextBox control?
MSDN How Do I: Localize an Application?
MSDN How Do I: Work with a Local Database?
MSDN How Do I: Communicate with Sockets?
MSDN How Do I: Access OData Resources?

[tweetmeme only_single=”false”]

Goblin Harvest (Update I)

imageWell I thought it time to give everyone an update on the progress we are making on ‘Goblin Harvest’, our first Mango specific game (as well as our first team based App).

As can be seen from the screenshots below great progress has been made on the functionality of the game, we also have an awesome soundtrack composed specially for the game by Jack Williams.  Some great sound effects and spectacular graphic special effects add to our excitement about this game!

Meanwhile Ian (Williams) is working on improving the game graphics in Expression Design while I battle the Mango Emulator on for me, one of the most exciting elements of the game – the “Quests and Trials”.  Without giving too much away these elements introduce a physical skills based element through manipulation of the new compass and gyro devices!*.

We are" currently on track for an early release, hopefully hitting the Mango launch itself. (And provided we can get our hands on one of the new hardware devices soon enough, it is going to be our most awesome release to date!)

“Beware the Marsh Fever”

* Don’t worry – the game will still be great fun on generation 1 devices with the “Quests and Trials” taking a slightly different path.

[tweetmeme only_single=”false”]

If you are a UK developer and bank with First Direct then read this.

The more astute of you will have noticed from my previous post about the new App Hub (here) that there is no information on proceeds from the apps I have developed over the last 18 months.image

Therein lies a tale that will probably bore you but safe to say:

If you are a UK developer and bank with First Direct, read on …

Almost every month since pay outs began I have raised a support ticket with Microsoft querying why I haven’t received payment.  This culminated in me sending Microsoft a copy of the details I received from First Direct with regard to Bank Name/Address/IBAN (etc.)  in May in order to confirm that the details I had been copying and pasting into the App Hub were indeed correct.  Still nothing (I am giving you the short version, there was in fact lots of frustration and gnashing of teeth, not to mention a multitude of emails between MS and myself).

In June I was lucky enough while attending the WPUG user group at Tech Days in London to share a pint with none other than ThePhone@Microsoft.com (Brandon Watson).  I mentioned this issue and he promised to look into it.  True to his word he followed up and before long I had another email from MS expressing concern and a desire to sort the issue out.

At this point I should say that this is still speculation on my part but it appears that the App Hub doesn’t cope well with some aspects of the UK Banking system.  First Direct is owned by HSBC and it looks as though the IBAN/SWIFT address that they use doesn’t map to them, but to their parent (The Hong Kong and Shanghai Banking Corporation).  There doesn’t appear to be anything within Microsoft’s’ own validation to flag this issue (hopefully this will change in the future?)

I have now been advised to change the bank name to HSBC and been promised that a further check will be done over the next 5 days (by Microsoft) to manually validate that the new Bank Name (HSBC) and address details (First Directs’ HQ in Leeds) pass muster!  Sadly I was informed this evening that in any event this change is too late for the July pay-out .

I will update this post once MS absolutely confirms the “correct“ details to use for First Direct but thought in advisable to post this in case there are any other UK Developers out there with First Direct Bank Accounts (or I guess any other subsidiary of HSBC?).


[tweetmeme only_single=”false”]

Filtering your wp7 App Hub Data in Excel

With the new update to the App Hub comes the option to download your data for offline analysis.

One of the most effective ways to do this is also one of the quickest.  Utilise two of Excels’ built in analysis features – “autosum” and “autofilter” by following the following two videos which show this can be achieved within a matter of seconds. (With apologies if I am teaching Granny to suck eggs).

This will then allow you to ask questions of your data such as:

  • How many paid version of a particular app have been downloaded?
  • Which Country is the primary user of my apps?
  • Which apps are the most popular?
  • What is the ratio of free to trial to paid apps ?

(and many more …)

Creating an autosum field

AutoSum Exported Data
AutoFilter Exported Data

NB To filter by date simply bring down only the data required and go through the two steps above again.


No doubt we will see a multitude of Excel templates that make detailed analysis of this data  a breeze, but for a quick and dirty analysis you can’t beat the basics of this method!

New App Hub Submission Walk Through


Anyone logging in to the new hub will be greeted with a prompt to agree to a new set of terms and conditions


and on acceptance will be welcomed to what at first appears to be the standard hub (the basic homepage remains the same).  But then the fun begins with the new Phone option (accessed from the ‘My Dashboard’ menu):


As can be seen above the reports have been enhanced and a number of summary and detail reports follow by way of example:


NB There is an option to export the data to Excel which opens the door to a wealth of other reporting options:


(Sad perhaps that this was my most successful app!)

From the App Highlight pane the following can be obtained:

1. Detailed download reports on each app (as above), with further details available such as the current status of an app within the ingestion process:


2. Daily crash report (with stack traces available as Excel Spreadsheet downloads – see below)

Stack Trace Data in Excel – Click to enlarge


Submitting an App

Clicking on ‘submit an app’ reveals the following screen:


(Note the option for the Private Beta – see my other post for a walk through of a Mango App)

The page that follows represents a ‘cleaned up’ version of a previous app hub submission at this stage:


Note the option to describe what has changed for this update.

Another useful addition is an option to ‘see how these images are used’ :

Pricing and Region availability also gets a facelift:


and finally a new option to submit but make hidden:



A nice touch is a direct link to the lifecycle page shown previously.

Android Watch

iPhone or Windows Phone 7 developer or just like to keep up with the latest tech happenings ?  Get the lowdown on what is happening with Android.  This awesome App takes full advantage of the Metro UI and gives you a smooth ride through videos, blogs, news, tweets and more ..

Download here (only 99c) http://social.zune.net/redirect?type=phoneApp&id=6451be3f-63a1-e011-986b-78e7d1fa76f8

WP7 Launchers – Mango (Windows Phone 7.1)

Launchers are a set of APIs that Windows Phone applications can use to enable common tasks such as making a phone call or sending an email. Unlike Choosers, Launchers do not return a value back to the calling application.

If you are developing an application that uses a Launcher or Chooser, you should be aware that these features behave differently on a physical device and on Windows Phone Emulator. For a detailed list of the behaviour of each Launcher and Chooser in both environments, see Launcher and Chooser Support in Windows Phone Emulator.

This topic contains information about the following launchers:

  • BingMapsDirectionsTask

  • BingMapsTask

  • EmailComposeTask

  • MarketplaceDetailTask

  • MarketplaceHubTask

  • MarketplaceReviewTask

  • MarketplaceSearchTask

  • MediaPlayerLauncher

  • PhoneCallTask

  • SearchTask

  • SmsComposeTask

  • ShareLinkTask

  • ShareStatusTask

  • WebBrowserTask

Using Launchers in Your Application

The Launcher APIs belong to the Microsoft.Phone.Tasks namespace. You need to add a using directive for this namespace to the PhoneApplicationPage class file. All of the Launcher APIs function in a similar manner. First, you create an instance of the Launcher class you want to use. Next, you set properties of the Launcher object that will determine the behaviour of the task application when it is invoked. For example, you can specify a phone number that will be displayed when the Phone application launches. Finally, you call the Launcher’s Show method to launch the task application.

It is important to note that when you use a Launcher, a separate application is launched to complete the task. For example, the EmailComposeTask invokes the Messaging application. When the separate application is launched, your application is deactivated and is no longer running. After completing the task, the user can return to your application, at which point it is reactivated. For information about handling the activation and deactivation of your application see, Execution Model for Windows Phone.


BingMapsDirectionsTask launches the Bing Maps application and displays driving directions between two points. If you do not set the start or end point, Bing Maps will use the user’s current location for the one that is not set. If you omit both the start and the end point, an exception will be thrown when you call Show().

The start and end points are LabeledMapLocation objects that contain a string label and a GeoCoordinate specifying the latitude and longitude of the location. You must add a reference to the System.Device assembly to your project and include the using directive referencing the System.Device.Location namespace to your page in order to access the GeoCoordinate API.

BingMapsDirectionsTask bingMapsDirectionsTask = new BingMapsDirectionsTask();         
GeoCoordinate spaceNeedleLocation = new GeoCoordinate(47.6204,-122.3493);
LabeledMapLocation spaceNeedleLML = new LabeledMapLocation("Space Needle", spaceNeedleLocation);
bingMapsDirectionsTask.End = spaceNeedleLML;
// bingMapsDirectionsTask.Start is not set. The user’s current location is used as the start point.


BingMapsTask launches the Bing Maps application. You can optionally set a Center point for the map that is displayed. If you do not set this property, the user’s current location is used as the center point of the map. You can also provide a search string that will be used to mark locations on the map. The ZoomLevel parameter allows you to specify the zoom level that is initially displayed when the map is shown.

The center point is specified using a GeoCoordinate object. You must add a reference to the System.Device assembly to your project and include the using directive referencing the System.Device.Location namespace to your page to access the GeoCoordinate API.

BingMapsTask bingMapsTask = new BingMapsTask();
// Omit the Center property to use the user’s current location.
// bingMapsTask.Center = new GeoCoordinate(47.6204, -122.3493);
bingMapsTask.SearchTerm = "coffee";
bingMapsTask.ZoomLevel = 2;


EmailComposeTask launches the Email application, which displays a new email message. You can optionally specify recipients, a message subject, and a message body that are prepopulated in the new message. You can also specify a code page for the new message. The message is not sent until it is initiated by the user.

EmailComposeTask emailComposeTask = new EmailComposeTask();
emailComposeTask.Subject = "message subject"; 
emailComposeTask.Body = "message body";
emailComposeTask.To = "recipient@webservicesuk.com";
emailComposeTask.Cc = "cc@example.com";
emailComposeTask.Bcc = "bcc@example.com";


MarketplaceDetailTask launches the Windows Phone Marketplace client application, which then shows the details page for a product specified by the unique identifier you provide. If you do not provide an identifier, the details page for the calling application is shown. The only allowed value for the ContentType property is Applications.

// Show an application, using the default ContentType.
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentIdentifier = "<ID>";
marketplaceDetailTask.ContentType = MarketplaceContentType.Applications;


MarketplaceHubTask launches the Windows Phone Marketplace client application. Set the ContentType property to a value from the MarketplaceContentType enumeration to launch the Hub to a particular type of content.

MarketplaceHubTask marketplaceHubTask = new MarketplaceHubTask();

marketplaceHubTask.ContentType = MarketplaceContentType.Music;



MarketplaceReviewTask launches the Windows Phone Marketplace client application, which then displays the review page for your application.

MarketplaceReviewTask marketplaceReviewTask = new MarketplaceReviewTask();



MarketplaceSearchTask launches the Windows Phone Marketplace client application, which then shows the search results based on search terms you provide. You must provide a value for the ContentType property to specify what type of content you are searching for unless you are searching for an application, which is the default content type.

To search for an application, use the following code.

//Search for an application, using the default ContentType.
MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask();
marketplaceSearchTask.SearchTerms = "Apple Watch";

To search for an application author, use the following code.

//Search for an application, using the default ContentType.
MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask();
marketplaceSearchTask.SearchTerms = "Web Services UK";

To search for a music item, use the following code.

//Search for a music item.
MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask();
marketplaceSearchTask.ContentType = MarketplaceContentType.Music;
marketplaceSearchTask.SearchTerms = "Teenage Kicks";


MediaPlayerLauncher launches the Media Player application and plays the media file you specify. Media files are stored in isolated storage when saved to disk by the application and are stored in the application’s installation directory if they are bundled into the applications .xap file. You must specify one of these locations using the MediaLocationType enumeration. You can optionally specify that one or more controls should be shown by the Media Player using bitwise OR combinations of the MediaPlaybackControls values. You can also specify a preferred orientation for the player when it is launched.

MediaPlayerLauncher mediaPlayerLauncher = new MediaPlayerLauncher();

mediaPlayerLauncher.Media = new Uri("MyVideo.wmv", UriKind.Relative);

mediaPlayerLauncher.Location = MediaLocationType.Data;

mediaPlayerLauncher.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop;

mediaPlayerLauncher.Orientation = MediaPlayerOrientation.Landscape;



PhoneCallTask launches the Phone application and displays the specified phone number and display name. The phone call is not placed until it is initiated by the user.

PhoneCallTask phoneCallTask = new PhoneCallTask();
phoneCallTask.PhoneNumber = "55555555555";
phoneCallTask.DisplayName = "Gage";


SearchTask launches the Search application and performs the search query you provide.

SearchTask searchTask = new SearchTask();
searchTask.SearchQuery = "XBox game trailers";


ShareLinkTask launches a dialog that enables the user to share a link on the social networks of their choice.

ShareLinkTask shareLinkTask = new ShareLinkTask();
shareLinkTask.Title = "Code Samples";
shareLinkTask.LinkUri = new Uri(http://rd3d2.wordpress.com, UriKind.Absolute);
shareLinkTask.Message = "Here is a blog all about Windows Phone.";


ShareStatusTask launches a dialog that enables the user to share a status message on the social networks of their choice.

ShareStatusTask shareStatusTask = new ShareStatusTask();
shareStatusTask.Status = "This is my current status.";


SmsComposeTask launches the Messaging application, which displays a new SMS message. You can optionally specify recipients and a message body that are prepopulated in the new message. The message is not sent until it is initiated by the user.

SmsComposeTask smsComposeTask = new SmsComposeTask();

smsComposeTask.To = "5555555555";

smsComposeTask.Body = "Check out this new app.";



WebBrowserTask launches the Web browser and displays the URL you provide.

WebBrowserTask webBrowserTask = new WebBrowserTask();

webBrowserTask.Uri = new Uri("http://webservicesuk.com", UriKind.Absolute);