Windows Phone 8 Dev Requirements

I get asked all of the time what is needed to develop for Windows Phone 8 so I thought I would do a blog post on it to make it easier.

Of course you need the SDK. which you can find here. http://www.microsoft.com/en-us/download/details.aspx?id=35471

 

System requirements

Supported operating systems: Windows 8, Windows 8 Pro

  • Operating system type:
    • Windows 8 64-bit (x64) client versions
  • Hardware:
    • 6.5 GB of free hard disk space
    • 4 GB RAM
    • 64-bit (x64) CPU
  • Windows Phone 8 Emulator:
    • Windows 8 Pro edition or greater
    • Requires a processor that supports Second Level Address Translation (SLAT)

    If your computer meets the hardware and operating system requirements, but does not meet the requirements for the Windows Phone 8 Emulator, the Windows Phone SDK 8.0 will install and run. However, the Windows Phone 8 Emulator will not function and you will not be able to deploy or test apps on the Windows Phone 8 Emulator.

 

That last part SLAT is very important. If you want to find out what SLAT is and how to check to see if you are compatible. How To Geek has a great article on it.

http://www.howtogeek.com/73318/how-to-check-if-your-cpu-supports-second-level-address-translation-slat/



Windows Phone 8 Phone Camp (LIVE)

Please Join Us for the Windows Phone 8 Phone Camp.  Live on Friday Dec 7th 9am – 2pm

The Stream will start LIVE below when the event begins.  You can also chat during the event.  We will attempt to ask your question to the presenter.

 

If you hover over the video, you can view it full screen.

 

 

 

 

 

Happy Programing – The Sociable Geek



Working With the Intel Ultrabook

imageBack in September I wrote about my first impressions of the Ultrabook I received from Intel. It has now been a couple of months and so I thought I would give a follow up on how it has been holding up.  Well, I have to say that I have been impressed with it so much that I have been using it as my main machine.  It is not only a slim and sexy ultrabook ,weighing only 3.5 pounds, which is great when you travel, but it has really been a power house machine for me.  I have been spending a lot of time lately building Windows Phone 8 applications which requires a machine that supports SLAT (Second Level Address Translation) and this machine does. I have been building an app with a colleague that uses NFC to transfer data from one phone to another (or to another machine) and this has been a great machine to develop and test on.  I will do one more most and talk more specifically about the sensors and that application.  

To remind you, I have Windows 8 Release Candidate as the base install of this machine since that is how it was shipped to me,  and I am currently running Windows 8 RTM as a Boot To VHD.  I originally kept it set up this way because I was working on converting applications that I built using the RC version to RTM.  I tell you this because even running this as a Boot to VHD machine it is blazing fast with the IvyBridge I5 and 180GB SSD even though it only has 4GB of RAM. In addition, since it has a USB3 Port, I am able to show off using my Windows 8 To Go stick.  

Being in meetings all of the time, I find myself using two apps on this machine all of the time.  Skype and Lync.  Although not at the same time as the picture might suggest.  I guess I could.

image

It has been a great machine for both of these apps.  I used it quite a bit over the Thanksgiving holidays to talk to family across the country.  The fact that is is a light machine made it easy to tote around the house for the different conversations.  The touchscreen works amazingly well and I find myself using it more than I have in the past.  I have a another tablet with Windows 8 loaded on it but I don’t use the touch screen that much.  I think that is  because when I touch it, it bounces back and fourth which makes it not respond as well and honestly a bit annoying.  With this machine, the screen stays solid and allows me to use it as it should be used.  Its funny, its those little things that really start to show up the longer you use a machine.

The one thing that is a bit of a downer for me is that the trackpad is too sensitive.  It is waaaay to easy to make the cursor jump to another locations by brushing it, but to be honest, I find this to be the case on most machines with a touchpad.

I will do one more post on this and talk more deeply about development on it as I dive into the sensors.

Happy Programing – The Sociable Geek


<disclaimer>I received the Intel Ultrabook (pre-release) for free in the hope that I would write about it in this blog. I only recommend things I personally endorse and would otherwise recommend without further consideration. I’m disclosing this in accordance with the FTC’s Guides Concerning the Use of Endorsements and Testimonials in Advertising. I also cleared it with my employer (and this is the important part)  and I made sure the agreement said that my review would be my honest opinion. This review reflects my opinion alone, and doesn’t necessarily reflect the views of my employer or anyone else.</disclaimer>



Dev Intersection Conference

 

Hey Devs.
I wanted to pass this along to let you know about this great conference that is in our back yard … Well Vegas anyway. 

