<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;D04DRnY4eyp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227</id><updated>2013-05-17T09:32:57.833+02:00</updated><category term="suggestions" /><category term="mobile" /><category term="PeerFinder" /><category term="swipe" /><category term="xaml" /><category term="MediaLibrary" /><category term="sharpdx2" /><category term="display" /><category term="html5" /><category term="web" /><category term="registry" /><category term="#wp7" /><category term="winrt" /><category term="localization" /><category term="bcl" /><category term="windows phone 7" /><category term="sqliteclient" /><category term="resolution" /><category term="Apple" /><category term="phone" /><category term="library" /><category term="test" /><category term="audio" /><category term="iphone" /><category term="Backup" /><category term="git" /><category term="iPod" /><category term="resources" /><category term="classes" /><category term="resource" /><category term="keyboard" /><category term="7.8" /><category term="forwarding" /><category term="developer" /><category term="Mono" /><category term="surface" /><category term="iOS" /><category term="8.0" /><category term="review" /><category term="IsolatedStorage" /><category term="limit" /><category term="live tiles" /><category term="GetNativeSystemInfo" /><category term="InkPresenter" /><category term="cpu" /><category term="windows phone" /><category term="7.1" /><category term="network printing" /><category term="facebook" /><category term="skydrive" /><category term="HTC" /><category term="logout" /><category term="type" /><category term="uuid" /><category term="controls" /><category term="webdav" /><category term="vmware" /><category term="IsProcessorFeaturePresent" /><category term="azure" /><category term="shared printer" /><category term="Barcode" /><category term="save" /><category term="xna" /><category term="TypeForwardedTo" /><category term="memory" /><category term="wmp7" /><category term="native" /><category term="move" /><category term="streamsocket" /><category term="state" /><category term="monogame" /><category term="visual studio" /><category term="Bézier" /><category term="updatewp" /><category term="ui" /><category term="windows 8" /><category term="socket" /><category term="android" /><category term="Bill Gates" /><category term="emulator" /><category term="Monotouch" /><category term="mvvm" /><category term="7.10.8862.144" /><category term="weinre" /><category term="managed code" /><category term="dropbox" /><category term="media extended" /><category term="design" /><category term="scroll" /><category term="mp3" /><category term="Monodroid" /><category term="workstation" /><category term="architecture" /><category term="windows phone 8" /><category term="PCL5" /><category term="farseer" /><category term="nokia_dev" /><category term="xlf" /><category term="media" /><category term="reflection" /><category term="multi-touch" /><category term="xaudio2" /><category term="Microsoft" /><category term="cab" /><category term="tfs" /><category term="sesrch" /><category term="win8" /><category term="list" /><category term="Fitting" /><category term="Xcode" /><category term="Monodevelop" /><category term="add" /><category term="signature" /><category term="song" /><category term="pivot" /><category term="ZXing" /><category term="pinch to zoom" /><category term="Ads" /><category term="xamarin" /><category term="playback" /><category term="panorama" /><category term="interface" /><category term="speed reading" /><category term="phone call" /><category term="Steve Jobs" /><category term="developers" /><category term="zebra" /><category term="smooth" /><category term="nokia" /><category term="sound" /><category term="mango" /><category term="sdk" /><category term="best practice" /><category term="browser" /><category term="multi-language" /><category term="mix" /><category term="nodejs" /><category term="telerik" /><category term="layout" /><category term="windows" /><category term="Settings" /><category term="source control" /><category term="MobileServiceClient" /><category term="services" /><category term="oauth" /><category term="physics" /><category term="async" /><category term="update" /><category term="touch" /><category term="photocamera" /><category term="hardware" /><category term="#wpdev" /><category term="share" /><category term="scrollviewer" /><category term="lg" /><category term="Content" /><category term="debug" /><category term="screen" /><category term="ScaleFactor" /><category term="windows store" /><category term="id3" /><category term="wpdev" /><category term="silverlight" /><category term="cookies" /><category term="processor" /><category term="sqlite" /><category term="Restore" /><category term="wp7 wp8" /><category term="device request" /><category term="WP7" /><category term="music" /><category term="net cf" /><category term="win8dev" /><category term="scrolling" /><category term="samsung" /><category term="button" /><category term="HD 2" /><category term="resx" /><category term="C#" /><category term="xliff" /><category term="bluetooth" /><category term="multilingual" /><category term="features" /><category term="Marketplace" /><category term="mazaa" /><category term="iOS 5" /><category term="Speed" /><category term="wp8" /><category term="resw" /><category term="fusion" /><category term="mono for android" /><title>Mobile Development</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Dan Ardelean</name><uri>http://www.blogger.com/profile/01964238896617209618</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://1.bp.blogspot.com/-sri5qGON6a0/TqBw32snrWI/AAAAAAAAAK0/qqtL7xBnpks/s220/twiteer.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/sviluppomobile" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogspot/sviluppomobile" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">blogspot/sviluppomobile</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;D04DRnY-fyp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-5497221721584388474</id><published>2013-05-15T21:34:00.000+02:00</published><updated>2013-05-17T09:32:57.857+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:32:57.857+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="swipe" /><category scheme="http://www.blogger.com/atom/ns#" term="pivot" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="8.0" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="phone" /><title>Why setting a control Height and Width to 0 is not the brightest idea inside a Windows Phone project</title><content type="html">&lt;div style="text-align: justify;"&gt;
I am doing this small post because I have battled the whole morning with this bug and finally got it and it might save you some time if you read it and have the same problem.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Scenario: Pivot with two items and at some point the swipe on one of the items doesn't work anymore. Putting a button on the PivotItem that doesn't swipe I can still change the selected item and the second item still swipes correctly.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Cause: I was setting the Height=0 and Width=0 on a control inside the PivotItem (in my project I don't want my control to be collapsed). The problem presents itself if you set any of the controls inside a PivotItem to Height and Width = 0 when the PivotItem is selected. If on the other hand you set the&amp;nbsp;Height and the Width to anything &amp;gt;1 the PivotItem continues to swipe correctly. Even more strange: if the PivotItem is not&amp;nbsp;selected&amp;nbsp;when &amp;nbsp;you set the Width and Height to 0 and swipe to the control's PivotItem everything will still work correctly. So pay attention better not use set Width and Height =0 on UI controls.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
If you want to test it yourself and maybe tell me what really happens I am attaching a small project created from a Windows Phone Pivot application where I've added a menu that will set the Height and Width of the list inside the first PivotItem to 0. I also set the background of the first PivotItem to green so you will see that it is still expanded.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-AgF6RsphNnQ/UZOn6I87wnI/AAAAAAAADxI/SXim2kwkojI/s1600/Pivot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-AgF6RsphNnQ/UZOn6I87wnI/AAAAAAAADxI/SXim2kwkojI/s320/Pivot1.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
How to reproduce the problem: If you execute the menu command with the first PivotItem selected you will see that the pivot doesn't swipe anymore. If you change the values to 1, run the app again and execute the menu with the first PivotItem selected you will see that the pivot still swipes correctly. If, on the other hand, you let the values set to 0 but when executing the menu you have the second PivotItem selected you will see that the first item stil swipes correctly. Bug? Feature? Just pay attention to setting controls to Width and Height 0 because you might have problems with the UI and you won't know what is causing it.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="http://sdrv.ms/1433Fyw"&gt;SOURCE CODE&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
NAMASTE&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/5497221721584388474/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/why-setting-control-height-and-width-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5497221721584388474?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5497221721584388474?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/why-setting-control-height-and-width-to.html" title="Why setting a control Height and Width to 0 is not the brightest idea inside a Windows Phone project" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-AgF6RsphNnQ/UZOn6I87wnI/AAAAAAAADxI/SXim2kwkojI/s72-c/Pivot1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04CRn88eSp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-829577224533219397</id><published>2013-05-13T19:24:00.000+02:00</published><updated>2013-05-17T09:32:47.171+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:32:47.171+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="layout" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="8.0" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="7.1" /><category scheme="http://www.blogger.com/atom/ns#" term="phone" /><category scheme="http://www.blogger.com/atom/ns#" term="panorama" /><title>Fix Panorama layout when upgrading your project to OS 8.0 SDK</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; This will be a really short blog post but might save you some time if you have an OS 7.1 Panorama project and decide to upgrade the project to 8.0 SDK. After the upgrade you might see that the layout of your old page changed and you have less content available for the items and also the header looks different. Don't try to fix the problem by changing the margin of the control on the OS 8.0 SDK. The reason why this happens is because the Windows Phone SDK team decided to "tweak" a little bit the default style for the Panorama control, to be more precise the TitleLayer part of the style.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; On Windows Phone OS 7.1 projects the TitleLayer looks like this:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;controlsPrimitives:PanningTitleLayer x:Name="TitleLayer" CacheMode="BitmapCache" ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" FontSize="187" FontFamily="{StaticResource PhoneFontFamilyLight}" HorizontalAlignment="Left" Margin="10,-76,0,9" Grid.Row="0"/&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
while on OS 8.0 we have:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;Primitives:PanningTitleLayer x:Name="TitleLayer" CharacterSpacing="-35" ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" FontSize="170" FontFamily="{StaticResource PhoneFontFamilyLight}" HorizontalAlignment="Left" Margin="10,-34,0,0" Grid.Row="0"/&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
You can see that not only the margin have changed (the reason why on OS 8.0 version we have less space in the content -44px ), but also the font size changed from 187 to 170 producing these visual differences:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-T4bL9q1wGMw/UZEf1o_xSMI/AAAAAAAADw4/RseqiGNvEKE/s1600/WP71.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-T4bL9q1wGMw/UZEf1o_xSMI/AAAAAAAADw4/RseqiGNvEKE/s400/WP71.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The solution to this problem is pretty simple: extract the old style of the Panorama control (the easiest way is using Blend) and apply to both WP7.1 and OS 8.0 versions of your project. This way the UI will be consistent between the two versions of the app. If you don't want to use Blend I am attaching the default OS 7.1 style so you can directly copy/paste it in your project and apply it to your Panorama control.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;Style x:Key="PanoramaStyleWP71" TargetType="controls:Panorama"&amp;gt;  
                &amp;lt;Setter Property="ItemsPanel"&amp;gt;  
                     &amp;lt;Setter.Value&amp;gt;  
                          &amp;lt;ItemsPanelTemplate&amp;gt;  
                               &amp;lt;controlsPrimitives:PanoramaPanel x:Name="panel"/&amp;gt;  
                          &amp;lt;/ItemsPanelTemplate&amp;gt;  
                     &amp;lt;/Setter.Value&amp;gt;  
                &amp;lt;/Setter&amp;gt;  
                &amp;lt;Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/&amp;gt;  
                &amp;lt;Setter Property="Background" Value="Transparent"/&amp;gt;  
                &amp;lt;Setter Property="Template"&amp;gt;  
                     &amp;lt;Setter.Value&amp;gt;  
                          &amp;lt;ControlTemplate TargetType="controls:Panorama"&amp;gt;  
                               &amp;lt;Grid&amp;gt;  
                                    &amp;lt;Grid.RowDefinitions&amp;gt;  
                                         &amp;lt;RowDefinition Height="auto"/&amp;gt;  
                                         &amp;lt;RowDefinition Height="*"/&amp;gt;  
                                    &amp;lt;/Grid.RowDefinitions&amp;gt;  
                                    &amp;lt;controlsPrimitives:PanningBackgroundLayer x:Name="BackgroundLayer" HorizontalAlignment="Left" Grid.RowSpan="2"&amp;gt;  
                                         &amp;lt;Border x:Name="background" Background="{TemplateBinding Background}" CacheMode="BitmapCache"/&amp;gt;  
                                    &amp;lt;/controlsPrimitives:PanningBackgroundLayer&amp;gt;  
                                    &amp;lt;controlsPrimitives:PanningTitleLayer x:Name="TitleLayer" CacheMode="BitmapCache" ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" FontSize="187" FontFamily="{StaticResource PhoneFontFamilyLight}" HorizontalAlignment="Left" Margin="10,-76,0,9" Grid.Row="0"/&amp;gt;  
                                    &amp;lt;controlsPrimitives:PanningLayer x:Name="ItemsLayer" HorizontalAlignment="Left" Grid.Row="1"&amp;gt;  
                                         &amp;lt;ItemsPresenter x:Name="items"/&amp;gt;  
                                    &amp;lt;/controlsPrimitives:PanningLayer&amp;gt;  
                               &amp;lt;/Grid&amp;gt;  
                          &amp;lt;/ControlTemplate&amp;gt;  
                     &amp;lt;/Setter.Value&amp;gt;  
                &amp;lt;/Setter&amp;gt;  
           &amp;lt;/Style&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
NAMASTE&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/829577224533219397/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/fix-panorama-layout-when-upgrading-your.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/829577224533219397?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/829577224533219397?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/fix-panorama-layout-when-upgrading-your.html" title="Fix Panorama layout when upgrading your project to OS 8.0 SDK" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-T4bL9q1wGMw/UZEf1o_xSMI/AAAAAAAADw4/RseqiGNvEKE/s72-c/WP71.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04CQX89fCp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-3719049185464866958</id><published>2013-05-09T19:41:00.001+02:00</published><updated>2013-05-17T09:32:40.164+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:32:40.164+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mvvm" /><category scheme="http://www.blogger.com/atom/ns#" term="forwarding" /><category scheme="http://www.blogger.com/atom/ns#" term="8.0" /><category scheme="http://www.blogger.com/atom/ns#" term="classes" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="phone" /><category scheme="http://www.blogger.com/atom/ns#" term="panorama" /><category scheme="http://www.blogger.com/atom/ns#" term="pivot" /><category scheme="http://www.blogger.com/atom/ns#" term="TypeForwardedTo" /><category scheme="http://www.blogger.com/atom/ns#" term="type" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="7.1" /><category scheme="http://www.blogger.com/atom/ns#" term="move" /><title>Type forwarding and XAML sharing between WP OS 7.1 and 8.0 projects</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; This post is about a new feature available in Windows Phone OS 8.0 SDK called Type Forwarding.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Have you ever wondered how does the Windows Phone 8.0 SDK&amp;nbsp;handles the fact that the Panorama, Pivot controls changed the namespace and the assembly from OS 7.1 SDK to OS 8.0 SDK? (80% that you haven't :) ). I recently had to migrate an OS 7.1 project to OS 8.0, but also keep the old one (duplicated the old project and upgrade the duplicated one).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Here is the story of what happens when you upgrade an OS 7.1 project that uses Panaroma or Pivot to OS 8.0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; If you start a new Windows Phone Pivot App with the target OS 8.0 inside MainPage.xaml the prefix &lt;b&gt;"phone"&lt;/b&gt; is used for the Pivot control where "phone" is:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; If, on the other hand, you create a new Windows Phone Pivot App with the target OS 7.1 inside MainPage.xaml the prefix &lt;b&gt;"controls"&lt;/b&gt; is used for the Pivot/Panorama control where "controls" is:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; The real "magic" happens when you upgrade the Windows Phone 7.1 project to OS 8.0. The MainPage.xaml page doesn't change (you will still see the "controls" tag is kept in order to be able to better share the code between the versions), but instead a reference to &lt;b&gt;Microsoft.Phone.Controls.dll&lt;/b&gt; is added to the OS 8.0 reference that is not used if you create a new project with target OS 8.0. If you wonder if by adding this reference you use the old version of the controls the answer is NO. What this assembly does is that is uses a really neat and new &amp;nbsp;feature of the .Net compiler called Type Forwarding. This feature can be used when you move a class from one namespace/dll (assembly) to another and you don't want to recompile the application to reference the new dll but you will only deploy the two dlls where the first one (the one that the application already knew uses the Type Forwarding to tell the application that a certain class/es moved to another assembly). In the case of Windows Phone OS 8.0 SDK the usage is even "cooler" as it enables you to use the same XAML for both OS 7.1 projects and OS 8.0 ones. Inside AssemblyInfo.cs of Microsoft.Phone.Controls.dll OS 8.0 version we have all the declarations needed to forward the types to their new locations:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; [assembly: TypeForwardedTo(typeof(Panorama))]  
 [assembly: TypeForwardedTo(typeof(PanoramaItem))]  
 [assembly: TypeForwardedTo(typeof(Pivot))]  
 [assembly: TypeForwardedTo(typeof(PivotItem))]  
 [assembly: TypeForwardedTo(typeof(PivotItemEventArgs))]  
 [assembly: TypeForwardedTo(typeof(AnimationDirection))]  
 [assembly: TypeForwardedTo(typeof(PanningBackgroundLayer))]  
 [assembly: TypeForwardedTo(typeof(PanningLayer))]  
 [assembly: TypeForwardedTo(typeof(PanningTitleLayer))]  
 [assembly: TypeForwardedTo(typeof(PanoramaPanel))]  
 [assembly: TypeForwardedTo(typeof(PivotHeaderItem))]  
 [assembly: TypeForwardedTo(typeof(PivotHeadersControl))]  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
I am attaching a small project called TypeForwarding that implements the same functionality as Microsoft.Phone.Controls.dll OS 8.0 version.&lt;br /&gt;
&lt;br /&gt;
Other usages that I can thing of:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Flurry SDK changes the name of the namespace for the Api class for WP7SDK to WP8SDK (bad choice when you need code sharing). If you want to keep the same code for the OS 7.1 and the OS 8.0 version of the app you will have to use conditional compiling for every file where you use the Api class. Much easier would be to create an OS 8.0 library project with the default namespace WP7SDK and forward the Api class to the WP8SDK added as a reference to the library project. This way the old WP7SDK will continue to work as it was on the OS 8.0 using the OS 8.0 version of the Flurry SDK.&lt;/li&gt;
&lt;li&gt;MVVM Light. If you use inside your XAML the EventToCommand this is not xaml shareable between OS 7.1 and OS 8.0 because the assemblies changes from GalaSoft.MvvmLight.Extras.WP71.dll to&amp;nbsp;GalaSoft.MvvmLight.Extras.WP8.dll. The easiest approach in this case (an open source) would be to recompile the dll and use the same name for both versions of the dll. But if you don't have access to the source code of the dll you could use type forwarding. &amp;nbsp;Also a third approach would be to derive your on class like MyEventToCommand and use this inside the xaml.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Keep in mind this neat feature because you might need it. I would also love to see, in the next version of the SDK, the possibility to use MarkupExtension this way we could conditionally compile parts of the XAML depending on the version of the SDK the app is running on. Have a look at &lt;a href="http://joshsmithonwpf.wordpress.com/2008/06/12/conditionally-adding-elements-declared-in-xaml-to-the-element-tree/"&gt;this blog post&lt;/a&gt; that explains how it works on WPF projects.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://sdrv.ms/18wqfT0"&gt;SOURCE CODE&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Till next post NAMASTE and have fun coding for Windows Phone!</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/3719049185464866958/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/type-forwarding-and-xaml-sharing.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3719049185464866958?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3719049185464866958?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/type-forwarding-and-xaml-sharing.html" title="Type forwarding and XAML sharing between WP OS 7.1 and 8.0 projects" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkINRX0yfip7ImA9WhBUFEU.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-7671818161982977146</id><published>2013-05-01T15:33:00.000+02:00</published><updated>2013-05-02T10:49:54.396+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-02T10:49:54.396+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MobileServiceClient" /><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="async" /><category scheme="http://www.blogger.com/atom/ns#" term="services" /><category scheme="http://www.blogger.com/atom/ns#" term="silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="azure" /><category scheme="http://www.blogger.com/atom/ns#" term="xna" /><category scheme="http://www.blogger.com/atom/ns#" term="bcl" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Enable Azure Mobile Services for "pure" Windows Phone 7.1 Xna Games</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recently somebody asked me for an advice on what library should he use to communicate with an Azure Mobile Service for an Windows Phone OS 7.1 and Windows 8 Xna game. My answer was, of course, the Windows Azure Mobile Services client library available on &lt;a href="http://nuget.org/packages/WindowsAzure.MobileServices"&gt;NuGet&lt;/a&gt;&amp;nbsp;as I remembered that the prerelease version works also for Windows Phone OS 7.x applications. &lt;br /&gt;
&lt;br /&gt;
The "problem" is that the library will not install if the game is a pure Xna Windows Phone project. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-km35Ew3TvEw/UYER0jNDidI/AAAAAAAADtA/gj2kPbEOmPE/s1600/PackageConsole.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://3.bp.blogspot.com/-km35Ew3TvEw/UYER0jNDidI/AAAAAAAADtA/gj2kPbEOmPE/s400/PackageConsole.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
There are 2 (maybe 3 :) )&amp;nbsp;solutions to this problem:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
1. Migrate your XNA project to an "Windows Phone XAML and XNA App" and on this type of project the client library will install correctly.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
2. You could use a small hack in order to&amp;nbsp;force NuGet to install the Azure Mobile Services client library on your XNA project. The hack is pretty simple:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;div style="text-align: justify;"&gt;
open the YourProject.csproj file with an text editor (like Notepad) and add these 3 line (not sure if all 3 of them are needed but doesn't matter as it is only done to force the library to install):&lt;/div&gt;
&lt;/li&gt;
&lt;pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="-ms-word-wrap: normal; color: black;"&gt; &amp;lt;SilverlightVersion&amp;gt;$(TargetFrameworkVersion)&amp;lt;/SilverlightVersion&amp;gt;  
 &amp;lt;TargetFrameworkProfile&amp;gt;WindowsPhone71&amp;lt;/TargetFrameworkProfile&amp;gt;  
 &amp;lt;TargetFrameworkIdentifier&amp;gt;Silverlight&amp;lt;/TargetFrameworkIdentifier&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-aWxlNEdEytQ/UYEQGqiDQTI/AAAAAAAADs0/ov-h8kCX5zQ/s1600/Proj.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://4.bp.blogspot.com/-aWxlNEdEytQ/UYEQGqiDQTI/AAAAAAAADs0/ov-h8kCX5zQ/s400/Proj.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;div style="text-align: justify;"&gt;
&amp;nbsp;Visual Studio will see that the project has been modified so it will ask to Reload the project. Reload it (don't try to build the project as it won't), open the Package Manager Console and write: &lt;/div&gt;
&lt;pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="-ms-word-wrap: normal; color: black;"&gt; Install-Package WindowsAzure.MobileServices -Pre   
&lt;/code&gt;&lt;/pre&gt;
the package should now install. &lt;/li&gt;
&lt;li&gt;Reopen the .csproj file in Notepad and remove the 3 lines&amp;nbsp;we've previously added, save and reload the project in Visual Studio. The project should compile correctly and you should be able to use the Azure Mobile Services client library.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
The only thing that doesn't seem to work is make Visual Studio recognize the await keyword for the XNA project. You will have to use the ContinueWith syntax:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="-ms-word-wrap: normal; color: black;"&gt; void TestAzureMobile()  
     {  
       todoitem item = new todoitem { Text = "Awesome item XNA" };  
       ms.GetTable&amp;lt;todoitem&amp;gt;().InsertAsync(item).ContinueWith((task)  
         =&amp;gt;  
       {  
         //do what you need here  
       });  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
3. Came to me while writing the post. Guess the most "elegant" way is to add an Windows Phone Class library to your project, add and use the Azure Mobile Service client library from the class library, reference the class library&amp;nbsp;from your&amp;nbsp;XNA project. Tried this one but the MobileServiceClient seems to fail initialization with 'System.TypeInitializationException'.&lt;br /&gt;
&lt;br /&gt;
Take in consideration that the Azure Mobile Services client&amp;nbsp;library is still a pre-release version&amp;nbsp;in this moment&amp;nbsp;so for the release they might fix/enhance it and you could install it on XNA projects without any hack needed (it is a PCL library).&lt;br /&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/7671818161982977146/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/hack-to-enable-azure-mobile-services.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/7671818161982977146?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/7671818161982977146?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/05/hack-to-enable-azure-mobile-services.html" title="Enable Azure Mobile Services for &quot;pure&quot; Windows Phone 7.1 Xna Games" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-km35Ew3TvEw/UYER0jNDidI/AAAAAAAADtA/gj2kPbEOmPE/s72-c/PackageConsole.PNG" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;D04BQHw9eCp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-6562104783147666272</id><published>2013-04-24T21:59:00.000+02:00</published><updated>2013-05-17T09:32:31.260+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:32:31.260+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="resolution" /><category scheme="http://www.blogger.com/atom/ns#" term="reflection" /><category scheme="http://www.blogger.com/atom/ns#" term="screen" /><category scheme="http://www.blogger.com/atom/ns#" term="wp7 wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="telerik" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="display" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="ScaleFactor" /><category scheme="http://www.blogger.com/atom/ns#" term="7.1" /><category scheme="http://www.blogger.com/atom/ns#" term="phone" /><title>Detect the screen resolution for Windows Phone OS 7.1 applications</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; As you probably know Windows Phone 7.1 applications run perfectly on Windows Phone 8 devices. This means that your application/s could run on multiple display resolutions (which are the resolutions supported by Windows Phone 8 devices). If you want to take advantage of the new resolutions (for example downloading higher quality images for higher resolutions devices, fix some minor UI anomalies on&amp;nbsp;higher&amp;nbsp;resolutions) you will need to know the ScaleFactor of the device. The property is only available in the Windows Phone 8.0 SDK, but the good news is that you can access it using reflection.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
We retrieve the Get method of the ScaleFactor property and invoke it only if the application is running on an Windows Phone 8 device.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Here is the source code:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  public static Size DisplayResolution  
     {  
       get  
       {  
         if (Environment.OSVersion.Version.Major&amp;lt;8)  
           return new Size(480,800);  
         int scaleFactor=(int) GetProperty(Application.Current.Host.Content, "ScaleFactor");  
         switch (scaleFactor)  
         {  
           case 100:  
             return new Size(480, 800);  
           case 150:  
             return new Size(720, 1280);  
           case 160:  
             return new Size(768, 1280);  
         }  
         return new Size(480, 800);  
       }  
     }  
     private static object GetProperty(object instance, string name)  
     {  
       var getMethod= instance.GetType().GetProperty(name).GetGetMethod();  
       return getMethod.Invoke(instance, null);  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
I am also attaching a small sample Windows Phone OS 7.1 test project.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-AIDe5H3t5Tc/UXgxA8j_6aI/AAAAAAAADrs/HzL6Pr3-QJI/s1600/DisplayResolution.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-AIDe5H3t5Tc/UXgxA8j_6aI/AAAAAAAADrs/HzL6Pr3-QJI/s320/DisplayResolution.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://sdrv.ms/YiuEXH"&gt;SOURCE CODE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
P.S. I think Telerik could use this method to fix this RadToolTip visual anomaly (the 1 pixel width lines that I have filled with blue for contrast) :&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-wijqDT5J7LM/UXg4pR9qjiI/AAAAAAAADsI/A9LZLXEZgxw/s1600/Anomaly.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="103" src="http://2.bp.blogspot.com/-wijqDT5J7LM/UXg4pR9qjiI/AAAAAAAADsI/A9LZLXEZgxw/s320/Anomaly.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
NAMASTE</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/6562104783147666272/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/04/detect-screen-resolution-for-windows.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/6562104783147666272?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/6562104783147666272?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/04/detect-screen-resolution-for-windows.html" title="Detect the screen resolution for Windows Phone OS 7.1 applications" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-AIDe5H3t5Tc/UXgxA8j_6aI/AAAAAAAADrs/HzL6Pr3-QJI/s72-c/DisplayResolution.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;D04HQX0-eCp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-9064587583534072452</id><published>2013-04-17T08:00:00.000+02:00</published><updated>2013-05-17T09:32:10.350+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:32:10.350+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cookies" /><category scheme="http://www.blogger.com/atom/ns#" term="logout" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="facebook" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>3 ways to force the WebBrowser control to logout from Facebook</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Decided to write this post because it took me some time to find the answer. Maybe you already know that if you use OAuth Facebook connect inside your Windows Phone application there is one step where you use the WebBrowser control to let the user authenticate on the Facebook server and authorize your app. The "problem" presents itself when you want to link another user because the WebBrowser control has already memorized the old credentials and will automatically use them. What needs to be done is to logout the old user from the WebBrowser without actually telling the user to go on the web page and click logout. I have found 3 easy ways to do that: the first two will work on both Windows Phone 7.x and Windows Phone 8 and are Facebook specific and the third one will only work on Windows Phone 8 (generic method for OAuth providers). The 3 methods can use the WebBrowser control headless (you don't actually have to show the WebBrowser control to the user and don't even have to have the webbrowser attached to a Page): &amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Method 1&lt;/b&gt;: described by Rene Schulte in this &lt;a href="http://kodierer.blogspot.it/2012/01/let-me-out-facebook-logout-in-windows.html"&gt;blog post &lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
The method constructs the logout Uri using your AppId and a SessionKey that is obtained from the AccessToken you got when the user&amp;nbsp;authenticated.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Get the SessionKey:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  private static string ExtractSessionKeyFromAccessToken(string accessToken)  
     {  
       if (!String.IsNullOrEmpty(accessToken))  
       {  
         var parts = accessToken.Split('|');  
         if (parts.Length &amp;gt; 2)  
         {  
           return parts[1];  
         }  
       }  
       return String.Empty;  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Obtain the logout Uri:&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  public Uri GetLogoutUri(FacebookCredentials credentials)  
     {  
       var sessionkey = ExtractSessionKeyFromAccessToken(credentials.AccessToken);  
       var url = String.Format("http://facebook.com/logout.php?app_key={0}&amp;amp;session_key={1}&amp;amp;next={2}", EndpointData.FacebookAppId, sessionkey, EndpointData.FacebookLogoutCallbackUrl);  
       return new Uri(url);  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Make the WebBrowser navigate to the logout Uri:&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; Browser.Navigate(FacebookService.GetLogoutUri(EndpointData.Settings.Facebook));  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Method 2:&lt;/b&gt;&lt;br /&gt;
If for some reason you don't have the Facebook AppId available (my case) you can use the WebBrowser to navigate to the Logout page&amp;nbsp;&lt;span style="color: blue;"&gt;https://www.facebook.com/logout.php&lt;/span&gt; and after the page gets loaded you just execute the script&amp;nbsp;&lt;span style="color: blue;"&gt;document.forms['logout_form']&lt;/span&gt;:&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; wb.LoadCompleted += wb_LoadCompleted;  
 wb.Navigate(new Uri("https://www.facebook.com/logout.php"));  
&lt;/code&gt;&lt;/pre&gt;
Once the page gets loaded:&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; void wb_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)  
     {  
       wb.LoadCompleted -= wb_LoadCompleted;  
       if (wb.SaveToString().Contains("logout_form"))  
         wb.InvokeScript("eval", "document.forms['logout_form'].submit();");  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Method 3:&lt;/b&gt;&lt;br /&gt;
This is the easiest one, but will only work on Windows Phone 8: call the new WebBrowser async method&amp;nbsp;&lt;span style="color: blue;"&gt;ClearCookiesAsync(). &lt;/span&gt;This method works for every OAuth provider (Dropbox, Box, Skydrive, Picasa, Flickr, Google Drive... infinite list).&lt;br /&gt;
&lt;br /&gt;
NAMASTE&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/9064587583534072452/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/04/3-ways-to-force-webbrowser-control-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/9064587583534072452?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/9064587583534072452?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/04/3-ways-to-force-webbrowser-control-to.html" title="3 ways to force the WebBrowser control to logout from Facebook" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04FRHw8eip7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-1308083817509990045</id><published>2013-04-02T20:26:00.001+02:00</published><updated>2013-05-17T09:31:55.272+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:31:55.272+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="scroll" /><category scheme="http://www.blogger.com/atom/ns#" term="scrollviewer" /><category scheme="http://www.blogger.com/atom/ns#" term="scrolling" /><category scheme="http://www.blogger.com/atom/ns#" term="#wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="smooth" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="phone" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>Smooth scrolling content on Windows Phone</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Gotta say that I am not 100% satisfied about the title of this blog post, but since I haven't found a better one I will use this one (don't get it wrong windows phone has smooth scrolling implemented). This post is focusing on how to smooth scroll the content of a &lt;b&gt;ScrollViewer&lt;/b&gt;. If you are using the ScrollViewer you know that it already has the method&amp;nbsp;&lt;b&gt;ScrollToVerticalOffset &lt;/b&gt;that can be used to manually scroll the content but this method doesn't have any animation implemented so you will see only a fast redraw of the new content without getting the "feeling" that the content scrolled to the new position. The easiest way to achieve this task would be using a StoryBoard with an Animation on the property&amp;nbsp;VerticalOffset of the ScrollViewer, but VerticalOffset is a read-only property so it cannot be set and therefore cannot be used for animation.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;The solution I found was to build a custom control and add a custom property that can be used as a target for a DoubleAnimation. The attached sample (see the link at the end of the post) is using a ListBox as the content of my Custom Control but you can use anything else inside the control (a better approach for the ListBox would be to create a custom control derived directly from ListBox and use the built-in ScrollViewer).&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Let's start from the XAML part of the User Control:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  &amp;lt;ScrollViewer x:Name="scroller"&amp;gt;  
     &amp;lt;ContentPresenter Content="{Binding ContentArea, ElementName=userControl}"/&amp;gt;  
  &amp;lt;/ScrollViewer&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; So we have a ScrollViewer&amp;nbsp;which inside has a ContentPreseter that has its content binded to the control's property ContentArea. Now let us have a look at the .cs code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; public static readonly DependencyProperty VerticalOffsetProperty = DependencyProperty.Register("VerticalOffset",  
       typeof(double), typeof(SmoothScroller), new PropertyMetadata(VerticalOffsetPropertyChanged));  
     public double VerticalOffset  
     {  
       get { return (double)this.GetValue(VerticalOffsetProperty); }  
       set { this.SetValue(VerticalOffsetProperty, value); }  
     }  
     private static void VerticalOffsetPropertyChanged(object sender, DependencyPropertyChangedEventArgs args)  
     {  
       SmoothScroller cThis = sender as SmoothScroller;  
       cThis.scroller.ScrollToVerticalOffset((double)args.NewValue);  
     }  
     public static readonly DependencyProperty ContentAreaProperty = DependencyProperty.Register("ContentArea", typeof(object), typeof(SmoothScroller), null);  
     public object ContentArea  
     {  
       get { return (object)GetValue(ContentAreaProperty); }  
       set { SetValue(ContentAreaProperty, value); }  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;The property that we will use for&amp;nbsp;animation&amp;nbsp;is the VerticalOffset that uses the method&amp;nbsp;VerticalOffsetPropertyChanged to scroll to a vertical offset inside the control's scroller. The property VerticalOffset can be animated and we will use it to smooth scroll the ListBox content.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Here is the content of the MainPage.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  &amp;lt;uc:SmoothScroller x:Name="smoothScroller"&amp;gt;  
         &amp;lt;uc:SmoothScroller.ContentArea&amp;gt;  
         &amp;lt;ListBox x:Name="lstItems" ItemsSource="{Binding Items}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemTemplate="{StaticResource DataTemplate}" &amp;gt;  
           &amp;lt;ListBox.ItemContainerStyle&amp;gt;  
             &amp;lt;Style TargetType="ListBoxItem"&amp;gt;  
               &amp;lt;Setter Property="HorizontalContentAlignment" Value="Stretch"&amp;gt;&amp;lt;/Setter&amp;gt;  
             &amp;lt;/Style&amp;gt;  
           &amp;lt;/ListBox.ItemContainerStyle&amp;gt;  
         &amp;lt;/ListBox&amp;gt;  
         &amp;lt;/uc:SmoothScroller.ContentArea&amp;gt;  
       &amp;lt;/uc:SmoothScroller&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;So we have the SmoothScroller control which inside its ContentArea has a ListBox (the ListBox has it's scrollviewer disabled). What the sample does is it is changing the selected item every second (incrementing the selectedindex) and scrolls the content so that the newly SelectedItem is centered in the ScrollViewer. Here is the code used for scrolling:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  void dt_Tick(object sender, EventArgs e)  
     {  
       ((ListBox)smoothScroller.ContentArea).SelectedIndex = idx;  
       var container = ((ListBox)smoothScroller.ContentArea).ItemContainerGenerator.ContainerFromIndex(idx) as FrameworkElement;  
       var transform = container.TransformToVisual(smoothScroller.scroller);  
       var elementLocation = transform.Transform(new Point(0, 0));  
       double newVerticalOffset = elementLocation.Y + smoothScroller.scroller.VerticalOffset - smoothScroller.scroller.ActualHeight / 2 ;  
       //Animate transition  
       DoubleAnimation verticalAnimation = new DoubleAnimation();  
       verticalAnimation.From = smoothScroller.scroller.VerticalOffset;  
       verticalAnimation.To = newVerticalOffset;  
       verticalAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(500));  
       var sb = new Storyboard();  
       sb.Children.Add(verticalAnimation);  
       Storyboard.SetTarget(verticalAnimation, smoothScroller);  
       Storyboard.SetTargetProperty(verticalAnimation, new PropertyPath(SmoothScroller.VerticalOffsetProperty));  
       sb.Begin();  
       idx++;  
       if (idx &amp;gt;= 56)  
         dt.Stop();  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Pretty basic: select the new index in the ListBox, calculate the new VerticalOffset so that the newly selected item is centered in our scrollviewer and create and start a 500ms animation for the SmoothScroller.VerticalOffsetProperty. Anyway I am sure that you will better understand how it works when you will try the sample code.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;The sample is far from perfect (before starting a new animation I should check if the old one finished, should not automatically scroll when the user is manipulating the list,...).&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Here is a screenshot from the sample:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-oS-0Dqe1cm0/UVsSWbaxwgI/AAAAAAAADrQ/T3SATpYQfyk/s1600/SmoothScrolling.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-oS-0Dqe1cm0/UVsSWbaxwgI/AAAAAAAADrQ/T3SATpYQfyk/s320/SmoothScrolling.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As usual let me know if you need help. The code works on both Windows Phone 7.1 and Windows Phone 8 SDK.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://sdrv.ms/12b8p7i"&gt;&lt;b&gt;SOURCE CODE&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/1308083817509990045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/04/smooth-scrolling-content-on-windows.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/1308083817509990045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/1308083817509990045?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/04/smooth-scrolling-content-on-windows.html" title="Smooth scrolling content on Windows Phone" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-oS-0Dqe1cm0/UVsSWbaxwgI/AAAAAAAADrQ/T3SATpYQfyk/s72-c/SmoothScrolling.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU4GR3w9cSp7ImA9WhBXEUk.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-1601007568243850819</id><published>2013-03-24T18:58:00.001+01:00</published><updated>2013-03-24T18:58:46.269+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-24T18:58:46.269+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xaudio2" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 8" /><category scheme="http://www.blogger.com/atom/ns#" term="best practice" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Small tip on XAudio2 for Windows Phone</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;While debugging one of my Windows Phone applications on the device I've noticed that after the debug session the battery of the device drained faster than usual (so I always restarted the device after using it for debugging). Initially I thought it was the Bluetooth driver but I saw that if I stop the XAudio2 engine when my application gets suspended and re-enable it when the application&amp;nbsp;resumes&amp;nbsp;my battery drains "normally". This should be a best practice as your application doesn't really need the engine when it gets suspended. So:&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-align: justify;"&gt;When your app is suspended, call&amp;nbsp;&lt;/span&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=272565" style="color: #1155cc; font-family: inherit; text-align: justify;" target="_blank"&gt;IXAudio2::StopEngine&lt;/a&gt;&lt;span style="font-family: inherit; text-align: justify;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-align: justify;"&gt;When your app is resumed, call&amp;nbsp;&lt;/span&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=272566" style="color: #1155cc; font-family: inherit; text-align: justify;" target="_blank"&gt;IXAudio2::StartEngine&lt;/a&gt;&lt;span style="font-family: inherit; text-align: justify;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
NAMASTE&lt;/div&gt;
&lt;br /&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/1601007568243850819/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/small-tip-on-xaudio2-for-windows-phone.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/1601007568243850819?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/1601007568243850819?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/small-tip-on-xaudio2-for-windows-phone.html" title="Small tip on XAudio2 for Windows Phone" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0IMRn07fSp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-1642782583839916033</id><published>2013-03-22T17:20:00.000+01:00</published><updated>2013-05-17T09:26:27.305+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:26:27.305+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="mp3" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="emulator" /><category scheme="http://www.blogger.com/atom/ns#" term="id3" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="song" /><category scheme="http://www.blogger.com/atom/ns#" term="save" /><category scheme="http://www.blogger.com/atom/ns#" term="add" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><category scheme="http://www.blogger.com/atom/ns#" term="MediaLibrary" /><title>How to add songs to the emulator's MediaLibrary</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; One of the new features of the Windows Phone 8 SDK is the ability to save(add) songs to the phone's MediaLibrary. This is a really nice when you add songs to the MediaLibrary any other music application that you have installed on your phone can play the songs that your application has saved.. The SaveSong method is found in the&amp;nbsp;MediaLibraryExtensions class. Here are the parameters of this method:&lt;/div&gt;
&lt;br /&gt;
[ExtensionAttribute]&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; Song SaveSong (
         MediaLibrary library,
         Uri filename,
         SongMetadata songMetadata,
         SaveSongOperation operation
)
&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;&amp;nbsp; &amp;nbsp; The method requires the&amp;nbsp;&lt;/span&gt;&lt;b&gt;ID_CAP_MEDIALIB_AUDIO&lt;/b&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;capability and will return a reference to the newly saved song. One of the things that the documentation forgot to mention is that the filename Uri has to be an Uri to a file on the IsolatedStorage. You cannot give a direct Uri to an asset file (this I think because using the SaveSongParameter you can choose if you want to copy or move the file to the MediaLibrary) as you will get&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="white-space: normal;"&gt;InvalidOperationException&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;. If you want to add a song deployed as an asset you will first have to copy the file to the IsolatedStorage and then save it to the MediaLibrary.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;&amp;nbsp; &amp;nbsp; To copy the file to the IsolatedStorage you can use the:&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; var resource = Application.GetResourceStream(new Uri(@"Assets/Songs/"+fileName, UriKind.Relative));  
 resource.Stream.CopyTo(fileStream, 4096);  
&lt;/code&gt;&lt;/pre&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;or you can use the WinRT Api to read the asset file:&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  songUri=new Uri("ms-appx:///Assets/Songs/"+fileName,UriKind.Absolute);  
  var file=await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(songUri);  
&lt;/code&gt;&lt;/pre&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="text-align: justify;"&gt;&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; One interesting parameter is the SongMetadata. This enables you to "mess" with the metadata that will be saved to the MediaLibrary. If this parameter is &lt;b&gt;null &lt;/b&gt;then the function will automatically import the file's metadata. If you still want to verify/import just some of the files metadata you can use the PCL &lt;a href="http://id3.codeplex.com/"&gt;ID3.NET&lt;/a&gt;&amp;nbsp;and read the metadata of the file you have on the Isolated Storage. The portble dll is Id3.dll. You just have to pass the Stream to the Mp3Stream method:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; Id3.Mp3Stream mp3 = new Id3.Mp3Stream(resource.Stream);  
 if (mp3.HasTags)  
 {  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
NAMASTE&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/1642782583839916033/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/add-songs-to-emulators-medialibrary.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/1642782583839916033?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/1642782583839916033?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/add-songs-to-emulators-medialibrary.html" title="How to add songs to the emulator's MediaLibrary" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04EQH0_fSp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-3761611635786354213</id><published>2013-03-18T20:26:00.000+01:00</published><updated>2013-05-17T09:31:41.345+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:31:41.345+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="weinre" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="#wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="debug" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><category scheme="http://www.blogger.com/atom/ns#" term="nodejs" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>How to debug Windows Phone HTML5 Apps</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; Debugging HTML applications is never an easy task and until today I did not know how to approach this for Windows Phone HTML5. The&amp;nbsp;technique I will describe in this post can be applied also for Windows Phone 7.1 applications using Phonegap or Android/iOS applications.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;The "secret" tool for debugging the html content inside our applications is called &lt;a href="http://people.apache.org/~pmuellr/weinre-docs/latest/" target="_blank"&gt;WEINRE&lt;/a&gt;&amp;nbsp;which comes from&amp;nbsp;WEb INspector REmote. Weinre is a debugger for web pages, like FireBug (for FireFox) and Web Inspector (for WebKit-based browsers), except it's designed to work remotely, and in particular, to allow you debug web pages on a mobile device such as a phone.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; In order to install Winre you will need to download and install &lt;a href="http://nodejs.org/" target="_blank"&gt;NodeJS&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-a2xHmXUrBxA/UUdUajrK_CI/AAAAAAAADgY/L1f4OOaf7gs/s1600/NodeJS.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://2.bp.blogspot.com/-a2xHmXUrBxA/UUdUajrK_CI/AAAAAAAADgY/L1f4OOaf7gs/s320/NodeJS.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; Once you have installed NodeJS restart your machine this way you will be able to run the NodeJS commands from the command prompt. After restart open a command prompt window and run this command:&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;pre style="background-color: #f0f0f0; background-position: initial initial; background-repeat: initial initial; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: center; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; npm install weinre -g  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
This will install the Weinre package globally. This is what you should see in the Command Prompt window:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-EHVUWvnW_Lc/UUdVRUWL3qI/AAAAAAAADgg/9kYA5Kf1u-s/s1600/InstallWeinre.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://2.bp.blogspot.com/-EHVUWvnW_Lc/UUdVRUWL3qI/AAAAAAAADgg/9kYA5Kf1u-s/s400/InstallWeinre.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; When the installer has finished its work you are ready to run the Weinre server on your PC. Execute this command from the Command Prompt:&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;pre style="background-color: #f0f0f0; background-position: initial initial; background-repeat: initial initial; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: center; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; weinre --boundHost -all- --debug -true  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; With these parameters Weinre should also open the firewall port. For more parameters have a look at this &lt;a href="http://people.apache.org/~pmuellr/weinre-docs/latest/Running.html" target="_blank"&gt;page&lt;/a&gt;. You can verify if the server started by opening a browser page and loading 127.0.01:8080 (8080 is the default port for Weinre). If you are seeing this page then the server is running:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-IHo96uih8yE/UUdWuoCQ5sI/AAAAAAAADgw/6mT_epNHiac/s1600/Remote.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="297" src="http://3.bp.blogspot.com/-IHo96uih8yE/UUdWuoCQ5sI/AAAAAAAADgw/6mT_epNHiac/s400/Remote.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&amp;nbsp; &amp;nbsp;Now click on the Debug Client User Interface link where you will be able to see if any client is connected and debug the connected clients.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&amp;nbsp; &amp;nbsp; Let's create the Windows Phone HTML5 application. Use the SDK template to create a new project, open the page index.html inside the folder Html and add this line to the head section:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;script src="http://[the server ip]:8080/target/target-script-min.js#anonymous"&amp;gt;&amp;lt;/script&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
replace [the server ip] with the IP of the PC running the Winre server and run the application. If everything went as we expected in the Debug Client user Interface on the Server we should see one Target connected:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-J2D3ClMXB5I/UUdabs3cBVI/AAAAAAAADg4/W2Dh3pO75OQ/s1600/Connected.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="332" src="http://1.bp.blogspot.com/-J2D3ClMXB5I/UUdabs3cBVI/AAAAAAAADg4/W2Dh3pO75OQ/s400/Connected.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp; Once the target Windows Phone page is connected you can inspect and change the DOM in real-time, execute javascripts:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-dp-pXFoRuB0/UUdbCdzynhI/AAAAAAAADhA/azxh8GE_ol8/s1600/Debug.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="433" src="http://2.bp.blogspot.com/-dp-pXFoRuB0/UUdbCdzynhI/AAAAAAAADhA/azxh8GE_ol8/s640/Debug.PNG" width="640" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; In this particular case I've only changed the background of the page but you can do&amp;nbsp;whatever&amp;nbsp;you want. &lt;a href="http://people.apache.org/~pmuellr/weinre-docs/latest/UserInterface.html"&gt;Here &lt;/a&gt;you can find further details on how to use the Server User Interface.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Using the Console panel you can execute arbitrary JavaScript expressions/statements. It also shows the output from various console methods, like console.log().&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-__1fxevOqWE/UUdcxl52yJI/AAAAAAAADhI/2tgg9tp3Y-I/s1600/HtmlCommands.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://1.bp.blogspot.com/-__1fxevOqWE/UUdcxl52yJI/AAAAAAAADhI/2tgg9tp3Y-I/s320/HtmlCommands.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; This is pretty much everything. Simple and veryyyyyy useful if you need to debug your HTML5 windows phone applications.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; As usual don't hesitate to contact me if you have further questions.&lt;br /&gt;
&lt;br /&gt;
NAMASTE&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/3761611635786354213/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/how-to-debug-windows-phone-html5-apps.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3761611635786354213?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3761611635786354213?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/how-to-debug-windows-phone-html5-apps.html" title="How to debug Windows Phone HTML5 Apps" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-a2xHmXUrBxA/UUdUajrK_CI/AAAAAAAADgY/L1f4OOaf7gs/s72-c/NodeJS.PNG" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;AkQMSXo9eyp7ImA9WhBQE0k.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-2476135570833046677</id><published>2013-03-15T12:53:00.000+01:00</published><updated>2013-03-15T12:53:08.463+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-15T12:53:08.463+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="live tiles" /><category scheme="http://www.blogger.com/atom/ns#" term="mazaa" /><category scheme="http://www.blogger.com/atom/ns#" term="7.10.8862.144" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC" /><title>HTC Mazaa OS  7.10.8862.144 - live tiles fix</title><content type="html">&amp;nbsp; &amp;nbsp;This is a small update to my previous post on how to update your HTC Mazaa to the latest build of Windows Phone 7.x &amp;nbsp;&lt;a href="http://sviluppomobile.blogspot.it/2013/02/update-htc-mazaa-to-windows-phone-78.html"&gt;http://sviluppomobile.blogspot.it/2013/02/update-htc-mazaa-to-windows-phone-78.html&lt;/a&gt;&amp;nbsp;. You can now update to version 7.10.8862.144 of the OS that seems to fix the live tiles issues.&lt;br /&gt;
&lt;br /&gt;
The steps you will have to add:&lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2013/02/diff-7.10.8858.136-7.10.8860.142-armv7-retail-microsoft.pks_4a5e9f454174c7bdcb2da953d1e18fe5443ba7e8.cab" target="_blank"&gt;7.10.8858.136 - 7.10.8860.142&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Step2:&lt;br /&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2013/03/diff-7.10.8860.142-7.10.8862.144-armv7-retail-microsoft.plustuner.pks_d802531eab4e9bce3ab747805ea7e33fc8cd29bf.cab" target="_blank"&gt;7.10.8860.142 - 7.10.8862.144&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/2476135570833046677/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/htc-mazaa-os-7108862144-live-tiles-fix.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/2476135570833046677?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/2476135570833046677?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/htc-mazaa-os-7108862144-live-tiles-fix.html" title="HTC Mazaa OS  7.10.8862.144 - live tiles fix" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D08MR3g7eCp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-7923559659565972677</id><published>2013-03-12T00:54:00.001+01:00</published><updated>2013-05-17T09:31:26.600+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:31:26.600+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="multilingual" /><category scheme="http://www.blogger.com/atom/ns#" term="share" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="xliff" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="localization" /><category scheme="http://www.blogger.com/atom/ns#" term="resx" /><category scheme="http://www.blogger.com/atom/ns#" term="resources" /><category scheme="http://www.blogger.com/atom/ns#" term="xlf" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="win8dev" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="multi-language" /><category scheme="http://www.blogger.com/atom/ns#" term="resw" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Share localization files between Windows Phone and Windows 8</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; As I wrote in my previous post I am getting back with a post on how to share the localization files between Windows Phone and Windows 8. This should be a simple task, but in the current version of the Windows Phone SDK and Windows 8 it cannot be easily done. The target is to have only one of the two projects (Windows Phone or Windows 8) that manages the localized (in this sample I am only taking in consideration localized strings but the concept can be easily extended) and use it in the other project. Also I wanted to use the Multilingual App Toolkit to easily manage the translations inside the project.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; First let's see what we have:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style="text-align: justify;"&gt;Windows Phone&amp;nbsp;+ Multilingual App Toolkit&lt;/li&gt;
&lt;ol&gt;
&lt;li style="text-align: justify;"&gt;The main resource file is called &lt;b&gt;AppResources.resx&lt;/b&gt; and is inside the Resources folder&amp;nbsp;&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;The AppResources.resx automatically generates the&amp;nbsp;&lt;b&gt;AppResources &lt;/b&gt;class&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;The files generated by the Multilingual App Toolkit for the Windows Phone project are also inside the "\Resources" folder and the name look like AppResources.[culture].xlf&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;We have a class called LocalizedStrings.cs that helps us with the binding inside xaml files&lt;/li&gt;
&lt;/ol&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style="text-align: justify;"&gt;Windows 8 + Multilingual App Toolkit&lt;/li&gt;
&lt;ul&gt;
&lt;li style="text-align: justify;"&gt;&amp;nbsp;The main resource file is called Resources.resw and it is inside the \strings\[Default language] folder&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;The Resources.resw doesn't have .cs class in code behind generated (it uses the ResourceLoader class to load the localized values). We can also have values with "." like MainButton.Text to directly use inside xaml with the x:Uid.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;The files generated by the Multilingual App Toolkit for Windows 8 are inside the "\MultilingualResources" folder and the names are&amp;nbsp;[AppName]_[culture].xlf&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="text-align: justify;"&gt;So we cannot directly use the files from one project to another.&amp;nbsp;&lt;/span&gt;&amp;nbsp;There are a lot of differences but the couples (AppResources.resx, Resources.resw) and all the (&lt;span style="text-align: justify;"&gt;AppResources.[culture].xlf,&lt;/span&gt;&lt;span style="text-align: justify;"&gt;&amp;nbsp;[AppName]_[culture].xlf) have different names but share very similar structure (they share most of the structure).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style="text-align: justify;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;My approach and idea is to automatically generate the set of localized files needed by one solution directly from the set of files of the other project at compilation time. As source I have chosen the Windows Phone resource files (the other way around is more difficult as we could have&amp;nbsp;resources&amp;nbsp;not supported by Windows Phone). In order to automatically generate the resource files I have created a console application that would be run as a Post-build event on the Windows Phone project and write the necessary files to the Windows 8 project. the Windows 8 project build will be set to depend on the Windows Phone project this way we will always have updated resources when we run it. The console application needs three parameters/inputs: the folder of the Windows Phone project (source), the folder of the Windows 8 project (destination), and the name of the Windows 8 project as we will need it when we generate the&amp;nbsp;&lt;/span&gt;&lt;span style="text-align: justify;"&gt;[AppName]_[culture].xlf files for the Windows 8 project. The console application also automatically generates the&amp;nbsp;&lt;/span&gt;AppResources.cs class inside the Windows 8 projects which is a class similar to the one used by Windows Phone. The source code for the Console Application is also included in case you need to do some changes and also the full sample.&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;So let's see what would be the steps you will have to make if you want to use the solution.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Create a Windows Phone application (in the attached sample the project WindowsPhoneApp). Using the Tools menu enable the Multilingual App Toolkit and using right-click on the project name select "Add translation languages..." to support more languages (in the sample is italian)&lt;/li&gt;
&lt;li&gt;Create the Windows 8 projects (in the attached sample the project called&amp;nbsp;WindowsStoreApp). Create the the folder structure&lt;b&gt; \strings\en&amp;nbsp;&lt;/b&gt;and add the file&lt;b&gt; Resources.resw&lt;/b&gt; to it. Inside the Package.appxmanifest set the default language as en. Now use the Tools menu and enable the Multilingual App Toolkit on the Windows 8 project and add the same languages that you have added to the Windows Phone Project.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&amp;nbsp; &amp;nbsp; If later you want to add another language support remember to add it to both Windows 8 and Windows Phone projects.&lt;br /&gt;
&lt;ol&gt;
&lt;/ol&gt;
This is how our solution looks :&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-tjNyJQyverQ/UT42TWJIViI/AAAAAAAADgE/1CVXjsyHwRs/s1600/Project.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="391" src="http://1.bp.blogspot.com/-tjNyJQyverQ/UT42TWJIViI/AAAAAAAADgE/1CVXjsyHwRs/s400/Project.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
two different projects each of one with its localization part. Now we will set that the Windows 8 project build depends on the Windows Phone project and set the post-build action of the Windows Phone project to be:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
$(SolutionDir)ConvertAppResources\$(OutDir)ConvertAppResources.exe "$(SolutionDir)WindowsPhoneApp" "$(SolutionDir)WindowsStoreApp" WindowsStoreApp&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
where ConvertAppResources is the project that converts the resources. We pass 3 parameters to the console application:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;the folder of the Windows Phone application which is the source -&amp;nbsp;"$(SolutionDir)WindowsPhoneApp"&lt;/li&gt;
&lt;li&gt;the folder of the Windows 8 app which is the destination -&amp;nbsp;"$(SolutionDir)WindowsStoreApp"&lt;/li&gt;
&lt;li&gt;the name of the Windows 8 app-&amp;nbsp;WindowsStoreApp&lt;/li&gt;
&lt;/ol&gt;
In our case the console application will generate and overwrite Resources.resw, WindowsStoreApp_it.xlf and WindowsStoreApp_qps-ploc.xlf. It will also generate the file&amp;nbsp;AppResources.cs in the Windows 8 application folder which you will have to include in the project after the first compilation of the Windows Phone application.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
To keep things even more similar to Windows Phone method I have added the class:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;/div&gt;
&lt;pre style="background-color: #f0f0f0; background-position: initial initial; background-repeat: initial initial; border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; using Localization;  
 namespace WindowsStoreApp  
 {  
   /// &amp;lt;summary&amp;gt;  
   /// Provides access to string resources.  
   /// &amp;lt;/summary&amp;gt;  
   &lt;/code&gt;&lt;code style="word-wrap: normal;"&gt;&lt;span style="color: red;"&gt;public class LocalizedStrings  
   {  
     private static AppResources _localizedResources = new AppResources();  
     public AppResources LocalizedResources { get { return _localizedResources; } }  
   }  &lt;/span&gt;&lt;/code&gt;&lt;code style="color: black; word-wrap: normal;"&gt;
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
and inside App.xaml added the resource:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: #f0f0f0; background-position: initial initial; background-repeat: initial initial; border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;Application.Resources&amp;gt;  
     &amp;lt;ResourceDictionary&amp;gt;  
      &lt;/code&gt;&lt;code style="word-wrap: normal;"&gt;&lt;span style="color: red;"&gt; &amp;lt;local:LocalizedStrings x:Key="LocalizedStrings"/&amp;gt; &lt;/span&gt;&lt;/code&gt;&lt;code style="color: black; word-wrap: normal;"&gt; 
       &amp;lt;ResourceDictionary.MergedDictionaries&amp;gt;  
         &amp;lt;!--   
           Styles that define common aspects of the platform look and feel  
           Required by Visual Studio project and item templates  
          --&amp;gt;  
         &amp;lt;ResourceDictionary Source="Common/StandardStyles.xaml"/&amp;gt;  
       &amp;lt;/ResourceDictionary.MergedDictionaries&amp;gt;  
     &amp;lt;/ResourceDictionary&amp;gt;  
   &amp;lt;/Application.Resources&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
This way you could easily bind in Windows Phone style and even reuse xaml and cs that you already have from your Windows Phone project:&lt;br /&gt;
Xaml Binding&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  &amp;lt;Button Content="{Binding Path=LocalizedResources.ButtonText, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="517,302,0,0" Height="100" Width="283" Click="Button_Click"/&amp;gt;  &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
and/or code-behind:&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; MessageDialog md = new MessageDialog(AppResources.ButtonMessage);  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
If you want to know more on how the conversion works look inside Program.cs. The steps I do is save the Resx to Resw and generate the class AppResources.cs. After that for every .xlf file in the Windows Phone Resources folder &amp;nbsp;I generate and write the corresponding Windows 8 .xlf file (there are some conversions involved). If you want you don't have to add the project&amp;nbsp;ConvertAppResources to your solution but only add the output .exe file to one of the projects and be very careful when you write the post-build action command.&lt;br /&gt;
&lt;br /&gt;
Once everything is&amp;nbsp;setup-ed you will only have to modify the Windows Phone resource strings and the Windows 8 ones will get updated. If you want to use specific Windows 8 resources you can add more resource files and use the ResourceLoader to load them - for example if you've added the file Errors.resw to the \strings\en folder of the Windows 8 project you will access it like this:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resourceLoader = new ResourceLoader("Errors");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.Scenario5TextBlock.Text = resourceLoader.GetString("InvalidOperation");&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be careful:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;before adding the post-build action verify that the localization of both Windows Phone and Windows 8 project work (independent from&amp;nbsp;each other)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;if the post-build command is not right the Windows 8 application will not get the updated resources when you compile the windows phone project&lt;/li&gt;
&lt;li&gt;the Window 8 project has to depend on the Windows Phone project this way you will be sure that Windows 8 gets the updated resources&lt;/li&gt;
&lt;li&gt;modify ONLY the Windows Phone .resx and .xlf files&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Some limitations of the Multilingaul App Toolkit:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;If you modify the Resx file and add a new resource you will have compile the project before you will see the new string in the .xlf files&lt;/li&gt;
&lt;li&gt;If you are&amp;nbsp;modifying the Resx file for a resource that you have already localized when you compile you will loose the localization and you will have to modify the .xlf files again. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Let me know if you have problems understanding or making it work (I don't think that I was really good at explaining the process but the hack works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://sdrv.ms/W2Zem5" target="_blank"&gt;SOURCE CODE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
NAMASTE&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/7923559659565972677/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/share-localization-files-between.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/7923559659565972677?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/7923559659565972677?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/share-localization-files-between.html" title="Share localization files between Windows Phone and Windows 8" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-tjNyJQyverQ/UT42TWJIViI/AAAAAAAADgE/1CVXjsyHwRs/s72-c/Project.PNG" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEACSHsyfip7ImA9WhBRF04.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-3469491448522851068</id><published>2013-03-08T09:04:00.000+01:00</published><updated>2013-03-08T09:52:49.596+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-08T09:52:49.596+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xlf" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="multilingual" /><category scheme="http://www.blogger.com/atom/ns#" term="wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="xliff" /><category scheme="http://www.blogger.com/atom/ns#" term="localization" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Easily localize your Windows Phone applications using the Multilingual App Toolkit</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; Great news for Windows Phone developers. Today Microsoft released an updated version of its&amp;nbsp;Multilingual App Toolkit for Visual Studio 2012 that supports also Windows Phone projects (the previous version only supported Windows Store projects). You can download the Visual Studio Extension from &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/jj569303.aspx" target="_blank"&gt;HERE&lt;/a&gt;. The extension itself is multilingual:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Nx84KViAebk/UTmDoGHO8LI/AAAAAAAADes/-uN5pha9h3s/s1600/Screen1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://1.bp.blogspot.com/-Nx84KViAebk/UTmDoGHO8LI/AAAAAAAADes/-uN5pha9h3s/s320/Screen1.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;So why is this extension so great in my opinion? As you probably know Windows Phone projects in Visual Studio already support multilingual localization for the&amp;nbsp;applications&amp;nbsp;based on .resw files. The Multilingual App Toolkit adds support for&amp;nbsp;localization industry-standard &lt;a href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xliff" target="_blank"&gt;XLIFF &lt;/a&gt;file format and also connects with the Microsoft Translator for quick translation suggestions.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; Lets have a quick looks on how it works. After you have installed the extension you will find a new menu entry inside the Visual Studio 2012 Tools menu with which you can enable or disable the Multilingual App Toolkit for your Windows Phone project.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-lm8HK77QP4o/UTmHuhIRrUI/AAAAAAAADfE/i39C26t3JEE/s1600/s2b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-lm8HK77QP4o/UTmHuhIRrUI/AAAAAAAADfE/i39C26t3JEE/s400/s2b.png" width="260" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;Once you have enabled the Multilingual App Toolkit Visual Studio added the XLIFF support and also generates the&amp;nbsp;AppResources.qps-ploc.xlf which is the&amp;nbsp;pseudo-language engine that helps identify translation issues during development.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;From this moment you will &lt;b&gt;USE ONLY&lt;/b&gt; the&amp;nbsp;&lt;b&gt;AppResources.resx&lt;/b&gt; file to add new resource strings and the extension (at&amp;nbsp;compilation) will add the missing strings to the corresponding .xlf file.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; To add new languages to your application you will only have to select the desired language as supported in the project Properties inside the Application section. Once a language is selected the extension automatically generates the corresponding Xlf file.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-h97YPy7u1iI/UTmJNYOZbnI/AAAAAAAADfQ/zzWeaF8w9Jk/s1600/s4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://4.bp.blogspot.com/-h97YPy7u1iI/UTmJNYOZbnI/AAAAAAAADfQ/zzWeaF8w9Jk/s640/s4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; You can then double click on the xlf file and Visual Studio will open the Multilingual Editor that enablesyou to edit the translation. If you add new strings to your AppResources.resx file remember to compile the project before opening the .xlf file or you will not see the newly added strings.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-5IqF6N7TYLo/UTmKcwCQEKI/AAAAAAAADfg/B2_mm9O_sWM/s1600/s5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://1.bp.blogspot.com/-5IqF6N7TYLo/UTmKcwCQEKI/AAAAAAAADfg/B2_mm9O_sWM/s320/s5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp; Now with these 3-4 easy simple steps we have localized our application. You can use the the Microsoft Translator in order to have some suggestions but you should always double-check the translation in order to avoid strange translations and situations ("My Application" in italian is translated as "La mia domanda" which actually means My question).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-nJCmEE0hkqs/UTmS4C79yDI/AAAAAAAADf0/NZmXMFOuFkM/s1600/s6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-nJCmEE0hkqs/UTmS4C79yDI/AAAAAAAADf0/NZmXMFOuFkM/s320/s6.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp; If you are building a test application remember to add the binding to the resource strings inside your .xaml and .cs files ({Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle} for Xaml or AppResources.value for .cs &amp;nbsp;)&lt;br /&gt;
&amp;nbsp;Some words about the AppResources.qps-ploc.xlf pseudo language file.&amp;nbsp;&lt;span style="text-align: justify;"&gt;Pseudo Language is an artificial modification of the software product intended to simulate real language localization. The pseudo language can be used to detect potential localizability issues or bugs early in the project cycle, before the actual localization starts. For more details about localizability testing with Pseudo Language see&lt;/span&gt;&lt;a href="http://go.microsoft.com/fwlink/p/?LinkId=258226" style="text-align: justify;" target="_blank"&gt;&amp;nbsp;Localizability Testing&lt;/a&gt;&lt;span style="text-align: justify;"&gt;. Inside Visual Studio if you right click on the Pseudo Language file you can select the Generate pseudo translations.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="text-align: justify;"&gt;In order to test it you will have to set the&amp;nbsp;&lt;/span&gt;qps-ploc culture for the Application UI. Just add these 3 lines to your Application constructor (but remember to take them out when you don't need them anymore):&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  public App()  
     {  
       var ci = new System.Globalization.CultureInfo("qps-ploc");  
       Thread.CurrentThread.CurrentCulture = ci;  
       Thread.CurrentThread.CurrentUICulture = ci;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;More details on how to use the Multilingual App Toolkit can be found&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/jj569303.aspx" target="_blank"&gt;HERE&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;It is really great that Microsoft is migrating the localization of the apps to an open standard. I will get back to this subject with a post on how to share the same xlf files between windows phone and windows 8 projects)&lt;br /&gt;
&lt;br /&gt;
NAMASTE</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/3469491448522851068/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/multilingual-app-toolkit-for-windows.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3469491448522851068?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3469491448522851068?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/03/multilingual-app-toolkit-for-windows.html" title="Easily localize your Windows Phone applications using the Multilingual App Toolkit" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Nx84KViAebk/UTmDoGHO8LI/AAAAAAAADes/-uN5pha9h3s/s72-c/Screen1.PNG" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;D08DQ3s5eSp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-8997762838591542344</id><published>2013-02-20T17:05:00.001+01:00</published><updated>2013-05-17T09:31:12.521+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:31:12.521+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="touch" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="developers" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><category scheme="http://www.blogger.com/atom/ns#" term="multi-touch" /><category scheme="http://www.blogger.com/atom/ns#" term="controls" /><category scheme="http://www.blogger.com/atom/ns#" term="button" /><title>How to build a multi-touch control for Windows Phone</title><content type="html">&amp;nbsp; &amp;nbsp; &amp;nbsp;What I intend
for multi-touch? Windows Phone is already a multi-touch device but for some
reason (I guess it is legacy of Silverlight) the standard Xaml controls don’t
have a real multi-touch behavior. Real multi-touch means that I should be able
to interact with two different objects at the same time with multiple fingers. What
happens now for the XAML standard controls is that once a control start receiving
touch events (ManipulationStarted, ManipulationEnded, ManipulationDelta) all
the other controls will not receive touch events. The easiest test to do is add
a standard button on the page, put one finger on the screen outside the button
and try to press the button with another finger. You will see that the button
does not respond to your commands. For Xaml applications this might not be a
problem, but for games it becomes one. Xaml (I mean Xaml+C# or XAML+VB.NET) is fast
to develop easy games.&lt;br /&gt;
&lt;div class="MsoNormal" style="text-align: justify; text-indent: .5in;"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-align: justify; text-indent: .5in;"&gt;
The solution
would be to build your own control and use &lt;b&gt;Touch.FrameReported&lt;/b&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt; line-height: 107%;"&gt;&amp;nbsp;&lt;/span&gt;to
“drive” it. In this sample I will build a multi-touch button. I will call it
ButtonEx (some of you remember OpenNETCF &lt;span style="font-family: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-char-type: symbol; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-symbol-font-family: Wingdings;"&gt;J&lt;/span&gt;
?) and I will just add three events to it:&amp;nbsp;&lt;b&gt;TouchDown&lt;/b&gt;, &lt;b&gt;TouchUpInside&lt;/b&gt;, &lt;b&gt;TouchUpOutSide&lt;/b&gt;&amp;nbsp;(iOs
MonoTouch event names). With this three events I should have better control
(Click in reality is a TouchUpInside&amp;nbsp;event) .&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-align: justify; text-indent: .5in;"&gt;
So I've created a
new Windows Phone Class Library called ControlsEx and I added the control
ButtonEx derived from ContentControl. I copied the standard style of the Button
control (you can easily generate it from a standard button using Blend and Edit
Copy command on the Button Template). I've  then  added the style to the /Themes/generic.xaml
file inside our project. &amp;nbsp;When I create
the control I will subscribe Loaded and Unloaded events as I want to start
receiving Touch events when the control loads and unsubscribe the Touch events
when the control gets unloaded.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  public ButtonEx()  
     {  
       DefaultStyleKey = typeof(ButtonEx);  
       this.Loaded += ButtonEx_Loaded;  
       this.Unloaded += ButtonEx_Unloaded;  
       IsEnabledChanged += ButtonEx_IsEnabledChanged;  
       IsPressed = false;  
     }  
     void ButtonEx_Loaded(object sender, RoutedEventArgs e)  
     {  
       Touch.FrameReported += Touch_FrameReported;  
     }  
     void ButtonEx_Unloaded(object sender, RoutedEventArgs e)  
     {  
       Touch.FrameReported -= Touch_FrameReported;  
     }  
&lt;/code&gt;&lt;/pre&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Now everything we need “happens”
inside the Touch_FrameReported&amp;nbsp; method. For my button I  am interested to
trace only one finger(using its id) from &lt;b&gt;TouchAction.Down&lt;/b&gt; until&lt;b&gt; TouchAction.Up&lt;/b&gt;. Once the first finger is down on the surface of my control I memorize
the id and track it’s actions till it leaves the screen. Depending of the control that you are building you
might have to take in consideration multiple fingers. One thing that is pretty
important when starting to track a finger is to see if your control is in front
or not (imagine an MessageBox over your controls and when you press the Ok
button you will also press the button which is in the back). To resolve this
issue I’ve used &lt;b&gt;TouchDevice.DirectlyOver&lt;/b&gt;&amp;nbsp;property of the TouchPoint and the
VisualTreeHelper to see if the UIElement returned by DirectlyOver is a member
of my control or not. &lt;/div&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  bool IsControlChild(DependencyObject element)  
     {  
       DependencyObject parent = element;  
       while ((parent != this) &amp;amp;&amp;amp; (parent != null))  
         parent=VisualTreeHelper.GetParent(parent);  
       if (parent == this)  
         return true;  
       else  
         return false;  
     }  
&lt;/code&gt;&lt;/pre&gt;
Here is the method Touch_FrameReported
method:&lt;o:p&gt;&lt;/o:p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; void Touch_FrameReported(object sender, TouchFrameEventArgs e)  
     {  
       if (Visibility == Visibility.Collapsed)  
         return;  
       TouchPointCollection pointCollection = e.GetTouchPoints(this);  
       for (int i = 0; i &amp;lt; pointCollection.Count; i++)  
       {  
         if (idPointer == -1)  
         {  
           if (IsEnabled&amp;amp;&amp;amp;(Visibility==Visibility.Visible) &amp;amp;&amp;amp; (pointCollection[i].Action == TouchAction.Down) &amp;amp;&amp;amp; IsControlChild(pointCollection[i].TouchDevice.DirectlyOver))  
           {  
             //start tracing this finger  
             idPointer = pointCollection[i].TouchDevice.Id;  
             IsPressed = true;  
             VisualStateManager.GoToState(this,"Pressed", true);  
             if (TouchDown != null)  
               TouchDown(this, pointCollection[i].Position);  
           }  
         }  
         else if ((pointCollection[i].TouchDevice.Id == idPointer) &amp;amp;&amp;amp; (pointCollection[i].Action == TouchAction.Up))  
         {  
           idPointer =-1;  
           IsPressed = false;  
           UpdateIsEnabledVisualState();  
           if ((pointCollection[i].Position.X &amp;gt; 0 &amp;amp;&amp;amp; pointCollection[i].Position.X &amp;lt; ActualWidth) &amp;amp;&amp;amp; (pointCollection[i].Position.Y &amp;gt; 0 &amp;amp;&amp;amp; pointCollection[i].Position.Y &amp;lt; ActualHeight))  
           {  
             if (TouchUpInside != null)  
               TouchUpInside(this, pointCollection[i].Position);  
           }  
           else  
           {  
             if (TouchUpOutside != null)  
               TouchUpOutside(this, pointCollection[i].Position);  
           }  
         }  
       }   
     }  
&lt;/code&gt;&lt;/pre&gt;
&amp;nbsp; &amp;nbsp; For the button control we don’t
have to trace the movements of the finger until Up action but we might need to if we are writing a Slider control  for example. The sample application that you will find in the source code uses 2
ButtonEx controls and a standard Button control. The ButtonEx should always
respond to your commands (fingers).&lt;o:p&gt;&lt;/o:p&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-VVAhhOb7O9I/USVCN6_5JkI/AAAAAAAADec/CTAqSl6r1_o/s1600/ButtonEx.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-VVAhhOb7O9I/USVCN6_5JkI/AAAAAAAADec/CTAqSl6r1_o/s320/ButtonEx.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&amp;nbsp; &amp;nbsp; I’ve
also used this approach to develop an multi-touch  XAML game for flying an Bluetooth
BeeWi helicopter. I will also have a session on the 27&lt;sup&gt;th&lt;/sup&gt; February at
&lt;a href="http://www.communitydays.it/events/communitydays-2013/wp803/" target="_blank"&gt;Community Days&lt;/a&gt; here in Italy where I will present a session on developing a
game for Windows Phone and I will use this game as a starting point. This application has multi-touch buttons, slider and joystick control.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-qkJklbdoaxM/USSABPzCOaI/AAAAAAAADeM/7DKFtQqKF8k/s1600/HelicopterFinal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/-qkJklbdoaxM/USSABPzCOaI/AAAAAAAADeM/7DKFtQqKF8k/s320/HelicopterFinal.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Also
have to thank the TTT (Train The Trainer) program which awarded me a beautiful
Sphero for  my multi-touch controls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
As
always don’t hesitate to contact me if you have further questions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;
&lt;a href="http://sdrv.ms/WWALhF" target="_blank"&gt;SOURCE CODE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
NAMASTE&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/8997762838591542344/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/02/create-multi-touch-control-for-windows.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/8997762838591542344?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/8997762838591542344?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/02/create-multi-touch-control-for-windows.html" title="How to build a multi-touch control for Windows Phone" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-VVAhhOb7O9I/USVCN6_5JkI/AAAAAAAADec/CTAqSl6r1_o/s72-c/ButtonEx.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0cBR3Y4cSp7ImA9WhBTEUk.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-995335030090107957</id><published>2013-02-06T09:57:00.001+01:00</published><updated>2013-02-06T09:57:36.839+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-06T09:57:36.839+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="7.8" /><category scheme="http://www.blogger.com/atom/ns#" term="mazaa" /><category scheme="http://www.blogger.com/atom/ns#" term="updatewp" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC" /><category scheme="http://www.blogger.com/atom/ns#" term="cab" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Update the HTC Mazaa to Windows Phone 7.8</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&lt;a href="http://pdadb.net/index.php?m=specs&amp;amp;id=3062&amp;amp;c=htc_mazaa"&gt;HTC Mazaa&lt;/a&gt; was the first ever Windows Phone to run the 7.5 build of the OS. It is a really great development device (as performance it is somewhere between the gen 1 devices and the gen 2 devices) but unfortunately it haven't received any updates since the RTM release build&amp;nbsp;7.10.7720.68. If you still have RTM build on it you will probably see that you are not even able to access the Store anymore. The bad news is that it will not receive any automatic updates but if you want you can still manually update it to the Windows Phone 7.8 version on it.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;To manually update the device you will need :&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #222225; font-family: Arial, Helvetica, sans-serif; font-size: 13px; padding-left: 20px; text-align: start;"&gt;
&lt;li style="margin-left: 2em;"&gt;Zune 4.8 final (build 4.8.2345.0)&lt;/li&gt;
&lt;li style="margin-left: 2em;"&gt;Download the&amp;nbsp;&lt;span style="color: red;"&gt;WP7_update_tool.rar&lt;/span&gt;&amp;nbsp;and install the UpdateWP package for your platform (x86 or x64). This is version 4.8.2134.0. You can download the Update tool from this&lt;a href="http://forum.xda-developers.com/showthread.php?t=1306415" target="_blank"&gt; post&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style="text-align: justify;"&gt;&amp;nbsp; &amp;nbsp;What you will need to do is simulate the steps that Zune does when it updates your phone. At each step there are a number of cab that you can send to the phone at the same time. &lt;b&gt;BACKUP YOUR PHONE&lt;/b&gt;&amp;nbsp;before updating. This tutorial starts the update from the version 7.10.7720.68 up to&amp;nbsp;&lt;/span&gt;7.10.8858.136. If you have a heigher version than&amp;nbsp;&lt;span style="text-align: justify;"&gt;7.10.7720.68 just start from the step of the version you have. We assume that your Mazaa has the following language packs installed (if you have less just remove the corresponding cabs from each step):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="text-align: justify;"&gt;&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;German (0407)&lt;/li&gt;
&lt;li&gt;English - United States (0409)&lt;/li&gt;
&lt;li&gt;French (040C)&lt;/li&gt;
&lt;li&gt;Italian (0410)&lt;/li&gt;
&lt;li&gt;English - United Kingdom (0809)&lt;/li&gt;
&lt;li&gt;Spanish (0C0A)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp;At each step just run:&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&amp;nbsp;updatewp /iu [concatenate cab's from step here with space between]&lt;/b&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="text-align: justify;"&gt;Here are the cabs for each step:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="text-align: justify;"&gt;&lt;div&gt;
&lt;b&gt;1) 7.10.7720.68-7.10.7740.16&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/10/diff-7.10.7720.68-7.10.7740.16-armv7-retail-microsoft.pks_2cb1bfdd82133914239b8ee1a78e61e9000d124a.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7720.68-7.10.7740.16-armv7-retail-microsoft.pks_2cb1bfdd82133914239b8ee1a78e61e9000d124a.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2) 7.10.7740.16-7.10.8107.79&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/12/diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.pks_c9b7f3bc5bb340ba30473b566b4557de0cf3322e.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.pks_c9b7f3bc5bb340ba30473b566b4557de0cf3322e.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/12/diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_040c.pks_2d74e8c5f6a835f1fe4c62b488c96ac2d7f01c29.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_040c.pks_2d74e8c5f6a835f1fe4c62b488c96ac2d7f01c29.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/12/diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0409.pks_bfd9c047a7b27c28208c8a717f8d7511fb2586f1.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0409.pks_bfd9c047a7b27c28208c8a717f8d7511fb2586f1.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/12/diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0410.pks_9ecf9b052b6cc3161462e998dac8204a0f754556.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0410.pks_9ecf9b052b6cc3161462e998dac8204a0f754556.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/12/diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0809.pks_2666da3127f526b23b492f293983ccce1d28f375.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0809.pks_2666da3127f526b23b492f293983ccce1d28f375.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/12/diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0c0a.pks_97df86b81a40df06bb2b15c6739e2ee772e53bbf.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0c0a.pks_97df86b81a40df06bb2b15c6739e2ee772e53bbf.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2011/12/diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0407.pks_b50019ef50d52090d408d854c0708ddbf520706c.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-7.10.7740.16-7.10.8107.79-armv7-retail-microsoft.lang_0407.pks_b50019ef50d52090d408d854c0708ddbf520706c.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3) 7.10.8107.79-7.10.8112.7&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft-pluspkr.pks_d500a10eeb11fb6c1913adac4759d67185474d3e.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft-pluspkr.pks_d500a10eeb11fb6c1913adac4759d67185474d3e.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/03/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.dpi_262.pks_24bb20423e86130365686c1796577d4b22343be9.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.dpi_262.pks_24bb20423e86130365686c1796577d4b22343be9.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/03/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0407.pks_d89120e9719b4791ecf5f5581730952790d85505.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0407.pks_d89120e9719b4791ecf5f5581730952790d85505.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/03/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0409.pks_ae068921fd637ba2e3e268b28e6ca1c9f3a9c11f.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0409.pks_ae068921fd637ba2e3e268b28e6ca1c9f3a9c11f.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/03/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_040c.pks_0e4fe7facb5bd169c742f7811f10e3caf4110e9a.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_040c.pks_0e4fe7facb5bd169c742f7811f10e3caf4110e9a.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/03/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0410.pks_9b7013b1a94c12121b92964f6a0d12425986c195.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0410.pks_9b7013b1a94c12121b92964f6a0d12425986c195.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/03/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0809.pks_80abdd4c9c9f3df25432fe4465e23fc3048012cb.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0809.pks_80abdd4c9c9f3df25432fe4465e23fc3048012cb.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/03/diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0c0a.pks_69aaa5b4911d99c4669344254bfa7ba5f8cd0408.cab"&gt;diff-7.10.8107.79-7.10.8112.7-armv7-retail-microsoft.lang_0c0a.pks_69aaa5b4911d99c4669344254bfa7ba5f8cd0408.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;4) 7.10.8112.7-7.10.8773.98&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.pks_113460c78ac6233e3bb776ceddb6ac94e98c4221.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.pks_113460c78ac6233e3bb776ceddb6ac94e98c4221.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.dpi_262.pks_4dbf7302a7b3da01eeafbcfbf1b9b75e6f6de15e.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.dpi_262.pks_4dbf7302a7b3da01eeafbcfbf1b9b75e6f6de15e.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0407.pks_e1a132dbad341e61c902f697bbde9d2ebb98a08f.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0407.pks_e1a132dbad341e61c902f697bbde9d2ebb98a08f.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0409.pks_3e940c840ee4815422610bb6da8f28ac327767cc.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0409.pks_3e940c840ee4815422610bb6da8f28ac327767cc.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_040c.pks_7cbfbdf414fcea12530080f94cb7c29fea74c54a.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_040c.pks_7cbfbdf414fcea12530080f94cb7c29fea74c54a.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0410.pks_926fdca3ca7df7ac163d22b15ab18a716eef0042.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0410.pks_926fdca3ca7df7ac163d22b15ab18a716eef0042.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0809.pks_04fcbfbd2d6f419b7f0b854da77f6ce13a16698d.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0809.pks_04fcbfbd2d6f419b7f0b854da77f6ce13a16698d.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0c0a.pks_09cab7985d025414c9923461e0a0729d95ec6737.cab"&gt;diff-7.10.8112.7-7.10.8773.98-armv7-retail-microsoft.lang_0c0a.pks_09cab7985d025414c9923461e0a0729d95ec6737.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;5) 7.10.8773.98-7.10.8779.8&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.pks_b9598a098a3a4e902d043cef778a79ff3e6b0869.cab"&gt;diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.pks_b9598a098a3a4e902d043cef778a79ff3e6b0869.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0407.pks_a325cee9b2e502ee7cba73ad3b5276e23972080d.cab"&gt;diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0407.pks_a325cee9b2e502ee7cba73ad3b5276e23972080d.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0409.pks_4d87f62a11c7898a516df7563a9333e1082fad57.cab"&gt;diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0409.pks_4d87f62a11c7898a516df7563a9333e1082fad57.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_040c.pks_b345d08ab6583dbf9e1d132533ec68e2af411e0f.cab"&gt;diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_040c.pks_b345d08ab6583dbf9e1d132533ec68e2af411e0f.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0410.pks_1645c0de81f21046e42bad6feadcc50a621bb025.cab"&gt;diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0410.pks_1645c0de81f21046e42bad6feadcc50a621bb025.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0809.pks_255010547a84862a8621b8819aa202e0d2aa9b0d.cab"&gt;diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0809.pks_255010547a84862a8621b8819aa202e0d2aa9b0d.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/05/diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0c0a.pks_3a0b5492a3b3bbbdbb0aa57f66faaa14c88df184.cab"&gt;diff-7.10.8773.98-7.10.8779.8-armv7-retail-microsoft.lang_0c0a.pks_3a0b5492a3b3bbbdbb0aa57f66faaa14c88df184.cab&lt;/a&gt; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;6) 7.10.8779.8-7.10.8783.12&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/10/diff-iucorefixed-7.10.8779.8-7.10.8783.12-armv7-retail-microsoft.pks_8a50b92b21951c7baf9f3600cea8c77e0918021f.cab"&gt;&lt;span style="font-size: x-small;"&gt;diff-iucorefixed-7.10.8779.8-7.10.8783.12-armv7-retail-microsoft.pks_8a50b92b21951c7baf9f3600cea8c77e0918021f.cab&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;7) 7.10.8783.12-7.10.8858.136&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.pks_d6fb2a271eed6a5d1187b17aba60806753d0ffce.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.pks_d6fb2a271eed6a5d1187b17aba60806753d0ffce.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.dpi_262.pks_39b9cc884c90d83c0df50ed5623166e9257d1162.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.dpi_262.pks_39b9cc884c90d83c0df50ed5623166e9257d1162.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0407.pks_91c88df3371a97e95fddec6d490f184d79069b92.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0407.pks_91c88df3371a97e95fddec6d490f184d79069b92.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0409.pks_653898f93f54d951992766d317db1b846ca71e36.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0409.pks_653898f93f54d951992766d317db1b846ca71e36.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_040c.pks_b34792a900bc0aeafeb0a2aaa666b490e44eb1ca.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_040c.pks_b34792a900bc0aeafeb0a2aaa666b490e44eb1ca.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0410.pks_01ab9c5b927d1fdfb5de71774056a146697065ac.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0410.pks_01ab9c5b927d1fdfb5de71774056a146697065ac.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0809.pks_45cef4457233690e536db6b7821af0a39b8aeb98.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0809.pks_45cef4457233690e536db6b7821af0a39b8aeb98.cab&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://download.windowsupdate.com/msdownload/update/software/dflt/2012/11/diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0c0a.pks_29c153eae13ce7184ac8abc63eb6345694e9fce0.cab"&gt;diff-7.10.8783.12-7.10.8858.136-armv7-retail-microsoft.lang_0c0a.pks_29c153eae13ce7184ac8abc63eb6345694e9fce0.cab&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you have problems updating please let me know.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BTW I am not responsible if you BRICK your phone :) . Here is mine updated:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-webJTd2uC98/URIagCBuKLI/AAAAAAAADd8/FVnQ4QhVMOg/s1600/WP_20130131_001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-webJTd2uC98/URIagCBuKLI/AAAAAAAADd8/FVnQ4QhVMOg/s320/WP_20130131_001.jpg" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
NAMASTE&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/995335030090107957/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/02/update-htc-mazaa-to-windows-phone-78.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/995335030090107957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/995335030090107957?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/02/update-htc-mazaa-to-windows-phone-78.html" title="Update the HTC Mazaa to Windows Phone 7.8" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-webJTd2uC98/URIagCBuKLI/AAAAAAAADd8/FVnQ4QhVMOg/s72-c/WP_20130131_001.jpg" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;C0MHQno4eip7ImA9WhBTEEw.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-5549071608586883499</id><published>2013-02-04T21:57:00.000+01:00</published><updated>2013-02-04T21:57:13.432+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-04T21:57:13.432+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tfs" /><category scheme="http://www.blogger.com/atom/ns#" term="xamarin" /><category scheme="http://www.blogger.com/atom/ns#" term="mono for android" /><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="Monodevelop" /><category scheme="http://www.blogger.com/atom/ns#" term="Xcode" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><category scheme="http://www.blogger.com/atom/ns#" term="Mono" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="Monotouch" /><category scheme="http://www.blogger.com/atom/ns#" term="source control" /><title>How to use Team Foundation Service with MonoDevelop</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; As you probably know&amp;nbsp;&lt;a href="http://tfs.visualstudio.com/en-us/home/features/feature-tour/"&gt;Team Foundation Service&lt;/a&gt;&amp;nbsp;team announced a few days ago full support for &lt;a href="http://tfs.visualstudio.com/en-us/home/news/#git%20support"&gt;Git&lt;/a&gt; protocol. This was &lt;b&gt;AWESOME&lt;/b&gt; news for our small company that needed a FREE source control solution for our &lt;a href="http://xamarin.com/monotouch"&gt;MonoTouch&lt;/a&gt; and &lt;a href="http://xamarin.com/monoforandroid"&gt;Mono for Android&lt;/a&gt; projects. We were already using &lt;a href="http://visualstudio.com/"&gt;visualstudio.com&lt;/a&gt;&amp;nbsp;for our Windows Phone and Windows 8 projects and previously to Git support in TFS we had an in-house svn server but I was not really happy with it. The thing it took me most was to understand what is the Git endpoint address than everything is standard.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; Here is a quick guide on how to create and then use a TFS Git repository with MonoDevelop:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;First you need to create a new Team Project with Git support&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-3RgHu9MApqc/URAXDA1UHpI/AAAAAAAADdE/XmNeiBvw_Hc/s1600/New+Team+Project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://4.bp.blogspot.com/-3RgHu9MApqc/URAXDA1UHpI/AAAAAAAADdE/XmNeiBvw_Hc/s400/New+Team+Project.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Once the project is created press the "Navigate to projec"t button.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
2. Go to Code explorer and you will be able to see the the Git endpoint address. It might not show the git endpoint the first time but if you navigate away and try again you will see it.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-KBxjiuK0QXg/URAY77HQymI/AAAAAAAADdM/djXiD5-7mcQ/s1600/Endpoint.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="136" src="http://2.bp.blogspot.com/-KBxjiuK0QXg/URAY77HQymI/AAAAAAAADdM/djXiD5-7mcQ/s400/Endpoint.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
3. Use the Git endpoint address to register a new Repository in MonoDevelop&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-fiwnYd7hDAE/URAaEgFFSWI/AAAAAAAADdU/SU7njOUF2m8/s1600/RepositoryConfig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://1.bp.blogspot.com/-fiwnYd7hDAE/URAaEgFFSWI/AAAAAAAADdU/SU7njOUF2m8/s320/RepositoryConfig.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
4. Then just publish your solution using the registered repository. You can see all your files in Code Explorer and also all the commits:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-B9HGJRc9WW8/URAbXCvQwLI/AAAAAAAADdc/Eavq4WbJTW0/s1600/Commits.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="78" src="http://1.bp.blogspot.com/-B9HGJRc9WW8/URAbXCvQwLI/AAAAAAAADdc/Eavq4WbJTW0/s400/Commits.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-qUXBL5TUEQs/URAbXaKZtiI/AAAAAAAADdg/c304hvyNXCA/s1600/Content.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="91" src="http://1.bp.blogspot.com/-qUXBL5TUEQs/URAbXaKZtiI/AAAAAAAADdg/c304hvyNXCA/s400/Content.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
Tip: If you want to use a more simple user name than you full live id you can enable your Alternate Credentials on the User Profile page&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-bwMYL6aHBUg/URAcVAaxycI/AAAAAAAADds/cNJa-KeotVc/s1600/UserProfile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://2.bp.blogspot.com/-bwMYL6aHBUg/URAcVAaxycI/AAAAAAAADds/cNJa-KeotVc/s320/UserProfile.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
The same Git endpoint can be also used to "Connect to a repository" in Xcode for your Obejctive C projects.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
Thank you TFS TEAM for this great feature.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
NAMASTE&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/5549071608586883499/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/02/how-to-use-team-foundation-service-with.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5549071608586883499?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5549071608586883499?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/02/how-to-use-team-foundation-service-with.html" title="How to use Team Foundation Service with MonoDevelop" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-3RgHu9MApqc/URAXDA1UHpI/AAAAAAAADdE/XmNeiBvw_Hc/s72-c/New+Team+Project.png" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;D08AQnk-fSp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-5589817315449435481</id><published>2013-01-02T16:40:00.001+01:00</published><updated>2013-05-17T09:30:43.755+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:30:43.755+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 8" /><category scheme="http://www.blogger.com/atom/ns#" term="state" /><category scheme="http://www.blogger.com/atom/ns#" term="emulator" /><category scheme="http://www.blogger.com/atom/ns#" term="save" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Saving the Windows Phone 8 Emulator State</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; Saving the emulator state between runs was one of the feature needed for the Windows Phone emulator, but till now it is not officially supported. It even makes more sense now when the Windows Phone 8 emulator is a full working operating system and not a trimmed one like Windows Phone 7/7.5 was. You could configure an email account, personalize the start screen, install some applications, install certificates or even save the state of an application that requires a lot of data to synchronize before the actual debugging and have everything ready the next time you start the emulator.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;Today I was trying to run the Windows Phone 8 emulator on a Parallels 8 machine using this &lt;a href="http://kb.parallels.com/en/115211"&gt;post&lt;/a&gt;&amp;nbsp;because I hate Windows 8 performance in Bootcamp (the disk access is crappy and the UEFI mode still needs drivers for&amp;nbsp;sound, video and a way to enable Hyper-V).&amp;nbsp;I observed that the first time you run an Windows Phone emulator it took more than 40 seconds to start. The reason is that the SDK creates a new Virtual Machine in Hyper-V and saves a "clean" snapshot of it.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-yhx6X-7vZCk/UOQ9yh48m2I/AAAAAAAADbo/o4m5VIPhIGg/s1600/Hyper-V.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="165" src="http://4.bp.blogspot.com/-yhx6X-7vZCk/UOQ9yh48m2I/AAAAAAAADbo/o4m5VIPhIGg/s400/Hyper-V.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;On every subsequent run of that emulator the XDE automatically starts the virtual machine and immediately applies the snapshot (or starts the virtual machine from the snapshot directly). What caught my attention was the name of the snapshot for each virtual machine:&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Emulator 720P -&amp;nbsp;snapshot.720x1280.1024&lt;/li&gt;
&lt;li&gt;Emulator WVGA 512MB -&amp;nbsp;snapshot.480x800.512&lt;/li&gt;
&lt;li&gt;Emulator WVGA -&amp;nbsp;snapshot.480x800.1024&lt;/li&gt;
&lt;li&gt;Emulator WXGA -&amp;nbsp;snapshot.768x1280.1024&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;I tried and messed up the names and observed that XDE, if it doesn't see a certain Snapshot, it starts the Virtual Machine and creates a new snapshot with the required name.&amp;nbsp;So in order to save the state it would be&amp;nbsp;enough to alter/change the snapshot XDE uses to start the virtual machine.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; First we need to start the emulator we want to personalize (in this post i will mess up the 512 WVGA emulator). This can be done in two ways:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;From Visual Studio by running a program on that emulator or from Application Deployment (the emulator is easy to personalize because you can zoom the content and you have the hardware buttons but will require a subsequent reset of the Virtual Machine from Hyper-V)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;From Hyper-V manager by starting the&amp;nbsp;Emulator WVGA 512MB virtual machine and applying the saved snapshot for a fast start. After the machine starts you will have to connect to it:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-rACx0rmyuuc/UORDXy-GP5I/AAAAAAAADb4/5LXyslQI4Xw/s1600/Hyper-V+2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://4.bp.blogspot.com/-rACx0rmyuuc/UORDXy-GP5I/AAAAAAAADb4/5LXyslQI4Xw/s400/Hyper-V+2.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&amp;nbsp; &amp;nbsp; Once connected to the emulator/virtual machine you can personalize/modify the way you want it to be. If you connected using&amp;nbsp;Hyper-V these keyboard shortcuts will prove helpful (they also work in the emulator):&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;F1&lt;/b&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;- the same as pressing the back button&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;b&gt;F2&amp;nbsp;&lt;/b&gt;– the same as pressing the home button&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PageUp&lt;/b&gt; &amp;nbsp;- enables physical keyboard and minimizes the software keyboard&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PageDown &lt;/b&gt;– disables physical keyboard and maximizes the software keyboard&lt;/li&gt;
&lt;li&gt;&lt;b&gt;F9&lt;/b&gt; - volume up&lt;/li&gt;
&lt;li&gt;&lt;b&gt;F10 &lt;/b&gt;- volume down&lt;/li&gt;
&lt;li&gt;&lt;b&gt;F7&lt;/b&gt; – invoke camera&lt;/li&gt;
&lt;li&gt;&lt;b&gt;F3 &lt;/b&gt;– invoke Bing search&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
If you want/need to install some xap's you can use Application Deployment with the Emulator.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
When you've reached the desired state&amp;nbsp;go to the Hyper-V manager, select the Virtual machine that you are personalizing and hit Snapshot. This will create a new Snapshot(save state for the emulator).&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-uoVj4ME-aYA/UORGdG4xaRI/AAAAAAAADcI/PRNOcZwmX_M/s1600/HyperV_3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="http://4.bp.blogspot.com/-uoVj4ME-aYA/UORGdG4xaRI/AAAAAAAADcI/PRNOcZwmX_M/s400/HyperV_3.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
If you've started the emulator from Visual Studio or Application Deployment App before you create the snapshot you will have to connect to the Virtual Machine from Hyper-V and from the menu Action select Reset (this will clean the ports used for debugging and the state you will save will be usable for Visual Studio and XDE).&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
After saving the new state the only thing you have to do is to rename the snapshot with the same name of the parent snapshot and delete the parent by right-clicking on it and select Delete Snapshot (DO NOT select Delete Snapshot Subtree).&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-mmpZVCpl-og/UORJ7ifAJDI/AAAAAAAADcY/T2J9luJM-R0/s1600/HyperV_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" src="http://4.bp.blogspot.com/-mmpZVCpl-og/UORJ7ifAJDI/AAAAAAAADcY/T2J9luJM-R0/s400/HyperV_4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You are now ready to go: &amp;nbsp;Turn Off the virtual machine from Hyper-V and try it from Visual Studio. Everything should work. If it doesn't it means that the state has some ports that Visual Studio uses still opened and in this case you will have to connect to the Virtual Machine from Hyper-V, Reset the machine from Action and save a new Snapshot.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
My personalized emulator looks like this:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-XtE_vMVULlA/UORLoWwPkJI/AAAAAAAADco/iPOV-Ilh6q8/s1600/Hyperv_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-XtE_vMVULlA/UORLoWwPkJI/AAAAAAAADco/iPOV-Ilh6q8/s400/Hyperv_6.png" width="221" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
If you want to get back to an "unaltered" state just delete the snapshot of the&amp;nbsp;corresponding&amp;nbsp;Virtual Machine from Hyper-V Manager.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Hope saving the emulator state will help you in some scenarios.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
NAMASTE!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/5589817315449435481/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/01/saving-windows-phone-8-emulator-state.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5589817315449435481?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5589817315449435481?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/01/saving-windows-phone-8-emulator-state.html" title="Saving the Windows Phone 8 Emulator State" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-yhx6X-7vZCk/UOQ9yh48m2I/AAAAAAAADbo/o4m5VIPhIGg/s72-c/Hyper-V.PNG" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;D08ESHw-eCp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-3233517103639202796</id><published>2013-01-01T17:36:00.001+01:00</published><updated>2013-05-17T09:30:09.250+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:30:09.250+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cpu" /><category scheme="http://www.blogger.com/atom/ns#" term="wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 8" /><category scheme="http://www.blogger.com/atom/ns#" term="IsProcessorFeaturePresent" /><category scheme="http://www.blogger.com/atom/ns#" term="native" /><category scheme="http://www.blogger.com/atom/ns#" term="GetNativeSystemInfo" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>GetNativeSystemInfo on Windows Phone 8</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; This post is related/continues my&amp;nbsp;&lt;a href="http://sviluppomobile.blogspot.it/2012/12/detect-cpu-architecture-on-windows-8.html"&gt;previous one&lt;/a&gt;. I have written a small sample that shows how to call the GetNativeSystemInfo and&amp;nbsp;IsProcessorFeaturePresent functions on Windows Phone 8 devices using a &amp;nbsp;C++&amp;nbsp;runtime component. For the moment I cannot think of a really good use for calling these functions because there are only two processors on the devices currently available. You could detect which of the two processors the device has and also its features.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp; Here is a screenshot of the sample running on my Nokia Lumia 920:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-xIM2z1VPEGo/UOMPI0qI1PI/AAAAAAAADbY/HGiGEbZW-XU/s1600/wp_ss_20130101_0001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-xIM2z1VPEGo/UOMPI0qI1PI/AAAAAAAADbY/HGiGEbZW-XU/s400/wp_ss_20130101_0001.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
As it is the first day of the new year I Wish you all a great 2013!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://skydrive.live.com/redir?resid=68F2640A052556E2!2407"&gt;SOURCE CODE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/3233517103639202796/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2013/01/getnativesysteminfo-on-windows-phone-8.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3233517103639202796?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/3233517103639202796?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2013/01/getnativesysteminfo-on-windows-phone-8.html" title="GetNativeSystemInfo on Windows Phone 8" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-xIM2z1VPEGo/UOMPI0qI1PI/AAAAAAAADbY/HGiGEbZW-XU/s72-c/wp_ss_20130101_0001.png" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CEEGR3w9eSp7ImA9WhNVGEQ.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-977493079837424612</id><published>2012-12-30T19:34:00.000+01:00</published><updated>2012-12-30T19:37:06.261+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-30T19:37:06.261+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cpu" /><category scheme="http://www.blogger.com/atom/ns#" term="win8" /><category scheme="http://www.blogger.com/atom/ns#" term="features" /><category scheme="http://www.blogger.com/atom/ns#" term="type" /><category scheme="http://www.blogger.com/atom/ns#" term="processor" /><category scheme="http://www.blogger.com/atom/ns#" term="IsProcessorFeaturePresent" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="GetNativeSystemInfo" /><category scheme="http://www.blogger.com/atom/ns#" term="winrt" /><title>Detect CPU architecture at runtime for Windows 8 Store Apps</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; If you are developing an application for the Windows 8 Store it is very important that you test it on an ARM device (Surface RT, Asus VivoTab RT, Dell XPS 10,etc.) before sending it into certification. You will probably have some bad surprises and not everything that was fast&amp;amp;fluid on your development machine will continue to be so on an ARM device (the list scroll&amp;nbsp;performance&amp;nbsp;reminds me of the first version of Windows Phone). So you will have to simplify the layouts, animations and in some cases even rewrite part of your code. &lt;a href="http://msdn.microsoft.com/en-us/library/dd987541.aspx"&gt;Parallel Programming&lt;/a&gt;&amp;nbsp;is your friend if you can use it (for &lt;a href="http://apps.microsoft.com/windows/en-us/app/kids-orchestra/770a5b20-a261-496b-b1d4-cbfaa574a4ea"&gt;Kids' Orchestra&lt;/a&gt;&amp;nbsp;I had the big problem that generating 100ms of sound output took more then 100ms so after 2 days of trying to optimize the C# source code I realized that I only had to use the Parallel.For and everything started working).&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;Due to performance differences you might need to split the user experience/code on different architectures (like disabling some animations on ARM). If this is the case it becomes very important to know the processor architecture on which your application runs. One solution would be to create 3 different packages of your applications and use the conditional compilation to differentiate between what happens on each architecture. If you still want to use only one package (&lt;b&gt;Any CPU&lt;/b&gt;) it is enough&amp;nbsp;to have a method that returns the processor architecture.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; The bad news is that WinRT framework doesn't have any method/property that returns the processor architecture&amp;nbsp;&amp;nbsp;(at least I don't know it). The good news is that you can still use&amp;nbsp;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms724340(v=vs.85).aspx"&gt;GetNativeSystemInfo&lt;/a&gt;&lt;/b&gt;&amp;nbsp;as it is an api supported for Windows Store apps (it is even supported for Windows Phone 8 apps):&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-I0IkxlrPE0g/UOB-cywwkzI/AAAAAAAADa4/QuN_RUeJTh8/s1600/NativeSystemInfo.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="http://2.bp.blogspot.com/-I0IkxlrPE0g/UOB-cywwkzI/AAAAAAAADa4/QuN_RUeJTh8/s400/NativeSystemInfo.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; For Windows Store apps you can use two&amp;nbsp;approaches&amp;nbsp;to call this api:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
1. Use P/Invoke -this is the one I opted for;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
2. Create a Windows Runtime Component in C++ that you can then call from managed code - this is the approach you will have to use if you need to call this function on Windows Phone 8.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;What I did is to create a public class, which I called CPU, and has one public static property&amp;nbsp;&lt;b&gt;NativeInfo &lt;/b&gt;that returns an &lt;b&gt;SystemInfo &lt;/b&gt;object:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; public class SystemInfo  
   {  
     public ProcessorArchitecture ProcessorArchitecture;  
     public ushort ProcessorArchitectureId;  
     public ProcessorType ProcessorType;  
     public uint ProcessorTypeId;  
     public uint NumberOfProcessors;  
     public ushort ProcessorLevel;  
     public ushort ProcessorRevision;  
     public uint AllocationGranularity;  
   };  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
and a public method&amp;nbsp;&lt;b&gt;IsProcessorFeaturePresent &lt;/b&gt;(invoking also a&amp;nbsp;supported Api for Windows Store applications)&amp;nbsp;which returns if a certain &lt;b&gt;ProcessorFeature &lt;/b&gt;feature is supported or not.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
I have also created a small sample that will give you a list with your processor details. Here is the result I got on &amp;nbsp;my Surface:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ZFRdzhQjdpQ/UOCD6SjPOVI/AAAAAAAADbI/bZ9WrTH9nys/s1600/ARM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-ZFRdzhQjdpQ/UOCD6SjPOVI/AAAAAAAADbI/bZ9WrTH9nys/s400/ARM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Hope you will find the class useful. Don't hesitate to contact me if you need further details.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
SOURCE CODE:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="https://skydrive.live.com/redir?resid=68F2640A052556E2!2397"&gt;CPU.cs&amp;nbsp;&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://skydrive.live.com/redir?resid=68F2640A052556E2!2398"&gt;Sample Project&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
NAMASTE!&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/977493079837424612/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2012/12/detect-cpu-architecture-on-windows-8.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/977493079837424612?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/977493079837424612?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2012/12/detect-cpu-architecture-on-windows-8.html" title="Detect CPU architecture at runtime for Windows 8 Store Apps" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-I0IkxlrPE0g/UOB-cywwkzI/AAAAAAAADa4/QuN_RUeJTh8/s72-c/NativeSystemInfo.PNG" height="72" width="72" /><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;D0ANRXYyeyp7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-650683822757425173</id><published>2012-12-26T11:33:00.001+01:00</published><updated>2013-05-17T09:29:54.893+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:29:54.893+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="audio" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="playback" /><category scheme="http://www.blogger.com/atom/ns#" term="xaudio2" /><category scheme="http://www.blogger.com/atom/ns#" term="monogame" /><category scheme="http://www.blogger.com/atom/ns#" term="wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="managed code" /><category scheme="http://www.blogger.com/atom/ns#" term="sound" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 8" /><category scheme="http://www.blogger.com/atom/ns#" term="sharpdx2" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="mix" /><title>C# XAudio2 Sound Playback for Windows Phone</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Let's begin with a small introduction to XAudio2:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XAudio2 is a low-level audio API. It provides a signal processing and mixing foundation for games that is similar to its predecessors, DirectSound and XAudio. XAudio2 is the replacement for both DirectSound and XAudio.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XAudio2 abstracts audio generation by separating sound data from "voice", allowing each voice to be filtered by programmable digital signal processing and effects processing functions. Voices can be "submixed" together into a single stream. There is always only one Mastering Voice that outputs the result using WASAPI.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-BksA4k9S1j4/UNqzysTra9I/AAAAAAAADaY/QbHPP0rRSBM/s1600/XAudio.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" src="http://3.bp.blogspot.com/-BksA4k9S1j4/UNqzysTra9I/AAAAAAAADaY/QbHPP0rRSBM/s640/XAudio.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XAudio2 is primarily intended for developing high performance audio engines for games. For game developers who want to add sound effects and background music to their modern games, XAudio2 offers an audio graph and mixing engine with low-latency and support for dynamic buffers, synchronous sample-accurate playback, and implicit source rate conversion. Compared to WASAPI, XAudio2 requires only a minimum amount of code even for complex audio solutions. Compared to the Media Foundation engine, XAudio2 is a low-level, low-latency C++ API that is designed for use in games. &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XAudio2 cannot be used for background music - for this task you will have to use the IMFMediaEngine. XAudio2 cannot be used for capturing audio - for this task you will have to use WASAPI. Do not use XAudio2 for media playback. For that task you can use MediaElement&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XAudio2 is part of the DirectX api that is included in the new Windows Phone 8 SDK.&amp;nbsp;The Api is shared between Windows 8 and Windows Phone 8 which means that you will be able&amp;nbsp;to fully reuse your source code on both platforms.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
If you want to use XAudio2 for your C#/VB/HTML code you have two options:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
1. Use &lt;a href="http://sharpdx.org/"&gt;SharpDX&lt;/a&gt;&amp;nbsp;. SharpDX is a wrapper of the DirectX Api under .Net platform. Theoretically you can use it to call XAudio2 api directly from your managed code. Practically what happens is that the .Net&amp;nbsp;CLR/GC on ARM seem to block native threads so your audio will shutter/glitch in certain conditions. I had the same problem when I was developing our Windows 8 game &lt;a href="http://apps.microsoft.com/windows/app/kids-orchestra/770a5b20-a261-496b-b1d4-cbfaa574a4ea"&gt;Kids' Orchestra&lt;/a&gt; and the audio had glitches even on a core i7 processor.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
2. The other option, which from my experience works better, is to develop an Windows Phone Runtime Component that will manage the XAudio2 part and expose the needed methods/events to the managed code.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To better understand how it is done I took the Windows 8 sample&amp;nbsp;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Basic-Audio-Sample-9a5bb0b7"&gt;XAudio2 audio file playback sample C++&lt;/a&gt;&amp;nbsp;from MSDN and ported to Windows Phone 8 by splitting it in two projects: The C#/Xaml part for the UI and the "audio" project which is a Windows Phone Runtime component developed in C++.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-4oQzMkyaGy8/UNrN2kGZBbI/AAAAAAAADao/BgWkGcI_9q4/s1600/Solution.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-4oQzMkyaGy8/UNrN2kGZBbI/AAAAAAAADao/BgWkGcI_9q4/s320/Solution.PNG" width="197" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The porting was pretty easy. I only had to&amp;nbsp;re-code the player class to make it "visible" to the managed code project and added an event that will tell you when a certain Source Voice has finished playing&amp;nbsp;its&amp;nbsp;buffer/sound (we have 7 sounds and each sound has a Source Voice associated to it). If you need further details on how to write a Windows Phone&amp;nbsp;Runtime component in C++ have a look at this&amp;nbsp; &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh441569.aspx"&gt;MSDN Post&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; This sample only plays Wav files that are resources in the C++ project. You could also dynamically generate sounds&amp;nbsp;in&amp;nbsp;managed code&amp;nbsp;and pass the Wave/buffer data as a byte[]&amp;nbsp;to the runtime component. Inside the native code you will then generate an XAUDIO2_BUFFER and submit it to a Source Voice for playing.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-tL7K7Yo1rIA/UNqzxERtW8I/AAAAAAAADaQ/wWwU1fCBEkk/s1600/SoundPlayback.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://2.bp.blogspot.com/-tL7K7Yo1rIA/UNqzxERtW8I/AAAAAAAADaQ/wWwU1fCBEkk/s320/SoundPlayback.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I have attached the &lt;a href="http://sdrv.ms/WFOmYh"&gt;SOURCE CODE&lt;/a&gt;&amp;nbsp;for the Windows Phone project. If you have problems with it don't hesitate to contact me.&lt;/div&gt;
&lt;br /&gt;
NAMASTE!</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/650683822757425173/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2012/12/c-xaudio2-sound-playback-for-windows.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/650683822757425173?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/650683822757425173?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2012/12/c-xaudio2-sound-playback-for-windows.html" title="C# XAudio2 Sound Playback for Windows Phone" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-BksA4k9S1j4/UNqzysTra9I/AAAAAAAADaY/QbHPP0rRSBM/s72-c/XAudio.PNG" height="72" width="72" /><thr:total>6</thr:total></entry><entry gd:etag="W/&quot;D0AHR3c5fip7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-5544115382689989189</id><published>2012-11-29T23:27:00.002+01:00</published><updated>2013-05-17T09:28:56.926+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T09:28:56.926+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uuid" /><category scheme="http://www.blogger.com/atom/ns#" term="win8" /><category scheme="http://www.blogger.com/atom/ns#" term="bluetooth" /><category scheme="http://www.blogger.com/atom/ns#" term="wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia_dev" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 8" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="PeerFinder" /><category scheme="http://www.blogger.com/atom/ns#" term="streamsocket" /><title>Bluetooth Service's UUIDs</title><content type="html">If you are developing on Windows Phone 8 and trying to communicate with a Bluetooth device using a StreamSocket these UUID's might come in handy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;ServiceDiscoveryServerServiceClassID&lt;/b&gt;= '{00001000-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;BrowseGroupDescriptorServiceClassID&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001001-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;PublicBrowseGroupServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001002-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;SerialPortServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001101-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;LANAccessUsingPPPServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001102-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;DialupNetworkingServiceClas&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001103-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;IrMCSyncServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001104-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;OBEXObjectPushServiceClass&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;= '{00001105-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;OBEXFileTransferServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001106-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;IrMCSyncCommandServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{00001107-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;HeadsetServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001108-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;CordlessTelephonyServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001109-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;AudioSourceServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000110A-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;AudioSinkServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{0000110B-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;AVRemoteControlTargetServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000110C-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;AdvancedAudioDistributionServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000110D-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;AVRemoteControlServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{0000110E-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;VideoConferencingServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000110F-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;IntercomServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001110-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;FaxServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001111-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;HeadsetAudioGatewayServiceClass&lt;/b&gt;= '{00001112-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;WAPServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001113-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;WAPClientServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001114-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;PANUServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001115-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;NAPServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001116-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;GNServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001117-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;DirectPrintingServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001118-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;ReferencePrintingServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001119-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;ImagingServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{0000111A-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;ImagingResponderServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000111B-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;ImagingAutomaticArchiveServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000111C-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;ImagingReferenceObjectsServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000111D-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;HandsfreeServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000111E-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;HandsfreeAudioGatewayServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000111F-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;DirectPrintingReferenceObjectsServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001120-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;ReflectedUIServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001121-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;BasicPringingServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001122-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;PrintingStatusServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{00001123-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;HumanInterfaceDeviceServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001124-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;HardcopyCableReplacementServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001125-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;HCRPrintServiceClas&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001126-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;HCRScanServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{00001127-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;CommonISDNAccessServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001128-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;VideoConferencingGWServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001129-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;UDIMTServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000112A-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;UDITAServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000112B-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;AudioVideoServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000112C-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;SIMAccessServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{0000112D-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;PnPInformationServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{00001200-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;GenericNetworkingServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001201-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;GenericFileTransferServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001202-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;GenericAudioServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;= '{00001203-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;b style="font-size: small;"&gt;GenericTelephonyServiceClass&lt;/b&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;= '{00001204-0000-1000-8000-00805F9B34FB}';&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/5544115382689989189/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2012/11/bluetooth-services-uuids.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5544115382689989189?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/5544115382689989189?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2012/11/bluetooth-services-uuids.html" title="Bluetooth Service's UUIDs" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CEMNQnY9eip7ImA9WhJaF0w.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-988209208629467684</id><published>2012-10-08T18:08:00.000+02:00</published><updated>2012-10-08T18:08:13.862+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-08T18:08:13.862+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="visual studio" /><category scheme="http://www.blogger.com/atom/ns#" term="monogame" /><category scheme="http://www.blogger.com/atom/ns#" term="farseer" /><category scheme="http://www.blogger.com/atom/ns#" term="windows store" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="xna" /><category scheme="http://www.blogger.com/atom/ns#" term="physics" /><title>Farseer Physics for Windows Store Apps using Monogame</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp; Last week I did a session on porting XNA Windows Phone 7.x games to Windows Store apps using MonoGame. I have to thank Dean Ellis from the MonoGame project team for all the help.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;While XNA is not a framework directly supported by Microsoft for Windows Store apps the current version of &lt;a href="https://github.com/mono/monogame"&gt;MonoGame&lt;/a&gt;&amp;nbsp;is compatible with Windows 8 and, the most important thing, the applications pass the WACK. There are already several games available in the Windows Store developed using MonoGame (&lt;a href="http://apps.microsoft.com/webpdp/en-us/app/armed/a080e316-b7ff-4d81-831c-2967a9c2357d"&gt;Armed&lt;/a&gt;, &lt;a href="http://apps.microsoft.com/webpdp/en-US/app/skiddy-the-slippery-puzzle/bfac5c29-6f2a-41ca-90e8-6f7bf2193b9a"&gt;Skiddy&lt;/a&gt;, &lt;a href="http://apps.microsoft.com/webpdp/en-us/app/rune-legend/ce3bd888-6a75-467a-b42b-e2181d3f1e54"&gt;Rune Legend&lt;/a&gt; and I guess there are more).&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;For the session I ended up using the &lt;a href="http://xbox.create.msdn.com/en-US/education/catalog/sample/simple_animation"&gt;Simple Animation&lt;/a&gt; sample but seeing how easy is to share the code between the platforms (Windows, Windows Phone,PC, MAC, iOS, Android, Playstation, Linux) I started looking for a physics engine. The most used Open Source physics engine seems to be &lt;a href="http://farseerphysics.codeplex.com/"&gt;Farseer Physics&lt;/a&gt;&amp;nbsp;but it was too late to do the porting for my session. On Sunday I tried the porting and everything went pretty smooth. The only thing I've changed was the serialization/de-serialization of the "World" state. I compiled the engine and also the sample. For the Sample project the Content Project was compiled using Visual Studio 2010 (for the moment Visual Studio 2012 doesn't recognize this type of project) and added the xnb's to a Content folder inside the Visual Studio 2012 solution.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;You can see the result in this YouTube video:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/3CFDuCG3iy4/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3CFDuCG3iy4?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/3CFDuCG3iy4?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
I've used SnagIt to capture the movie and it influenced the frame rate (when running without capturing the framerate is always at 60 fps). The test device was the Samsung Slate which has a powerful cpu. I would love to know if a WinRT device will be able to run at the . If any of my readers has access to a WinRT device please deploy the sample to the device and let me know if the framerate is as expected. For the sample you will have to use an external keyboard and mouse as the touch screen is not working in this version. I will try to fix it for the next release (the problem seems to be inside the MonoGame framework as I only receive the move event and not the pressed and released from the touch screen).&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Use this link to download the full project (engine and sample):&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="http://dl.dropbox.com/u/11927377/Farseer%20Physics%20Engine%203.3.1%20Samples%20XNA%20with%20Win%208%20Support.zip"&gt;SOURCE CODE&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
NAMASTE&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/988209208629467684/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2012/10/farseer-physics-for-windows-store-apps.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/988209208629467684?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/988209208629467684?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2012/10/farseer-physics-for-windows-store-apps.html" title="Farseer Physics for Windows Store Apps using Monogame" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DUMFRXs_eCp7ImA9WhJVGUs.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-879844940849760464</id><published>2012-09-06T23:36:00.000+02:00</published><updated>2012-09-06T23:36:54.540+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-06T23:36:54.540+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="design" /><category scheme="http://www.blogger.com/atom/ns#" term="phone call" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Phone Call screen in Windows Phone</title><content type="html">&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp; I've wanted to write this post for quite a while but I've always postponed it as it is a very subjective matter.&amp;nbsp;In the end I decided to write my opinion. Windows Phone is&amp;nbsp;really great but&amp;nbsp;there are some aspects that could be improved and seem&amp;nbsp;that have been designed in a hurry and never finished. One of this aspects, and it is not what this post is about, is the Application List. It&amp;nbsp;is ugly and&amp;nbsp;not very usable. How is it possible that Windows Mobile&amp;nbsp;had before anyone else folders/groups but they are still missing in Windows Phone after more than 2 years?&amp;nbsp;The application list really needs improvements/redesign.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; This post instead is about the Phone call screen. I've have always had problems with my windows phone devices starting with the Omnia 7 and ending with my Lumia 800 (I've actually tried 3 different Lumia 800 all of them gave me the same problem). The short story is that I am able to drop the call with my face by pressing the Endcall button, put the call on speaker, put it on mute or hold. I am not the only person that has these problems: my wife has the same problem with&amp;nbsp;her new&amp;nbsp;Lumia 710 and also heard from other people. It is a&amp;nbsp;combination&amp;nbsp;between the proximity sensor that activates the screen and the way I am holding the phone. So I've wondered if maybe there is a better location for the Endcall button.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Lets start with a photo I've found on the web &amp;nbsp;(have no idea who she is)&amp;nbsp;:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-f25xXQVYuT8/UEkKqi4LJVI/AAAAAAAACVU/vpK_ykGbPfg/s1600/DesktopPhone.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-f25xXQVYuT8/UEkKqi4LJVI/AAAAAAAACVU/vpK_ykGbPfg/s320/DesktopPhone.jpg" width="270" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
If you look at the way she is holding her phone (which I think is 90% of the cases) the upper part of the screen is in contact with the face.&amp;nbsp;Let's presume that&amp;nbsp;by a faulty&amp;nbsp;behavior&amp;nbsp;(bad driver, hardware fault, OS fault or the fact that the hardware and the software are not designed by the same company) the screen turns on while you talk. The highest probability to touch the screen with the face is in the upper half of the screen. Let's see what it means in Windows Phone:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-OAPOv9bXA6g/UEkLkJDvtGI/AAAAAAAACVc/ExI_Q0Pyq-I/s1600/Windows+Phone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-OAPOv9bXA6g/UEkLkJDvtGI/AAAAAAAACVc/ExI_Q0Pyq-I/s320/Windows+Phone.png" width="190" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
So it is&amp;nbsp;Endcall, Speaker, Hold, and Mute (exactly my case).&lt;br /&gt;
&lt;br /&gt;
If you&amp;nbsp;look&amp;nbsp;again at the picture you can see that the less exposed part&amp;nbsp;of the touchscreen(so the better choice for the buttons location) &amp;nbsp;is the lower part of the screen. The lower you go the smaller the probability is, so the best choice for the End call button is the lower part of the screen (this way you minimize the probability to press the button on faulty behavior). This is exactly (I don't know if this is the reason) what iPhone and Android did:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-AVTfafZbkHw/UEkMicbO63I/AAAAAAAACVs/xuRMkFuMYII/s1600/Android_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-AVTfafZbkHw/UEkMicbO63I/AAAAAAAACVs/xuRMkFuMYII/s320/Android_1.png" width="179" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-49NWo0ltsfI/UEkMZqJi14I/AAAAAAAACVk/qKhZ1iJi8sM/s1600/iPhone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-49NWo0ltsfI/UEkMZqJi14I/AAAAAAAACVk/qKhZ1iJi8sM/s320/iPhone.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Both of them have chosen to put the End call button near the lower part of the touch screen. For Android (which also depends on the hardware implementation) Google concentrated all the buttons at the lower part of the screen. On the iPhone they kept the other buttons in the center region but they do have really good control over the hardware and putting a call on hold or mute is not as bad as dropping the call.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
So it would be better to move the buttons in the lower part of the screen. The blank space&amp;nbsp;could be filled with social&amp;nbsp;information,&amp;nbsp;last call, email, sms.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Hope we will see some improvements in Phone Call screen in Windows Phone 8&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
NAMASTE&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/879844940849760464/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2012/09/phone-call-screen-in-windows-phone.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/879844940849760464?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/879844940849760464?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2012/09/phone-call-screen-in-windows-phone.html" title="Phone Call screen in Windows Phone" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-f25xXQVYuT8/UEkKqi4LJVI/AAAAAAAACVU/vpK_ykGbPfg/s72-c/DesktopPhone.jpg" height="72" width="72" /><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DEACQX8-eip7ImA9WhJVF0o.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-8132898409781061434</id><published>2012-09-04T18:39:00.001+02:00</published><updated>2012-09-04T18:39:20.152+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-04T18:39:20.152+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 7" /><category scheme="http://www.blogger.com/atom/ns#" term="library" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 8" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="media" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>What MediaLibrary needs/is missing (Windows Phone)</title><content type="html">&lt;br /&gt;
&lt;div class="MsoNormal" style="text-align: justify;"&gt;
&lt;span lang="EN-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; As we (average developers :) ) still don’t have access to
the Windows Phone 8 SDK I decided to write a post on the current MediaLibrary
limitations for Windows Phone. I only hope that someone from the team will read
this post and maybe there is still time to improve some aspects in the new version.
Everything here is my personal&amp;nbsp; opinion.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-align: justify;"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-align: justify;"&gt;
&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;So what is missing from the MediaLibrary?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="text-indent: -18pt;"&gt;
&lt;/div&gt;
&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;1.&lt;span style="font-size: 7pt; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;The
Token property exposed on the Picture object&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;!--[if !supportLists]--&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;The most important for me. Why? Let’s open Internet Explorer on the emulator and go on a webpage that has a
picture in it, tap-n-hold and save it twice. If we use Windows Phone commands
to launch the Pictures hub in the emulator and go to the Saved pictures album
we will see both pictures (same picture but different items). Now
let’s create a new project and see what we can get using the MediaLibrary
class. I will use this simple code to debug and stop on the pictures to watch
its properties:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;MediaLibrary&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt; ml = new MediaLibrary();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;//MediaPlayer.Queue.ToString();
;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;
albums = ml.RootPictureAlbum.Albums;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;foreach&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;
(var album in
albums)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt; (album.Pictures.Count&amp;gt;0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 35.4pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;foreach&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;(Picture pct in
album.Pictures)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 35.4pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 70.8pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;bool&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;
stophere = true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 35.4pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 35.4pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-0SQpoVvp0eM/UEYjfFKFb4I/AAAAAAAACVA/6t8QB15EW8E/s1600/Values.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-0SQpoVvp0eM/UEYjfFKFb4I/AAAAAAAACVA/6t8QB15EW8E/s400/Values.PNG" width="298" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 35.4pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;We can see both pictures but the BIG problem
is that the only way to differentiate between the two of them is the Date
property (not very elegant, Handle is not public property). The
Token property &amp;nbsp;makes a lot of sense to tell which picture is which (maybe also a Path
member could be added but Token is way better as we already have the method to
open a picture from its Token and you won't have to iterate all the MediaLibrary just to get the picture we want).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-indent: 35.4pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;This property should be fairly easy to add as it
already exists internally (when we use the PhotoChooser we will get the token
associated with the selected picture and we will be able to open the picture) .&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="text-indent: 35.4pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="text-indent: 35.4pt;"&gt;The token could be extended also to the
PictureAlbum class. It doesn’t make much sense to iterate the MediaLibrary to
find a specific album if I already know what PictureAlbum I want.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="text-indent: -18pt;"&gt;
&lt;/div&gt;
&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;2.&lt;span style="font-size: 7pt; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;The
possibility to create new picture albums&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;!--[if !supportLists]--&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;In this
moment the Pictures Hub already has built-in albums but it is not possible to create new albums
directly from the phone. It is possible to do it from Zune (which will not be
used anymore) but it is not a trivial task (at least till you understand how it works). So we are mainly stuck with two
“containers”: Camera Roll and Saved Pictures which is not&amp;nbsp;enough&amp;nbsp;for a device
that theoretically could hold up more than 1GB of photos. From here the need to have
tools to organize your photos better by creating new albums and copying/moving
photos between albums. Maybe it is a little late to implement it in the "standard" WP8 UI
as we are two months away from the official launch of the first phones on the market but maybe not too late to
add the functionality in the development tools so the developers can implement
it in their&amp;nbsp;apps. This way a
photo app could create its album and then the users will know in which album to
look when they want to find pictures modified/created by a certain app.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="text-indent: -18pt;"&gt;
&lt;/div&gt;
&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;3.&lt;span style="font-size: 7pt; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;Access
to the videos on the device&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;!--[if !supportLists]--&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;Needed since the first version of windows
phone but still no sign of it. Videos are an important part of the device
media and developers need access to this part of the MediaLibrary&amp;nbsp;to enable applications like video
processing, video backup, video creation and more. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="text-indent: -18pt;"&gt;
&lt;/div&gt;
&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;4.&lt;span style="font-size: 7pt; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;Make
the Favorites Pictures album work&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;!--[if !supportLists]--&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;This
functionality already exists in the Windows Phone Mango/Tango but it doesn’t
work in the current version of the SDK. I’ve already posted a question on the forum with no&amp;nbsp;answer&amp;nbsp;till now. The count of the Favorites album is always 0.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wpdevelop/thread/b57da1aa-cbe6-471b-be4c-6fe96a99c353"&gt;http://social.msdn.microsoft.com/Forums/en-US/wpdevelop/thread/b57da1aa-cbe6-471b-be4c-6fe96a99c353&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: 18pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="text-indent: -18pt;"&gt;
&lt;/div&gt;
&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;5.&lt;span style="font-size: 7pt; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;Enable
MediaLibrary access in the background task&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;!--[if !supportLists]--&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;Useful for applications that want
to backup the pictures from the device automatically. If it’s a problem of
security see 6 but if the user already agreed at some point (capabilities, ask
permission) it doesn’t make sense to lock the access to the medialibrary from
the background tasks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="text-indent: -18pt;"&gt;
&lt;/div&gt;
&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;6.&lt;span style="font-size: 7pt; font-weight: normal; line-height: normal;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US;"&gt;Security/capabilities&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;!--[if !supportLists]--&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US"&gt;I think the current &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;ID_CAP_MEDIALIB&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;
is too generic. It would be better to have specific CAP for pictures,
videos and songs. They are pretty distinctive and a photo editor wouldn't need
access to the songs on the device? Also the user should be warned that his photos might contain GPS data in the EXIF header and he should agree to let the application access those informations. &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: 18pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: 18pt;"&gt;
&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="text-align: justify;"&gt;P.S. Almost all of the features requested are already implemented in the iOS development tools.&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: 18pt;"&gt;
&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-left: 18pt;"&gt;
&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="text-align: justify;"&gt;NAMASTE&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/8132898409781061434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2012/09/what-medialibrary-needsis-missing.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/8132898409781061434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/8132898409781061434?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2012/09/what-medialibrary-needsis-missing.html" title="What MediaLibrary needs/is missing (Windows Phone)" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-0SQpoVvp0eM/UEYjfFKFb4I/AAAAAAAACVA/6t8QB15EW8E/s72-c/Values.PNG" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DEMGQ308eSp7ImA9WhJVFEk.&quot;"><id>tag:blogger.com,1999:blog-2972549243194132227.post-48126972716811060</id><published>2012-08-31T22:46:00.000+02:00</published><updated>2012-08-31T22:53:42.371+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-31T22:53:42.371+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="workstation" /><category scheme="http://www.blogger.com/atom/ns#" term="wp8" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone 8" /><category scheme="http://www.blogger.com/atom/ns#" term="fusion" /><category scheme="http://www.blogger.com/atom/ns#" term="emulator" /><category scheme="http://www.blogger.com/atom/ns#" term="vmware" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone" /><title>Windows Phone 8 inside VMWare</title><content type="html">&amp;nbsp; &amp;nbsp; More than a month ago some Microsoft guy in Asia made a terrible mistake and the LKG25 of Windows Phone 8 SDK leaked to the web. As I am not one of the lucky people that are the development program (as &lt;a href="http://twitter.com/maryjofoley"&gt;Mary Jo Foley&lt;/a&gt; suspected in a tweet and I believe it is true) I was more than happy when I got my hands onto the leaked version. At start I wanted to start blogging about the news that Windows Phone 8 will bring, but then I decided that it wouldn't be fair so I will wait until the official SDK. This post is not intended as a spoiler of any feature from WP8, but more like a proof of concept.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; I am sure many of you read on twitter that the new emulator is a virtual x86 machine and it comes with the virtual hard drive (.vhd file)&amp;nbsp;divided&amp;nbsp;on the screen resolutions.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; The idea came to me today while I was installing a clean virtual machine for development. Till now developing in a virtual machine for Windows Phone and&amp;nbsp;debugging&amp;nbsp;on the emulator with a decent speed/quality was impossible as you would have a virtual machines inside a virtual machine that degrades the performance exponentially. So what if you could have the development environment inside a virtual machine and then the emulator on another virtual machine that runs side by side and&amp;nbsp;communicate&amp;nbsp;on TCP/IP. In this case the performance of the emulator would be good (as it is not a vm inside a vm) and also the speed of the development environment would be acceptable. The virtual machine for the emulator would need 512MB or a maximum of 1GB.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;So the first thing I did is to install a trial version of VMWare Workstation 9 (should work with VMWare Fusion and also Parallels/VirtualBox). Then I have used &lt;a href="http://www.winimage.com/winimage.htm"&gt;WinIMAGE&lt;/a&gt; to convert the Flash.vhd file to Flash.vmdk which is the format that VMWare uses and created a virtual machine where I've attached the newly created vmdk.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Y7MjP6EOV5M/UEEYTPjbkTI/AAAAAAAACSU/BUVOj5D0rAA/s1600/WP8+Machine.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-Y7MjP6EOV5M/UEEYTPjbkTI/AAAAAAAACSU/BUVOj5D0rAA/s320/WP8+Machine.PNG" width="191" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;The good news is that the virtual machine works in VMWare right from the start. Not everything works (more decent is to say that some things work :) ) but hey it runs and I did nothing. The networking is not working but the most annoying part is the mouse pointer which is invisible in the virtual machine so I am blind pressing the mouse and at some point I am able to hit some buttons as you can see in the video :&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/gOuQNwKDWNc/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gOuQNwKDWNc?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/gOuQNwKDWNc?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
More important than what this video shows (which is almost nothing) is what it could mean (even if I doubt we will see any of these in the near feature)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Theoretically developing for Windows Phone 8 on Windows 7 should be possible and not so hard to achieve (the partition where I installed Vmware Workstation runs Windows 7)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;With some collaboration between Microsoft and VMWare/Parallels it would be possible to develop on a virtual machine and debug/deploy on the emulator which is another virtual machine. This would be great for Mac users but also for everyone (I might say like me) that likes to keep his development environments clean and separated from&amp;nbsp;each other&amp;nbsp;(I have a VM with VS2008 and Compact Framework, soon VS2010 will pass in a virtual machine too, I don't want to install VS2010 on my Windows 8 partition etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The emulator is an x86 virtual machine so it shouldn't be so hard to&amp;nbsp;achieve&amp;nbsp;plug-gable&amp;nbsp;hardware&amp;nbsp;into the emulator (like connect the webcam to the emulator camera, storage card to an USB key or shared folder, NFC hardware - here I might be mistaking but should be a serial connection after all). It would give us a better development environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
P.S. Seeing that it is a virtual machine I beg the team which is in charge of the emulator to SAVE the emulator/virtual machine state between resets. It is really annoying to always start from 0 and none of the other major mobile platforms has this limitation.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Till next time NAMASTE to you my reader.&lt;/div&gt;
</content><link rel="replies" type="application/atom+xml" href="http://sviluppomobile.blogspot.com/feeds/48126972716811060/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://sviluppomobile.blogspot.com/2012/08/windows-phone-8-inside-vmware.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/48126972716811060?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2972549243194132227/posts/default/48126972716811060?v=2" /><link rel="alternate" type="text/html" href="http://sviluppomobile.blogspot.com/2012/08/windows-phone-8-inside-vmware.html" title="Windows Phone 8 inside VMWare" /><author><name>Dan Ardelean</name><uri>https://plus.google.com/101870985267313312062</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-TJLDh0RB5zc/AAAAAAAAAAI/AAAAAAAADlA/BeOonG81sXg/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Y7MjP6EOV5M/UEEYTPjbkTI/AAAAAAAACSU/BUVOj5D0rAA/s72-c/WP8+Machine.PNG" height="72" width="72" /><thr:total>4</thr:total></entry></feed>
