Category Archives: Windows Phone

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 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 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



Making WPConnect Easier to use

If you are building a Windows Phone application and you are using your phone to debug AND you are using the Photo Chooser or or the Camera Launcher task you may have found out that it will not let you access the camera or pictures while you are connected to Zune.

But, you have to be connected to Zune to debug on the phone.  Well, kind of.  The Windows Phone Team put out a tool called WPConnect.exe that allows you to dubug on the phone without having Zune open.

Here are the steps.

  1. Connect your phone
  2. Make sure Zune launches and connects to your phone.
  3. Shut down Zune
  4. Using a Dos Prompt, Navigate to
    1. (for 64 bit machines) C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect\x64
    2. (for 32 Bit machines) C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect\x86
  5. Type WPConnect.exe

It will then tell you that you are good to go.

NOW FOR THE EASY WAY

I got tired of having to navigate using a command prompt (Too may keystrokes) and I use this often enough to matter, so I created a shortcut for the Dos Prompt that takes me right to my designated spot in one click. Here is how you do it.

1. Right-click in the open space of your desktop and click New > Shortcut.

2. For the location, type or copy and paste the following:

%windir%\system32\cmd.exe /k

image

3. Click Next.

4. For the name, type something descriptive, like “Command Prompt for WPConnect” then click Finish.

image

5. Right-click on the new shortcut and choose Properties.

6. Change the “Start In” field to whatever directory you want the command prompt to start in.In my case, I want it to start in the 64 bit folder we talked about above:

"C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect\x64"

image

Be sure to include the quotation marks, and of course you would need to customize this file path to your own system (32 or 64).

Now when I want to use WPConnect.  I just use the pined shortcut

image

and Type WPConnect.exe

image

Hope that helps Smile



Installing Windows Phone on Win 8

If you have installed windows 8 and want to do development on windows phone using the Windows Phone developer tools, you will need to have an actual device since the emulator at this point does not play nicely with the Hyper V installed on Windows 8.  But since I installed it on my main machine, I still want to do phone dev on it.  If you try to install the Windows Phone SDK 7.1 http://bit.ly/wptools1  you may run into the following error.

image_thumb

If you have this error come up, here are the steps to get around it.

Download and install the latest version of the Games for Windows – LIVE http://www.xbox.com/en-US/LIVE/PC/DownloadClient

image_thumb[23]

image_thumb[24]

Click on CLOSE when it ends.

Rerun the Windows Phone SDK 7.1 setup and choose to repair it.  This will re-run the previously failing XNA  Game Studio installers.

image_thumb[25]

To learn more about why this works, or if this does not fix your issue, Check out Aarons blog post on getting it to work on Windows 8 http://blogs.msdn.com/b/astebner/archive/2012/02/29/10274694.aspx

When done you should see this.

image_thumb[1]

And you are good to go (with a real device that is)… I am working on seeing if I can get a work around for the emulator.  I will let you know.

Daniel



Skype Beta for Windows Phone

 

The wait is over… Skype for windows phone (beta) is finally here.. head over to the Windows Phone Marketplace to download it. http://www.windowsphone.com/en-US/apps/c3f8e570-68b3-4d6a-bdbb-c0a3f4360a51

image



Windows Phone Database Tutorial

[image2.png]When creating applications for the Windows Phone, there is one basic thing that almost ALL applications need to do, Save Data. If its more than just small bits of data you will probably want to store it in a database. In Windows Phone, this can be done easily, but in different ways.  One of the people on my team Jerry Nixon who is a developer evangelist on my team wrote a great series on this.  The first one is using the Code First approach.

Storing Windows Phone application data is a pretty normal requirement. If you want it to persist across sessions, or even phone reboots, you really have three options:

  1. Save to the Cloud
  2. Save to Isolated Storage
  3. Save to Local Database

Each is correct for certain scenarios. But in this article, I will ONLY walk through the Local Database. This is an enhanced version of SQL CE – meaning your SQL skills are an asset. And, if you don’t have them, they …

Read the whole article  HERE



WP7 Rest … The Easy Way

Over and over again, I see developers that have this great idea for an application that pulls cool data from a  great services BUT get tied up in the implementation of “Getting It Done”.  So I thought I would show you a quick and easy way to get REST data from a service, transfer the JSON data to a POCO list and Bind it to a listbox.  (In under 3 minutes)

On your Mark

Get Set

Go.

The first think you need to do is find some Data that is interesting to you.  For me, I LOVE coffee so I want to create an application that shows me all the coffee places that are near to me.  I can do this using Bing Search  http://msdn.microsoft.com/en-us/library/dd251014.aspx 

Specifically, I am going to use the PhoneBook Request part of the API that is like a Yellow Pages API.  It will give me all the business that designate themselves as “Coffee” places.

(Yes I know I am not using MVVM)

The first thing I do is Create a method called GetData() and call it from my MainPage() Constructor

  public MainPage()
        {
            InitializeComponent();
            GetData();
        }

        private void GetData()
        {
            string uri = "http://api.bing.net/json.aspx?AppId=YOUR_APP_ID&Version=2.0&Market=en-US&Query=Coffee&Sources=phonebook&latitude=33.8563&longitude=-118.1232";
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(uri));
            request.BeginGetResponse(new AsyncCallback(ReadCallback), request);

        }