Register Here
$50 off if you use the Discount Code EGAN

DevIntersection is a brand new conference and is Jam Packed with all of the speakers you know and love.  This is really a cant miss line-up.

 

  • Scott Guthrie
  • Scott Hanselman
  • Tim Huckaby
  • Michele Bustamonte
  • Richard Campbell
  • Carl Franklin
  • Kate Gregory
  • Doug Seven
  • John Papa
  • Paul Sheriff
  • Scott Allen

And the list goes on, and on, and on.

http://devintersection.com/shows/speakers.aspx 

This should really be a great conference.  AND the first 300 people to register will get a Surface RT to boot. I also talked them into giving you a discount.

Register Here

$50 off if you use the Discount Code EGAN

Again, I just wanted to share this with you. If you can make it let me know, I will be there



Remote Debugging to your Surface Machine

So since the Microsoft Surface is out today, I thought I would do a post to show people how to do remote debugging to test it on their ARM device.  I know for me, it has been quite a while since I had the need to do any remote debugging but since your Windows Store apps will run on ARM devices, you will want the ability to do this.

The first thing you want to do is go to the desktop of your SURFACE Device.

image

Yes, there is a desktop, it will just allow you to do a limited amount of things ( including installing these debugging tools)

Open up internet explorer and go to the Visual Studio Download section.

http://www.microsoft.com/visualstudio/eng/downloads

Go to the section for Remote Tools for Visual Studio 2012

image

Download the Remote Tools for Visual Studio 2012 For ARM (last one)

image

The the prompt asks you, select the Run button.

image

Follow the prompts to install the Remote tools for Visual Studio

image

When complete you will have an icon for Remote Debugger on your start screen

image

Click this to start the remote debugger.

The first time it starts it will ask you to configure the Remote Debugger

image

Just click on the configure button.  ( note, If it asks you to, install the Web Services API,,,, mine did not)

The Remote Debugging Monitor will then appear.

image

NOTE:  Both machines must be on the same network for this to work.

Now go to your Visual Studio Project and select Remote Machine from the dropdown

image

In the Remote Debugger Connections Window Select your device.

image

Run your project….

NOTE: The first time you run your project to the remote machine, it will ask you to download a developer license for the machine.  Follow the prompts to do this.

The next time you run your project, it will run on your Surface machine.  And if you pop over to the desktop on your surface machine, you will see it connected in the monitor.

 

image

Happy Programming

Daniel Egan – The Sociable Geek



Intel Ultrabook–First Impressions

 

One of the cool things about being in technology is that fact that you sometimes get to try stuff before it is on the market. It was cool a few years back when I was able to carry around a pre-release Windows Phone. Sometimes it doesn’t fit into exactly what I do for a living but this time it does.  I received an IvyBridge Ultrbook from Intel to review.  The reason I was excited was because it runs Windows 8, has a touch screen, and has a ton of sensors.  Although it is a prototype, it is a very slick device.

image

As you can see, it is very slimline and weighs about 3.5 pounds.  For me it hits that perfect size.  Light enough that is is not a bother to carry around but big enough that it is nice to actually develop on in short stretches.

image

It has a 13.3 multi-touch display that is just enough for my Starbucks programming sessions and the fact that it has 5 points of touch makes it great for working on and testing my Windows RT applications.  I have what I term generically other “Slim-line” laptops and for some reason most of them have a trackpad that is so sensitive that it makes it impossible to type using the keyboard.  The Intel Ultrabook’s keyboard worked great, the keys are light but have a nice tactile feel and I have not once inadvertently moved the mouse while typing, a big plus.

image

For specs, it has an Intel Core i7 , 4GB of DDR RAM and a 180 GB SSD hard drive. Two USB3 Slots, a mini-HDMI connector, a 1.5 MP WebCam,    It came preloaded with Windows 8 Release candidate but instead of wiping out the system, I decided to create a 90GB VHD and do a Boot To VHD.  I had to turn on virtualization in the Bios, but after that, it worked great.  I am sure I will reformat soon, but since I have been using the Boot To VHD in my Windows 8 Unleashed sessions, it was the fastest way to get me up and running and playing with the machine.  In addition, since this is a prototype machine, I am not really worried about running it through any benchmarks. As other reviewers have pointed out, the fan is a bit loud which can be a bit annoying but again, it’s a prototype.   What really gets me excited about working with it is the sensors that are available to me.

  • NFC
  • Accelerometer
  • Magnetometer
  • Gyroscope
  • Ambient Light Sensor
  • GPS

