Video Chat for WP7–TANGO

They have been talking about it for a while and it has finally hit the market place.  Tango, the Video Chat application for WP7.  It will obviously work better with the new phones with front facing cameras… but it also works on my Samsung Focus… Check out the video below.

 

 

 

 

It of course works best over wifi, but will also work over 4G and 3G

 

image

 

Learn more at http://www.tango.me/ Like us on Facebook at http://www.facebook.com/TangoMe Follow us on Twitter at http://www.twitter.com/tangome Watch us on YouTube at http://www.youtube.com/TangoMe Need Help? Visit http://support.tango.me

This work is licensed under a Creative Commons license.

Live Tiles in WP Mango

Ever since Windows Phone came out, I have always contended that Live tiles are the coolest feature and one that is :

1) Not on any other platform (Yes, I know that Android has widgets… not the same thing)

2) A great way to drive people into your application. (Which you want if it is add based.)

 

I will do another post later about why you should do Live Tiles from a Monetizing standpoint, but for this post, I just want to show you how easy it is to work with live tiles.

 

To begin with, live tiles have been around since 7.0 but to really take advantage of them you had to use Push Notifications.  While this is not THAT difficult, it did add quite a bit of complexity and the need to host your own service (or use scheduled tiles).  In the Mango release, we have made 4 great additions to live tiles.

 

1) You can change the live tiles from your code.

2) You can create secondary tiles to deep link into specific pages of your application

3) You can write on the back of tiles and have them flip

4) You can use background process to have them change when not even in your application

 

To create and modify live tile is fairly simple.

This firs thing we want to do is create a simple windows phone page that has three buttons on it:

  • Create App Tile
  • Create Second Tile
  • Delete Secondary Tile

Next we need to go to code behind and add a using statement for the phone shell.

 

using Microsoft.Phone.Shell;

Then inside the first button click we add the following code :

 

 private void button1_Click(object sender, RoutedEventArgs e)
        {

            //Tile is always the first Tile, even if not pinned .
            ShellTile TileToFind = ShellTile.ActiveTiles.First();

            if (TileToFind != null)
            { 

                StandardTileData NewTileData = new StandardTileData();

                NewTileData.Title = "My Cool Tile";
                NewTileData.BackgroundImage = new Uri(
                    "CoolTile.jpg", UriKind.Relative);
                NewTileData.Count = 5;

                NewTileData.BackTitle = "Tiles Got Back";
                NewTileData.BackBackgroundImage = new Uri(
                    "CoolTileBack.jpg", UriKind.Relative);

                TileToFind.Update(NewTileData);

            }

        }
  • The first thing we do is get a reference to the Live Tile that comes with your application. (TileToFind)
  • Once we have a reference to it we can create our new tile data using the StandardTileData class.
  • We set the properties including the image we want on the live tile (a 173 by 173 png or jpg… make sure that your image is set to “content” in your project or you will not see it)
  • Next we set the back of the tile
  • And finally call the update method to change the live tile.

 

That is all you need to do to change your live tile.

If you want to create a secondary tile, it is slightly different.

 

for the second button click event we do the following

private void button2_Click(object sender, RoutedEventArgs e)
        {
            ShellTile SecondTile = ShellTile.ActiveTiles.FirstOrDefault(
                x => x.NavigationUri.ToString().Contains("Page2.xaml"));

            StandardTileData NewTileData;
            NewTileData = new StandardTileData();

            NewTileData.Title = "Secondary Tile";
            NewTileData.BackgroundImage = new Uri(
                "CoolTile.jpg", UriKind.Relative);
            NewTileData.Count = 5;
            NewTileData.BackTitle = "Second Tiles Got Back";
            NewTileData.BackBackgroundImage = new Uri(
                "CoolTileBack.jpg", UriKind.Relative);

            if (SecondTile == null)
            {
                ShellTile.Create(new Uri(
                    "/Page2.xaml", UriKind.Relative), NewTileData);
            }
            else
            {
                SecondTile.Update(NewTileData);
            }
        }

 

There are a couple of noticeable change.  To find the secondary tile, we need to search for it since we are not guaranteed that it exists.  We do this by searching the ActiveTiles collection for the NavigationUri of the tile that we set lower in the event.  The only other change is creating the tile if it does not exist.  Otherwise we update it like before.

I have included all the code for the project HERE

If you want to run this code in the background so you can change the tile while users are not using the phone. You can check out my post on Background Agents

 

Enjoy

This work is licensed under a Creative Commons license.

Windows Phone App of the Day

Windows Phone 7 Hello World by eugenedotnet

Do you want to showcase that cool application that you created for the windows phone marketplace?  Do you want to get the word out?  For the next X number of days (30 or 365 I’m not sure yet)  365 days, I will be posting an Windows Phone Application every day.  If you would like me to consider your application,  you need to fall in one of these categories.

  1. 1   Applications in Marketplace
  2. 2   Cool Apps that are coming soon.

In order for me to post about your application, I will need a link to your application in marketplace (Web link not Zune link),  and a video of your application that you have posted on You Tube.     In addition, if you are in the middle of creating your application (maybe at one of our phone camps).  Let me know about it and I will also be showcasing some “Coming Soon” applications.  Again, a You tube Video works best but I may make some exceptions (screenshots).

 

If you have any questions, let me know.

Become a Developer Evangelist for Windows Phone


Are you looking to join the exciting life of a Developer Evangelist….

I know, this post looks eerily similar to my previous post, but this time the Evangelist position is for Nokia. Nokia is a great company and this is a great job.  If you want more information you can find it here.

 