In GetData() the first thing I do is make a call to the BING  API. 

The first part of the call shows that I want json returned and supplies my App_ID (Removed from post)  ( You can get your own Bing API key here http://msdn.microsoft.com/en-us/library/dd251020.aspx )

http://api.bing.net/json.aspx?AppId=YOUR_APP_ID

Next I set the version, Market, and what I am looking for

&Version=2.0&Market=en-US&Query=Coffee&

And finally, I tell it I am looking at the phonebook part of the API and where I want to search… In this example I am hardcoding the lat/long but you would of course use the Geo Location from the phone, but I wanted to keep this simple.

Sources=phonebook&latitude=33.8563&longitude=-118.1232";

Next, We then need to make the call to the service.  We will use a HttpWebRequest by passing it the URI we just created

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(uri));

And then making in the call and supplying it the CallBack method (Where the call returns to when it is finished)

request.BeginGetResponse(new AsyncCallback(ReadCallback), request);

Now here is the fun part. To work with the JSon data the is returned from this query, we need to create the class structure that represents the data…….. ugggggg what a pain right?   Nope Wrong, All we need to do is use http://json2csharp.com/    Just paste in either the JSon returned OR the URI String, and it will create the classes for you. So when I paste in my URI String above, it gives me the following.

(you can, of course, break up these classes into separate files but for now, I just pasted them at the bottom of the MainPage.xaml.cs file.)

 

public class Query
    {
        public string SearchTerms { get; set; }
    }

    public class Result
    {
        public string Title { get; set; }
        public string Url { get; set; }
        public string Business { get; set; }
        public string PhoneNumber { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string StateOrProvince { get; set; }
        public string CountryOrRegion { get; set; }
        public string PostalCode { get; set; }
        public double Latitude { get; set; }
        public double Longitude { get; set; }
        public string UniqueId { get; set; }
        public string DisplayUrl { get; set; }
    }


    public class Phonebook
    {
        public int Total { get; set; }
        public int Offset { get; set; }
        public string LocalSerpUrl { get; set; }
        public string Title { get; set; }
        public List<Restuarnt> Results { get; set; }
    }

    public class SearchResponse
    {
        public string Version { get; set; }
        public Query Query { get; set; }
        public Phonebook Phonebook { get; set; }
    }

    public class RootObject
    {
        public SearchResponse SearchResponse { get; set; }
    }

Now that you have the classes that hold the json that is returned, all you need to do is create the ReadCallback Method (Defined above)

private void ReadCallback(IAsyncResult asynchronousResult) 
        { 
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState; 
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult); 
            using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream())) 
            { 
                string resultString = streamReader1.ReadToEnd(); 
                var ser = new DataContractJsonSerializer(typeof(RootObject));

                var stream = new MemoryStream(Encoding.Unicode.GetBytes(resultString));
                DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(RootObject));
                RootObject myBook = (RootObject)jsonSerializer.ReadObject(stream);
              
                

                Deployment.Current.Dispatcher.BeginInvoke(() => coffeeShops.ItemsSource = myBook.SearchResponse.Phonebook.Results); 
                
            } 
        }

You can see that we use a stream reader to read the results and then use a DataContractJsonSerializer to add the data to the RootObject (Root Object is one of the classes that were created for us that encapsulates all the others)

On the last line, I marshall the data to the UI thread using Dispatcher.BeginInvoke and bind it to a ListBox called coffeeShops.

That’s IT….

Now it took me 30 minutes to write this up, but it should take you only 3 minutes to implement.

Enjoy Smile



The Tale of 3 Platforms

It was the best of times… it was the worst of times….  ok..ok… it is really the best of times to me.  The tech world continues to push all things into a mobile format and I am loving it.

I certainly have my opinions on operating systems, and ease of development, and best IDEs etc… but I thought I would put this to the test with a multi platform development approach.  Starting next week, I will be doing the same application on all three platforms (or possibly 6 if I include IPad, Android Tablet and Win 8 later).   The application is called Uncorked, and it is a way to log and rate your wine collection.  It will include the following features :

1) The use of a Wine API to store my data

2) The ability to scan my bottle to either look up or rate the bottle

3) Room for tasting notes

4) Saving of label pictures

5) And a few data points, price, when to drink by, purchase date, and info about the wine.

V1 will keep it simple so we can write all three in a quick fashion (I hope).

I will start from absolute 0… Brand new machine ( which I will blog about), install of tools, testing, patterns, etc…

I will not be using Phone Gap for this project ( But will be doing another series along side this one using phone gap and a different app)

Feel free to comment, make request, help out, debate, or just read the series.  I hope you get as much out of it as I hope to.

Daniel

Others in this series

[catlist name=taleof3platforms]



What is 4G

As I talk to phone owners I find it funny when people talk about 3G 4G etc… I ask them if they know what they mean and most of them say no… but they know it means faster Smile  ….   “G” is not a technology but it just is an abbreviation for Generation  4G = Fourth Generation.

But within those generations, there IS the technology that makes them faster.  I found a great video that explains the complexities simply.

“If you cant explain it simply, you don’t understand it well enough” ~ Albert Einstein

Now you know Smile