This will be a great machine for me to test out working with Sensors in my Windows 8 Development and I will do other posts to talk about my experiences working with them while I create Windows 8 RT applications that take advantage of them. I have already begun using VS2012 and another SDK which we will not speak of on this machine and have been very happy with performance.

Happy Programming

Daniel Egan – The Sociable Geek

<disclaimer>I received the Intel Ultrabook (pre-release) for free in the hope that I would write about it in this blog. I only recommend things I personally endorse and would otherwise recommend without further consideration. I’m disclosing this in accordance with the FTC’s Guides Concerning the Use of Endorsements and Testimonials in Advertising. I also cleared it with my employer and I made sure the agreement said that my review would be my honest opinion. This review reflects my opinion alone, and doesn’t necessarily reflect the views of my employer or anyone else.</disclaimer>



Windows Phone Windows 8 Resources

I have done this before in previous posts but I wanted to have an easy way to point developers to great resources when you are building Windows Phone or Windows 8 applications. If you ever want to get back to this page you can just go to http://bit.ly/wpw8resources  (Standing for Windows Phone Windows 8 Resources). I will add to this page often and keep building on it. In addition, I will have one set or resources going forward and will only notate when it is specific to either.

Icons

Modern UI Icons (FREE) http://modernuiicons.com/ 

Design Help

MetroGridHelper. A visual guide overlaid on your application – http://www.jeff.wilcox.name/2011/10/metrogridhelper/

MetroGrid Component for Windows Phone (Based on code above)  http://www.windowsphonegeek.com/articles/MetroGrid-component-for-Windows-Phone

Advertising

Advertising sizes available for Windows 8 using Microsoft Advertising http://msdn.microsoft.com/en-US/library/hh506361(v=msads.10).aspx

 

Transferring Phones

Free Contacts Transfer application for Nokia phones

http://www.markspace.com/welcomehome/nokia/



Windows store Now open for Developers

imageThis is a great time for Developers.  We are at a great time to make an impact with Windows 8.  If you want to get in on the action, read below.

At every major Windows 8 development milestone – Release Preview, Consumer Preview, RTM – we’ve added markets toward our commitment to a truly global offering. We often hear from those who don’t yet have support in their market, and we’ve said we’ll keep expanding. Today’s 82 additional markets more than doubles our support toward enabling developer opportunity everywhere there’s a developer with desire. And as we’ve said before, we will just keep going. You can check out the complete list of supported markets on the Dev Center.

We’re also announcing a number of additional subscription program offerings that recognize and thank developers for their interest and commitment to Windows. All eligible MSDN subscribers receive a free, one-year Windows Store developer account as part of their MSDN benefits. (Eligible subscriptions include Visual Studio Professional, Test Professional, Premium, Ultimate, and BizSpark.) We have a program for students—DreamSpark—that similarly waives the subscription fee. And we have an offer for businesses in our BizSpark program, as well.

Throughout the Windows Store preview stages,

READ MORE

Daniel Egan- The Sociable Geek



$200,000 in Win8 App Prizes

Windows RT App Developer Contest

Developers: send us your most innovative, creative, and original Windows RT-style apps for the 2012 Windows RT App Developer Contest by Qualcomm.

Five winners will be chosen for $200,000 in prizes and marketing support from Qualcomm. One overall and four individual categories offer developers the chance to be recognized for work in the areas of connectivity, gaming, productivity, and peer-to-peer.

Together with Microsoft, Qualcomm is leading the way to create a rich new set of experiences for Windows RT devices. Be a part of it.

HURRY Submission Deadline is October 1st

You can register here. http://bit.ly/qualcommWinRT 

The categories are below

  1. Best Overall App – $100,000 Prize
    Judging Criteria:
    • Highest scoring app overall
  1. Best Connectivity Use Case – $20,000 Prize
    Judging Criteria:
    • Unique use of an always-on, always-connected solution
    • Ease of access
    • Incorporation of roaming user profiles
  1. Best Gaming App$20,000 Prize
    Judging Criteria:
    • Originality of game concept
    • Fun to play and addictive (player wants to keep playing)
  1. Best Produtivity App – $20,000 Prize
    Judging Criteria:
    • Efficient streamlining of process or task
    • Performs a single task in a new or interesting way or creates a natural mashup of tasks
  1. Best Use of AllJoyn – $40,000 Prize
    Download the AllJoyn SDK (Beta) for Windows RT
    Judging Criteria:
    • Most innovative use of AllJoyn (proximity-based peer-to-peer)

HURRY Submission Deadline is October 1st

You can register here. http://bit.ly/qualcommWinRT



Modifying Live Tiles in a Background Process