http://jobs.nokia.com/job/Sunnyvale-WP-Developer-Evangelist-Job-CA-94085/1498545/ 

 

I would assume that if you got this job, our paths would cross… Let me know if you are applying.

 

 

 

New Windows Phones Announced

The Big Windows Phone in Herald Squre, NYCWith a giant phone leading the way, today Microsoft unveiled the new lineup for for windows phone preloaded with Mango.  While the giant phone in New York City is cool, the phones that are coming out are even cooler.  From a new white color to 1.4 GHZ power to a front facing camera, these new phones are ready to take the world by storm.  Check out some of the specs below.  If you have one of them already, let me know what you think.  I have heard some great feedback about the Radar already.

Samsung Focus S: This is the follow up to the Samsung Focus, the Focus S has some really great features :  Check it out here  (ATT)

  • 4.3” Super AMOLED Plus display. Like the original Samsun Focus, it is really beautiful to look at.
  • 8.55-millimeter profile
  • 8-megapixel camera
  • Front facing camera (Awesome)
  • 16GB Memory
  • 1.4 GHZ Processor

HTC Radar 4G: It is crafted from a single piece of polished aluminum, and is the only white handset in the Windows Phone lineup.  Check it out here  (T Mobile )

  • 1GHz processor
  • 5 megapixel camera
  • Wi-Fi Sharing
  • Front Facing Camera
  • And its White Smile

Samsung Focus Flash: It’s the fast and lightweight partner to the Samsung S  Check it out here (ATT)

  • 3.7” Super AMOLED screen
  • 5-megapixel camera.
  • Front Facing Camera
  • 1.4 GHZ processor

Nokia announces new WP7 phones

At the Nokia World Keynote, Stephen Elop announced the companies new smartphones loaded with windows phone.  The Lumia 800 and the lower end Lumia 710. 

This is great news for Windows Phone.  I am looking forward to playing around with one of these devices in the near future.

Lumia 800

  • 1.4 gigahertz processor
  • 3.7-inch AMOLED display (awesome)
  • 16GB storage
  • 8 Megapixel cameral (720p hi-def video)
  • weighs 5 ounces

Lumia 710

  • 1.4 gigahertz processor
  • 8GB storage
  • 3.7 in Screen
  • 5 megapixel camera

WP7 Isolated Storage Snapshots

 

When working with Isolated Storage on the phone you sometimes have difficulty “seeing” what is located in the IsoStore for your application.  Luckily we have a tool that will help you take snapshots of the Sandboxed Isolated Storage for your application.  It is a command line tool called ISETool.exe and it is located in:

(for 32 bit os) c:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool

(for 64 bit) c:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool

To run the tool, bring up a command line and change the directory to the location above.

 

image

Then run the ISTool.exe with the following parameters

◦ts – take snapshot  (rs for restore)
◦xd – emulator
◦guid – product GUID from WPAppManifest.xml
◦desktop dir – where to copy the isolated storage files

image

 

It will download the contents of your Isolated Storage for that application to the folder you specified

image

 

You can also restore to the phone or emulator by doing the reverse.

ISETool.exe rs xd 11111111-2222-3333-4444-555555555555 “C:\snapshots\IsolatedStore”

 

This can also be used for local databases as well as restoring your environment to a specific state.  Let me know if you have any questions.

 

Camera Picture by Capt Kodak flickr cc

Windows Phone Alerts and Reminders

Another great feature for Windows Phone Mango is the ability to set up reminders and alerts in your application (While it is not running).  You would be surprised how many applications want/need this. During our Windows Phone 7 Unleashed events this was a recurring topic. 

The great part is that it is really simple.

 

 

imageFor this application, we are creating a very basic interface.  A text box for the title, a text box for the reminder message and a button that says “remind me”.  In addition, there is a label to hold the parameter that is sent back from the reminder.

The first thing you want to do once you build the UI is to click on the Remind Me button to create the click event for the button and add the following code to the event.

 private void OnRemindMeClick(object sender, RoutedEventArgs e)
        {
            Reminder r = new Reminder("reminder"); 
            r.Title = txtTitle.Text; 
            r.Content = txtContent.Text; 
            r.BeginTime = DateTime.Now.AddSeconds(10); 
            r.NavigationUri = new Uri("/MainPage.xaml?reminder=" + 
txtContent.Text ,UriKind.Relative); ScheduledActionService.Add(r); }

All we need to do is :

  • create an instance of the reminder
  • Set the title and content to the text boxes text property
  • set the begin time (in this instance I am doing it in 10 seconds from now)
  • Set the NavigationUri (this is where you will return when a user clicks on a message)
  • Add the reminder to the ScheduledActionService

Notice that we are passing the txtContent.Text back to the program when the user replies.  This can be userIDs, itemIDs, etc… .  Whatever makes sense for your program.

To capture the returning data, add this to an onNavigatedTo override.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            string param = null;
            if (NavigationContext.QueryString.TryGetValue("reminder", out param))
                Param.Text = param;

            if (ScheduledActionService.Find("reminder") != null)
                ScheduledActionService.Remove("reminder");

        }

We collect the reminder parameter from the Querystring and set it equal to our Param.txt . Notice that we are also removing the reminder from the service.  In the way ours is constructed, if the user clicked on it a second time it would try to add “reminder” a second time which is not allowed.

There you go…. easy as pie Smile

 

(Clock picture from “H is for Home on Flickr” Creative Commons)