LiveTiles_thumb7_thumb1_thumbIf you are developing an application or game  for Windows 8, making sure you have an engaging, inviting, or informative live tile is an absolute must.  I am always surprised when I see the amount of effort a developer puts into their application, but then neglects to spend any time on their live tile.  A live tile is a unique way to engage the consumer while they are not using your application.  It is not only a way to entertain, but done right, it will drive them back into your application or game time and time again.  In this series, we will discuss the many aspects of Live Tiles, from what should be placed on your live tile, to utilizing Azure and Push Notifications to send data to your application.

  1. Creating A Live Tile that is Engaging and Inviting
  2. Working with Live Tiles Locally
  3. Rotating Live Tiles to keep interest
  4. Modifying Live Tiles in a Background Process (This Post)
  5. Using Azure and Push Notifications with Live Tiles

Continuous updating with background processes

In the previous posts we talked about the best practices for what to put on live tiles and also how to use the TileUpdateManager to change the tiles.  In this and the Using Azure and Push Notifications with Live Tiles we will discuss how to make changes to your live tiles when the user is not using your application.

As we learned in the last post, rotating your tiles is a great way to keep visual interest in your application or game but if the user is busy and does not have time to use your application for a week or two, the tiles that you updated will start to get stale quickly.  Imagine the Sports, News, or Stocks application that has week old data.  Updating your tiles with a background trigger is one way to keep it fresh.

We are going to use the same project we used for the last post. If you did not create it in the last post and want to follow along, you can create a new project create a new WideLogo (See this post to find out how).

Creating Rotating Live Tiles from a Background Trigger

1. In the Solution Explorer, right click on the Solution (NOT Project) and select Add à New Project

2. Select the Windows Runtime Component , name it TileBackground and click OK

3. The Class1.cs file from that project will open, for simplicity we will leave it named Class1 (you would want to rename this in a real project of course)

4. At the top of the Class1.cs file, add the following Using statements

using Windows.ApplicationModel.Background;using Windows.Data.Xml.Dom;using Windows.UI.Notifications;using System.Net.Http;using Windows.Data.Xml.Dom;using System.IO;

5. Next, have class one implement the IBackgroundTask interface and delete the thrown exception that is generated. When you are done, your class should look like the image

below.

image

6. Above the Run method add the follow declaration for TileUpdater

TileUpdater tileUpdater;

7. Underneath the run method, add the AddTileNotification Method.  This is the same code we have used in the other posts… only now it is going to be run in a background process.

private void AddTileNotification(string content, string tag)        {            var templateType = TileTemplateType.TileWideSmallImageAndText04;            var xml = TileUpdateManager.GetTemplateContent(templateType);

            var textNodes = xml.GetElementsByTagName("text");            textNodes[0].AppendChild(xml.CreateTextNode("A message"));            textNodes[1].AppendChild(xml.CreateTextNode(content));

            var imageNodes = xml.GetElementsByTagName("image");            var elt = (XmlElement)imageNodes[0];            elt.SetAttribute("src", "ms-appx:///_Images/Coffee03.jpg");

            var tile = new TileNotification(xml);            tile.Tag = tag;

            //tile.ExpirationTime = DateTimeOffset.Now.Add(new TimeSpan(0, 0, 20));

            tileUpdater.Update(tile);        }

 

8. Now we want to add something a little different to our project.  Since you would want to pull data from somewhere outside of your project, we will simulate this by pulling a random quote from the IHeartQuotes API to show on our tile. Add the two methods below to your class. (These are the same ones we used previously with the Yahoo API  (Since this post is about the tiles, we will not comment on the code below, we will do another post on calling REST APIs in the near future)

private async void GetData()        {

            String _url = "http://www.iheartquotes.com/api/v1/random?format=json&max_lines=2&source=joel_on_software";

            var _Result = await CallService(new Uri(_url));            if (_Result != null)                AddTileNotification(_Result.quote, "tag new");

        }

        private async Task<RootObject> CallService(Uri uri)        {            string _JsonString = string.Empty;

            // fetch from rest service            var _HttpClient = new System.Net.Http.HttpClient();            try            {                HttpResponseMessage _HttpResponse = _HttpClient.GetAsync(uri.ToString()).Result;                _HttpResponse.EnsureSuccessStatusCode();                _JsonString = await _HttpResponse.Content.ReadAsStringAsync();            }            catch (Exception ex)            {

                string test = ex.ToString();            }

            // deserialize json to objects            var _JsonBytes = Encoding.Unicode.GetBytes(_JsonString);            using (MemoryStream _MemoryStream = new MemoryStream(_JsonBytes))            {                var _JsonSerializer = new DataContractJsonSerializer(typeof(RootObject));                var _Result = (RootObject)_JsonSerializer.ReadObject(_MemoryStream);                return _Result;            }

        }

 

9. Next, we want to add the code we want to run in the Run method. Add the following code INSIDE the Run(IBackgroundTaskInstance taskInstance) method.

BackgroundTaskDeferral deferral = taskInstance.GetDeferral();

            tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();            tileUpdater.EnableNotificationQueue(true);

            AddTileNotification("Hey Everyone... Whats up", "tag1");            AddTileNotification("Come see the new coffee shops", "tag2");            AddTileNotification("I need caffine", "tag3");            AddTileNotification("I drink coffee therfore I live", "tag4");            AddTileNotification("Caffine Drip please", "tag5");

            GetData();            deferral.Complete();

 

10. Now all we have left is to add the class that the json that is returned will be deserialized into. We once again used json2csharp.com to create a class. Add the code BELOW Class1 inside the Namespace bracket. (We could have put this in a separate file but will do this for simplicity.

public sealed class RootObject{    public string json_class { get; set; }    public IList<string> tags { get; set; }    public string quote { get; set; }    public string link { get; set; }    public string source { get; set; }}

 

That completes the project that will run in the background with the trigger is fired.

Call your background trigger from your application.

Now we are going to set up our project to allow background triggers and call the trigger from our project.

1. Right click on the References folder in your windows 8 project and click on Add Reference.

2. When the Reference Manager comes up, Select Solution and Projects on the left and click on the TileBackground project, and then click on OK

image

3. Now, double click on Package_appmanifest in the solution exploer and open it to the Declarations Tab

4. From the Available Declarations dropdown select Background Tasks

5. Click on ADD

image

6. Under Properties (on this page) check the Timer Task, and add the text TileBackground.Class1 to the EntryPoint section (This is the Namespace and Class for our

background process which we just referenced)

image

7. Now click on the Application UI tab (should have a red x next to it) and scroll down to the Notification section.

8. Change the Lock screen notification dropdown to Badge

9. Change the Badge logo to Assets\<TheNameOfYourLogo>.png

YOU WILL NEED TO CREATE THIS IMAGE.  Please see this post on how to modify an image.  The image size will need to be 24 X 24. The name of your logo may be different, obviously change this to what you named your logo.

image

10. Open up App.xaml.cs (from solution explorer) and add the following using statement to the top of the file.

using Windows.ApplicationModel.Background;

 

SPECIAL NOTE :  We are placing this in the App.xaml.cs file for simplicity.  This may or may not be where you want to launch your background task. Other options are the OnNavigatedTo method of your first page.

11. Now add the RegisterBackgroundTasks() method to the class. This calls the BackgroundTaskBuilder and adds our trigger to the OS.

private void RegisterBackgroundTasks()        {            BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

            // Friendly string name identifying the background task            builder.Name = "BackgroundLiveTiles";            // Class name             builder.TaskEntryPoint = "TileBackground.Class1";

            IBackgroundTrigger trigger = new TimeTrigger(15, true);            builder.SetTrigger(trigger);            IBackgroundCondition condition = new SystemCondition(SystemConditionType.InternetAvailable);            builder.AddCondition(condition);

            IBackgroundTaskRegistration task = builder.Register();

            //YOu have the option of implementing these events to do something upon completion            //task.Progress += task_Progress;            //task.Completed += task_Completed;        }

NOTE: Make sure you named your project and class with the same case sensitivity as I instructed, TileBackground.Class1 , if you did not you will need to change it in the code above. Since it is just a string you will NOT get an error here.

12. Finally, make a call to the RegisterBackgroundTasks() method inside the OnLaunched()

Method as shown below.

image

That is all that is needed to set up our trigger to change out live tile in the background while we are not running.

How to Run your background trigger during debug.

Now we are going to show you how you can get your trigger to run while you are debugging your application.

1. Build and run the project

2. While the project is still running, switch back to Visual Studio

3. From the Suspend dropdown menu (if you set everything up correctly) you will see your

background process trigger. Select this and it will fire your trigger.

image

If you don’t see this toolbar, in Visual Studio, go to View –> Toolbars and make sure Debug and Debug Location are checked.

4. If you now look at your tile on the start page, it should show you rotating quotes, including one from the quotes service as below. (Quotes will vary)

image

 

That’s it for this post, in the next post we will show you how to use Azure and Push notifications to accomplish this same thing.

Happy Programming

Daniel Egan – The Sociable Geek