<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Embedded Your Life</title><subtitle type="text">Mobile Our Future</subtitle><id>http://feed.cnblogs.com/blog/u/44652/rss</id><updated>2012-01-06T05:54:43Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/44652/rss"/><entry><id>http://www.cnblogs.com/dearsj001/archive/2012/01/06/ChinaMobileMarket.html</id><title type="text">移动MM首届手机软件设计及创意大赛决赛取得圆满成功</title><summary type="text">热烈祝贺浙江万里学院移动MM首届手机软件设计及创意大赛决赛取得圆满成功。</summary><published>2012-01-06T05:55:00Z</published><updated>2012-01-06T05:55:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2012/01/06/ChinaMobileMarket.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2012/01/06/ChinaMobileMarket.html"/><content type="html">&#xD;
 &#xD;
&lt;p style="text-align: left; line-height: 30pt; text-indent: 24pt;" align="center"&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;&lt;img style="width: 727.33px; height: 486.77px;" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dearsj001/1.jpg" width="727" height="486" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left; line-height: 30pt; text-indent: 24pt;" align="center"&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dearsj001/2.jpg" width="728" height="544" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left; line-height: 30pt; text-indent: 24pt;" align="left"&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;2011&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;年05月17日&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;，浙江万里学院钱湖校区学术报告厅人头攒动，座无虚席，他们今天如期迎来了浙江万里学院移动MM首届手机软件设计及创意大赛的总决赛，本次大赛分为手机软件设计大赛和手机软件创意大赛两个部分。&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;大赛得到了学院领导的高度重视，与会学院领导有电子信息学院院长梁丰、学生事务与发展中心副主任周宇飞、林德操，电子信息学院党总支书记副院长张增年、副院长王遵义，中国移动通信集团鄞州分公司总经理盛明灏、副总经理杨智伟崴等主要领导参加了本次大赛。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left; line-height: 30pt; text-indent: 24pt;" align="left"&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;本次大赛由&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;电子信息学院&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;礼仪先生吴金鹏同学主持，首先由&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;电子信息学院院长梁丰教授致辞，&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;他对本次大赛给予了高度评价，并殷切的希望通过本次大赛促进校风、学风的建设。接下来由浙江万里MM学院执行院长梁丰和盛明灏揭幕了移动MM学院题词。在接下来的比赛中同学们通过激烈的比赛和热情洋溢的讲解，博得了现场观众的阵阵掌声和专家们的一致好评。最后盛明灏点评了本场大赛并作了讲话，他对学生的积极参与表示了高度赞赏，对获奖的团队表示了祝贺，并为同学们在方案设计阶段表现出来的灵感、创新意识所折服，&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;同时对此次合作表示满意，并&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;希望学生和指导老师能继续后续阶段的开发。会后一行人与获奖的学生进行了深入的交流和探讨。&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left; line-height: 26pt; text-indent: 30pt;" align="left"&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;这次大赛的实践证明举办软件大赛，对于提高大学生自主创新能力，发掘创新人才，促进学生创新创业的发展，具有重大的推动作用。我们相信，在校领导关心、支持下，在浙江万里学院创新创业大背景下，在全院师生的支持和积极参与下，我们会认真总结经验和不足，努力把移动MM手机软件设计大赛越办越好，办出特色，一年更上一层楼!&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: left; line-height: 26pt; text-indent: 30pt;" align="left"&gt;&lt;span style="color: black; font-family: 宋体; font-size: 12pt;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2314413.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2012/01/06/ChinaMobileMarket.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/12/27/WindowsPhoneSDK7_For_Chinese.html</id><title type="text">Windows Phone SDK 7.1 中文版本发布</title><summary type="text">Windows Phone SDK 7.1 中文版本发布。</summary><published>2011-12-27T05:10:00Z</published><updated>2011-12-27T05:10:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/12/27/WindowsPhoneSDK7_For_Chinese.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/12/27/WindowsPhoneSDK7_For_Chinese.html"/><content type="html">&lt;p&gt;自2011年9月底推出Windows Phone SDK&amp;nbsp;7.1 RTM版本之后，很多国内的开发者焦急地等待着中文版本的推出。因为很多装了中文VS2010的用户，在安装英文版本的Windows Phone SDK 7.1之后，碰到了各种各样的问题。&lt;/p&gt;&lt;p&gt;等待了近3个月的时间，在2012年新年即将到来之际，我们终于等到了Windows Phone SDK 7.1 中文版本的发布。&lt;/p&gt;&lt;p&gt;在Microsoft Download Center中的地址如下：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=0a373422-6680-46a7-89e1-e9a468a14259"&gt;http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=0a373422-6680-46a7-89e1-e9a468a14259&lt;/a&gt;&lt;/p&gt;&lt;p&gt;其内容包含：&lt;/p&gt;&lt;p&gt;&amp;#8226;用于 Windows Phone 的 Microsoft Visual Studio 2010 学习版&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8226;Windows Phone Emulator&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8226;Windows Phone SDK 7.1 程序集&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#8226;Silverlight 4 SDK 和 DRT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8226;用于 XNA Game Studio 4.0 的 Windows Phone SDK 7.1 扩展&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8226;用于 Windows Phone 7 的 Microsoft Expression Blend SDK&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#8226;用于 Windows Phone OS 7.1 的 Microsoft Expression Blend SDK&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8226;用于 Windows Phone 的 WCF Data Services 客户端&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#8226;用于 Windows Phone 的 Microsoft Advertising SDK&lt;/p&gt;&lt;p&gt;当然，为了安装方便，我们也可以直接下载ISO文件，在本地进行安装，下载地址如下：&lt;/p&gt;&lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=226694"&gt;http://go.microsoft.com/fwlink/?LinkID=226694&lt;/a&gt;&lt;/p&gt;&lt;p&gt;相信这次中文开发工具的推出，会给国内开发者带来极大的动力。&lt;/p&gt;&lt;p&gt;其实，这半年来，MSDN页面上更新最频繁的就是Windows Phone相关的内容。&lt;/p&gt;&lt;p&gt;如，Windows Phone 中文开发中心：&lt;a href="http://msdn.microsoft.com/zh-cn/windowsphone/"&gt;http://msdn.microsoft.com/zh-cn/windowsphone/&lt;/a&gt;；各种 Windows Phone 相关的活动：Windows Phone 7 校园开拓者、CodeJam、Windows Phone 7 应用征集等等。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2303394.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/12/27/WindowsPhoneSDK7_For_Chinese.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/12/25/Renren4WP7.html</id><title type="text">人人网 Windows Phone 7 应用开发起步</title><summary type="text">图文解说WP7平台上进行Renren应用开发的准备工作。</summary><published>2011-12-25T11:30:00Z</published><updated>2011-12-25T11:30:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/12/25/Renren4WP7.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/12/25/Renren4WP7.html"/><content type="html">&lt;p&gt;目前，人人网在国内高校学生中的普及率非常高。前段时间，大概是11月下旬的样子，人人网发布了Windows Phone 7客户端的公测版。我想，Windows Phone 7本地化的优劣，直接关系到其将来在国内的市场份额。而诸如人人等针对学生群体的SNS应用，也将影响到高校学生对WP7平台的认可程度。人人的WP7公测版大家可以去&lt;a href="http://page.renren.com/601015709/note/781864184?ref=minifeed&amp;amp;sfet=2012&amp;amp;fin=0&amp;amp;ff_id=601015709&amp;amp;feed=page_blog&amp;amp;tagid=781864184&amp;amp;statID=page_601015709_2&amp;amp;level=1"&gt;网站上&lt;/a&gt;下载，如果没有WP7设备，也可以通过SDK中的Application Deployment工具部署到模拟器上进行试用。这里给出WP7平台开发人人应用的相关流程。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;1. 注册人人网应用开发API Key&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;登录人人主页，点击页面下方的&amp;#8220;开放平台&amp;#8221;链接，如下图1所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929545458.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929541031.png" width="674" height="196"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图1：开放平台链接&lt;/p&gt; &lt;p&gt;在基本信息页面中完善相关资料，包括开发者类型、开发者名称、所在地区等等，如下图2所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/20111225192955507.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1" border="0" alt="1" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929553572.jpg" width="675" height="468"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图2：完善开发者信息&lt;/p&gt; &lt;p&gt;填写完成后，去邮箱查阅邮件，点击确认链接，激活开发者账户，如下图3所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929553605.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929556670.jpg" width="673" height="213"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图3：邮件激活开发者账户&lt;/p&gt; &lt;p&gt;在弹出的窗口中选择开发的应用类型，如果是移动设备的应用，一般选择&amp;#8220;客户端&amp;#8221;，如下图4所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929567051.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3" border="0" alt="3" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929569244.jpg" width="472" height="232"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图4：选择应用类型&lt;/p&gt; &lt;p&gt;之后，我们就可以看到应用程序的管理页面，其属性中包含了API Key和Secret Key，如下图5所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929562657.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4" border="0" alt="4" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/20111225192957182.jpg" width="669" height="453"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图5：应用管理页面&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;2. 下载WP7平台的RenrenSDK&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;我们可以登录Renren的Wiki，去下载WP7平台的SDK源代码，链接地址为：&lt;a title="http://wiki.dev.renren.com/wiki/SDK" href="http://wiki.dev.renren.com/wiki/SDK"&gt;http://wiki.dev.renren.com/wiki/SDK&lt;/a&gt;，在页面中选择Windows Phone 7 SDK，如下图6所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929575199.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929571328.png" width="674" height="319"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图6：RenrenSDK下载页面&lt;/p&gt; &lt;p&gt;打开下载的压缩包，我们可以发现，它包含一个开发说明文档目录、一个SDK源代码目录和一个Sample目录，如下图7所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929577216.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929588329.png" width="678" height="158"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图7：RenrenSDK文件目录&lt;/p&gt; &lt;p&gt;利用Visual Studio打开，我们可以发现该Solution中包含了两个Project，一个是封装Renren Lib的源代码工程，另一个则是使用该lib的Sample工程。从其组织上来看，应该是按时下流行的Model-View-ViewModel结构来写的，具体如下图8所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929587806.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929587316.png" width="688" height="437"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图8：RenrenSDK工程界面&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;3. API Key 的修改&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;直接下载得到的工程中，已经包含了人人网应用的API Key和Secret Key，直接编译就可以运行调试，从登陆的界面中，我们可以看到该应用的名称为phone7 sdk开发，如下图9所示。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929582016.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929593445.png" width="330" height="547"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图9：例子工程的名称&lt;/p&gt; &lt;p&gt;当然，我们可以将自己申请得到的API Key和Secret Key放入工程中，具体的文件为&amp;#8220;SDK Sample\app.xaml.cs&amp;#8221;和&amp;#8220;RenrenSDKLibrary\Constants\ConstantValue.cs&amp;#8221;，将其中相关的API Key和Secret Key进行替代，图下图10所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/20111225192959413.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929599890.png" width="773" height="437"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251929594906.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201112/201112251930007132.png" width="773" height="325"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图10：API Key和Secret Key的替换&lt;/p&gt;   &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;&lt;strong&gt;4. SDK Lib包含的相关API&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;这部分内容可以参考doc文档，当然，文档里面写的内容只是罗列了这些函数，具体如何使用，还需要我们自己参考Sample中相关的方法。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div align="center"&gt; &lt;table border="1" cellspacing="0" cellpadding="0" align="center"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;&lt;b&gt;接口名&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;&lt;b&gt;回调参数类型&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;&lt;b&gt;功能&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;&lt;b&gt;说明&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;Login&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;LoginCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;授权页面方式登录&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;弹出授权页面，完成登录并获取sessionKey&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;Login&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;LoginCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;授权页面方式登录带权限&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;同上，可自定义权限&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;Login&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;LoginCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;用户名密码方式登录&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;使用输入框，用户名密码方式登录和授权&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;Logout&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;LoginCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;登出&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;退出登录&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;GetUserInfo&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;GetUsersCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;获取用户信息&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;获得含有指定字段名的用户信息&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;GetCurUserInfo&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;GetUserUidCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;获取当前用户信息&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;获得当前用户信息&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;GetFriendsID&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;GetAppFriendsIDCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;获取好友ID&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;返回好友ID列表&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;GetFriends&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;GetFriendsCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;获取好友信息&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;获得好友信息&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;GetAppFriends&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;GetAppFriendsCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;获取应用好友列表&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;获得应用中的好友列表&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;GetAlbums&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;GetAlbumsCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;获取相册信息&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;获得相册列表和信息&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;PublishPhoto&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;UploadPhotoCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;上传照片&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;调用数据接口上传照片&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;PublishPhotoSimple&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt;无&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;一键上传照片&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;调用界面上传照片&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;CreateAlbum&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;CreateAlbumCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;新建相册&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;创建相册，返回新相册aid&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;FeedDialog&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;DownloadStringCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;发布自定义新鲜事&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;发布自定义新鲜事&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="121"&gt; &lt;p&gt;LikeDialog&lt;/p&gt;&lt;/td&gt; &lt;td width="236"&gt; &lt;p&gt;DownloadStringCompletedEventArgs&lt;/p&gt;&lt;/td&gt; &lt;td width="123"&gt; &lt;p&gt;发布人人喜欢&lt;/p&gt;&lt;/td&gt; &lt;td width="138"&gt; &lt;p&gt;发布喜欢&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;p align="center"&gt;表1：SDK提供的相关API列表&lt;/p&gt; &lt;p align="left"&gt;&lt;/p&gt; &lt;p align="left"&gt;参考链接：&lt;/p&gt; &lt;p align="left"&gt;1. Renren WP7 公测Beta版：&lt;a title="http://page.renren.com/601015709/note/781864184?ref=minifeed&amp;amp;sfet=2012&amp;amp;fin=0&amp;amp;ff_id=601015709&amp;amp;feed=page_blog&amp;amp;tagid=781864184&amp;amp;statID=page_601015709_2&amp;amp;level=1" href="http://page.renren.com/601015709/note/781864184?ref=minifeed&amp;amp;sfet=2012&amp;amp;fin=0&amp;amp;ff_id=601015709&amp;amp;feed=page_blog&amp;amp;tagid=781864184&amp;amp;statID=page_601015709_2&amp;amp;level=1"&gt;http://page.renren.com/601015709/note/781864184?ref=minifeed&amp;amp;sfet=2012&amp;amp;fin=0&amp;amp;ff_id=601015709&amp;amp;feed=page_blog&amp;amp;tagid=781864184&amp;amp;statID=page_601015709_2&amp;amp;level=1&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;2. Renren 开放平台SDK目录：&lt;a title="http://wiki.dev.renren.com/wiki/SDK" href="http://wiki.dev.renren.com/wiki/SDK"&gt;http://wiki.dev.renren.com/wiki/SDK&lt;/a&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2301204.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/12/25/Renren4WP7.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/12/18/3rd_MVP_Road.html</id><title type="text">3年MVP路，一颗感恩的心</title><summary type="text">回顾自己三年的MVP路。</summary><published>2011-12-18T03:23:00Z</published><updated>2011-12-18T03:23:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/12/18/3rd_MVP_Road.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/12/18/3rd_MVP_Road.html"/><content type="html">&lt;p&gt;12月初，参加了微软在北京举办的&amp;#8220;2011 GCR MVP Open Day&amp;#8221;，见到了老朋友，结识了新朋友。回顾3年的MVP路，不由感慨万千。&lt;/p&gt; &lt;p&gt;初次接触微软技术，是07年读研究生的时候，给实验室的一个项目做一个模块，用到了Pocket PC。学校正好开设了微软技术俱乐部，会组织一些类似技术沙龙的活动，邀请研究院或者工程院的老师过来指导学习。在自己的学习过程中碰到的问题，都可以向他们咨询。同时，也会加入一些技术论坛，参与提问，参与讨论。渐渐地，从开始的提问，慢慢地学会解答别人的一些问题，也从中得到了一些成就感。&lt;/p&gt; &lt;p&gt;08年初的时候，论坛的管理员推荐我申请MVP，但是自我感觉还没有达到要求。于是在接下来的半年中，我总结了项目中使用的技术、碰到的问题和解决问题的方法，在博客园建立了自己的博客，将这些文档共享给大家，和广大技术爱好者共同分享，共同探讨一些问题。同时，加入了学校的微软技术俱乐部，和同学们组队参加研究院为高校开设的项目，并积极参与研究院发起的比赛。每次比赛，我们都是抱着学习的态度，在队员们的不断努力下，渐渐地能够拿到名次，这也极大地鼓舞了同学们的自信心。&lt;/p&gt; &lt;p&gt;08年底的时候，加入了微软中文技术论坛的大家庭，主要在自己擅长的领域板块回答问题，处理一些日常的帖子管理。09年4月，自己申请的MVP成功了。当时非常的开心，这也是对自己的一种肯定和鼓励。当然，这仅仅是MVP的开始，未来还有很多的事情等待着我。&lt;/p&gt; &lt;p&gt;到今年，已经是MVP的第三年了。在这三年中，我持续地关注技术，在论坛上解答问题、在博客上分享技术文章的同时，我也得到了成长。因为我觉得，MVP的精神在于帮助和分享。自去年毕业工作以来，在业余投入的时间和精力也有限。但这是我的兴趣所在，我选择继续走我的这条路，感谢这三年来给我帮助的所有朋友。&lt;/p&gt;&lt;p&gt;&lt;/p&gt; &#xD;
 &lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2300891.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/12/18/3rd_MVP_Road.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/11/30/UpgratetoOS7_1.html</id><title type="text">How-to: 利用Visual Studio升级Windows Phone 7工程</title><summary type="text">图文解说了WP7中将OS7.0的工程升级到OS7.1的过程。</summary><published>2011-11-30T08:36:00Z</published><updated>2011-11-30T08:36:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/11/30/UpgratetoOS7_1.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/11/30/UpgratetoOS7_1.html"/><content type="html">&#xD;
&lt;p&gt;自从&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/09/29/WindowsPhoneSDK71RTMRelease.html"&gt;Windows Phone SDK 7.1 RTM&lt;/a&gt;发布以后，我们在Visual Studio 2010 Express for Windows Phone中建立新工程时，可以选择OS的版本，选项包括7.0和7.1，其中默认是7.1，如下图1所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635351408.png"&gt;&lt;img style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline;background-image: none;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635351898.png" width="643" height="303" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图1：新建工程时的OS选择界面&lt;/p&gt; &lt;p&gt;那么，对于之前的应用程序工程，如果要更新到新的OS版本，操作起来也非常的方便，下面我们就按顺序给出操作步骤。以《101.Windows.Phone.7.Apps,Volume.I》中第27章的源代码为例，用Visual Studio 2010 Express for Windows Phone打开&lt;u&gt;Groceries.sln&lt;/u&gt;文件，如下图2所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635352422.png"&gt;&lt;img style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline;background-image: none;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635362704.png" width="641" height="357" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;/p&gt; &lt;p align="center"&gt;图2：打开应用程序界面&lt;/p&gt; &lt;p&gt;在项目的资源浏览器中，右键点击项目的工程，如下图3所示，弹出右键菜单，点击其中的&amp;#8220;Upgrate to Windows Phone 7.1&amp;#8221;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635366816.png"&gt;&lt;img style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline;background-image: none;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635366226.png" width="648" height="307" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图3：项目右键菜单&lt;/p&gt; &lt;p&gt;之后，开发环境弹出一个提示信息框，提醒用户：工程中引用的任何其他工程不会被更新，如下图4所示。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/20111130163537653.png"&gt;&lt;img style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline;background-image: none;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635376717.png" width="454" height="325" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图4：项目升级提醒&lt;/p&gt; &lt;p&gt;在升级完成以后，进行编译，系统提示缺少组件：&lt;/p&gt; &lt;p align="center"&gt;&lt;font color="#000000"&gt;&lt;u&gt;&lt;strong&gt;The referenced component 'Microsoft.Phone.Controls.Toolkit' could not be found.&lt;/strong&gt;&lt;/u&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/p&gt; &lt;p&gt;我们知道，上面的警告是由于没有安装Silverlight for Windows Phone Tookit的缘故，目前，该工具包已经更新到最新的2011年11月版本（针对OS7.1），具体可以去这里下载：&lt;a href="http://silverlight.codeplex.com/SourceControl/list/changesets"&gt;地址&lt;/a&gt;。如下图5所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635377240.png"&gt;&lt;img style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline;background-image: none;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635378079.png" width="666" height="277" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图5：Silverlight for Windows Phone Tookit&lt;/p&gt; &lt;p&gt;安装完毕以后，我们在项目的引用中删除旧的引用，手动添加新的引用，如下图6所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635382506.png"&gt;&lt;img style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline;background-image: none;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635382158.png" width="447" height="351" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图6： 删除旧的引用&lt;/p&gt; &lt;p&gt;新的dll路径位于：%\Program Files\Microsoft SDKs\Windows Phone\v7.1\Toolkit\Oct11\Bin，添加引用的界面如下图7所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635385505.png"&gt;&lt;img style="border: 0px currentColor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline;background-image: none;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201111/201111301635387980.png" width="450" height="361" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图7：添加新的引用&lt;/p&gt;      &lt;p&gt;至此，可以进行工程的编译和调试。&lt;/p&gt; &#xD;
&lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2269317.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/11/30/UpgratetoOS7_1.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/10/30/MotionSensorOnWP7.html</id><title type="text">Windows Phone 7  Motion Sensor 使用指南</title><summary type="text">本文讲述了Windows Phone 7上使用Motion Sensor的原因，以及如何为应用程序加入Motion API，最后给出了三星Focus i917上的测试结果。</summary><published>2011-10-30T05:43:00Z</published><updated>2011-10-30T05:43:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/10/30/MotionSensorOnWP7.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/10/30/MotionSensorOnWP7.html"/><content type="html">&lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;1. 为什么要引入Motion API？&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="2"&gt;在上一篇《&lt;/font&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/10/29/CompassOnWP7.html"&gt;&lt;font size="2"&gt;Windows Phone 7 数字罗盘使用指南&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;》中，我们已经对WP7中的传感器有所了解，事实上，WP7正是通过这些传感器来获取手机当前的姿态和位置等信息。但是，对于开发者来说，他们所关心的并不是这些数据的值本身，而是这些数据所表示的含义。举个例子，之前做Windows Mobile设备定位应用的时候，一般会涉及到GPS数据的获取。在WM2003平台上，开发者需要自己写串口通信类，实现NEMA数据的解析。分析这个过程，最终我们提供给应用的有意义的数据其实就是经纬度和时间等信息，而并不是原始的NEMA协议数据。因此，微软在WM5.0平台中引入了GPSID（即GPS中间层驱动），对于应用程序来说，GPSID为其提供经纬度等信息；而与GPS硬件打交道的过程，就交给了GPSID。这样一来，应用程序开发者就从中解脱出来了。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 那么，在我看来，Motion API所做的事情，其实质就和GPSID类似。在应用程序开发过程中，如果我们开发者获取原始的传感器数据，然后对其数据进行分析，从而去判断手机的姿态和移动方向，这样一个处理流程确实有点复杂，而且有时候也很难处理，如加速度传感器的返回值中，不仅仅包含了手机移动的加速度，还包括了重力加速度（事实上，在Windows Phone OS 7.0上，处理加速度传感器时，我们的确是需要经历上面的过程）。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;因此，在Windows Phone OS 7.1（Mango）中，引入了Motion API，用它来对底层的传感器数据进行分析和处理，从而得到开发者需要的信息，如设备的姿态（yaw, pitch, and roll）、旋转加速度和线性加速度&lt;/strong&gt;。我们可以对原始的加速度传感器信息与Motion API中的加速度传感器信息进行对比，了解它们的区别。如下图1所示，左边是获取加速度传感器原始数据的页面，右边是获取Motion数据的页面。&lt;/font&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301340567015.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Screen Capture (2)" border="0" alt="Screen Capture (2)" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301341027783.jpg" width="237" height="393"&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301341123413.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Screen Capture (5)" border="0" alt="Screen Capture (5)" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301341131677.jpg" width="238" height="393"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图1：加速度传感器的原始数据与Motion获取的数据对比&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt; 从Y轴的数据来看，原始的加速度传感器数据包含了重力加速度与手机在外力作用下的加速度，而从Motion API获取到的加速度数据来看，它已经为我们排除了重力加速度的影响。因此，对于开发者而言，Motion API有助于简化应用程序的开发。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;2. 使用Motion API的前提&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先，需要注意的是，一代的Windows Phone 7手机没有开放Motion API。因此，如果想要在Windows Phone OS 7.0上写基于Motion的应用程序，那是无法实现的。但是，自从这个月初微软提供了Mango升级以后，很多设备厂商都对其生产的WP7推送了Mango更新。在OS升级以后，有些设备就提供了对Motion API的支持。如我的三星Focus i917就支持，因此才有了以下的尝试。下文中的内容，参考了MSDN上的文章：&lt;a href="http://msdn.microsoft.com/zh-cn/library/hh202984.aspx"&gt;How to: Use the Combined Motion API for Windows Phone&lt;/a&gt;。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;3. 如何在应用程序中使用Motion API？&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;   &lt;p&gt;这里以silverlight应用程序为例，展示了在应用程序中使用Motion API的方法。&lt;/p&gt; &lt;p&gt;（1）添加对Microsoft.Devices.Sensors与Microsoft.Xna.Framework的引用，如下图2所示：&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301341262483.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301342357138.png" width="677" height="379"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;图2：添加Motion API相关的namespace&lt;/p&gt; &lt;p&gt;（2）在主页面的XAML中，加入6个Textblock，表示手机姿态的yall、pitch、roll和加速度传感器的三个返回值。为了使得表现形式更加得直观，引入三个三角形，用其旋转的角度来表征yall、pitch、roll的数值，同时引入三个相互垂直的轴线，用来表示加速度传感器的值，其代码如下：&lt;/p&gt; &lt;div &gt;&lt;pre &gt;&lt;span &gt;   1:  &lt;/span&gt;       &amp;lt;!--TitlePanel contains the name of the application and page title--&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   2:  &lt;/span&gt;        &amp;lt;StackPanel x:Name=&lt;span &gt;"TitlePanel"&lt;/span&gt; Grid.Row=&lt;span &gt;"0"&lt;/span&gt; Margin=&lt;span &gt;"12,17,0,28"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   3:  &lt;/span&gt;            &amp;lt;TextBlock x:Name=&lt;span &gt;"ApplicationTitle"&lt;/span&gt; Text=&lt;span &gt;"MY APPLICATION"&lt;/span&gt; Style=&lt;span &gt;"{StaticResource PhoneTextNormalStyle}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   4:  &lt;/span&gt;            &amp;lt;TextBlock x:Name=&lt;span &gt;"PageTitle"&lt;/span&gt; Text=&lt;span &gt;"Simple Motion"&lt;/span&gt; Margin=&lt;span &gt;"9,-7,0,0"&lt;/span&gt; Style=&lt;span &gt;"{StaticResource PhoneTextTitle1Style}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   5:  &lt;/span&gt;        &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   7:  &lt;/span&gt;        &amp;lt;StackPanel&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   8:  &lt;/span&gt;            &amp;lt;TextBlock Text=&lt;span &gt;"attitude"&lt;/span&gt; Margin=&lt;span &gt;"12,130,0,28"&lt;/span&gt; Style=&lt;span &gt;"{StaticResource PhoneTextLargeStyle}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   9:  &lt;/span&gt;            &amp;lt;Grid Margin=&lt;span &gt;"12 0 12 0"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  10:  &lt;/span&gt;                &amp;lt;TextBlock Height=&lt;span &gt;"30"&lt;/span&gt; HorizontalAlignment=&lt;span &gt;"Left"&lt;/span&gt;  Name=&lt;span &gt;"yawTextBlock"&lt;/span&gt; Text=&lt;span &gt;"YAW: 000"&lt;/span&gt; VerticalAlignment=&lt;span &gt;"Top"&lt;/span&gt; Foreground=&lt;span &gt;"Red"&lt;/span&gt; FontSize=&lt;span &gt;"25"&lt;/span&gt; FontWeight=&lt;span &gt;"Bold"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  11:  &lt;/span&gt;                &amp;lt;TextBlock Height=&lt;span &gt;"30"&lt;/span&gt; HorizontalAlignment=&lt;span &gt;"Center"&lt;/span&gt;  Name=&lt;span &gt;"pitchTextBlock"&lt;/span&gt; Text=&lt;span &gt;"PITCH: 000"&lt;/span&gt; VerticalAlignment=&lt;span &gt;"Top"&lt;/span&gt; Foreground=&lt;span &gt;"Green"&lt;/span&gt; FontSize=&lt;span &gt;"25"&lt;/span&gt; FontWeight=&lt;span &gt;"Bold"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  12:  &lt;/span&gt;                &amp;lt;TextBlock Height=&lt;span &gt;"30"&lt;/span&gt; HorizontalAlignment=&lt;span &gt;"Right"&lt;/span&gt;   Name=&lt;span &gt;"rollTextBlock"&lt;/span&gt; Text=&lt;span &gt;"ROLL: 000"&lt;/span&gt; VerticalAlignment=&lt;span &gt;"Top"&lt;/span&gt;  Foreground=&lt;span &gt;"Blue"&lt;/span&gt; FontSize=&lt;span &gt;"25"&lt;/span&gt; FontWeight=&lt;span &gt;"Bold"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  13:  &lt;/span&gt;            &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  14:  &lt;/span&gt;            &amp;lt;Grid Height=&lt;span &gt;"200"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  15:  &lt;/span&gt;                &amp;lt;Polygon Name=&lt;span &gt;"yawtriangle"&lt;/span&gt; Points=&lt;span &gt;"45,135 80,50 115,135"&lt;/span&gt;  Stroke=&lt;span &gt;"Red"&lt;/span&gt; StrokeThickness=&lt;span &gt;"2"&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  16:  &lt;/span&gt;                    &amp;lt;Polygon.Fill&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  17:  &lt;/span&gt;                        &amp;lt;SolidColorBrush Color=&lt;span &gt;"Red"&lt;/span&gt; Opacity=&lt;span &gt;"0.3"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  18:  &lt;/span&gt;                    &amp;lt;/Polygon.Fill&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  19:  &lt;/span&gt;                    &amp;lt;Polygon.RenderTransform&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  20:  &lt;/span&gt;                        &amp;lt;RotateTransform CenterX=&lt;span &gt;"80"&lt;/span&gt; CenterY=&lt;span &gt;"100"&lt;/span&gt;&amp;gt;&amp;lt;/RotateTransform&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  21:  &lt;/span&gt;                    &amp;lt;/Polygon.RenderTransform&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  22:  &lt;/span&gt;                &amp;lt;/Polygon&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  23:  &lt;/span&gt;                &amp;lt;Polygon Name=&lt;span &gt;"pitchtriangle"&lt;/span&gt; Points=&lt;span &gt;"205,135 240,50 275,135"&lt;/span&gt; Stroke=&lt;span &gt;"Green"&lt;/span&gt; StrokeThickness=&lt;span &gt;"2"&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  24:  &lt;/span&gt;                    &amp;lt;Polygon.Fill&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  25:  &lt;/span&gt;                        &amp;lt;SolidColorBrush Color=&lt;span &gt;"Green"&lt;/span&gt; Opacity=&lt;span &gt;"0.3"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  26:  &lt;/span&gt;                    &amp;lt;/Polygon.Fill&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  27:  &lt;/span&gt;                    &amp;lt;Polygon.RenderTransform&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  28:  &lt;/span&gt;                        &amp;lt;RotateTransform CenterX=&lt;span &gt;"240"&lt;/span&gt; CenterY=&lt;span &gt;"100"&lt;/span&gt;&amp;gt;&amp;lt;/RotateTransform&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  29:  &lt;/span&gt;                    &amp;lt;/Polygon.RenderTransform&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  30:  &lt;/span&gt;                &amp;lt;/Polygon&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  31:  &lt;/span&gt;                &amp;lt;Polygon Name=&lt;span &gt;"rolltriangle"&lt;/span&gt; Points=&lt;span &gt;"365,135 400,50 435,135"&lt;/span&gt; Stroke=&lt;span &gt;"Blue"&lt;/span&gt; StrokeThickness=&lt;span &gt;"2"&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  32:  &lt;/span&gt;                    &amp;lt;Polygon.Fill&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  33:  &lt;/span&gt;                        &amp;lt;SolidColorBrush Color=&lt;span &gt;"Blue"&lt;/span&gt; Opacity=&lt;span &gt;"0.3"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  34:  &lt;/span&gt;                    &amp;lt;/Polygon.Fill&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  35:  &lt;/span&gt;                    &amp;lt;Polygon.RenderTransform&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  36:  &lt;/span&gt;                        &amp;lt;RotateTransform CenterX=&lt;span &gt;"400"&lt;/span&gt; CenterY=&lt;span &gt;"100"&lt;/span&gt;&amp;gt;&amp;lt;/RotateTransform&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  37:  &lt;/span&gt;                    &amp;lt;/Polygon.RenderTransform&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  38:  &lt;/span&gt;                &amp;lt;/Polygon&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  39:  &lt;/span&gt;            &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  40:  &lt;/span&gt;            &amp;lt;TextBlock Text=&lt;span &gt;"acceleration"&lt;/span&gt; Style=&lt;span &gt;"{StaticResource PhoneTextLargeStyle}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  41:  &lt;/span&gt;            &amp;lt;Grid Margin=&lt;span &gt;"12 0 12 0"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  42:  &lt;/span&gt;                &amp;lt;TextBlock Height=&lt;span &gt;"30"&lt;/span&gt; HorizontalAlignment=&lt;span &gt;"Left"&lt;/span&gt;  Name=&lt;span &gt;"xTextBlock"&lt;/span&gt; Text=&lt;span &gt;"X: 000"&lt;/span&gt; VerticalAlignment=&lt;span &gt;"Top"&lt;/span&gt; Foreground=&lt;span &gt;"Red"&lt;/span&gt; FontSize=&lt;span &gt;"25"&lt;/span&gt; FontWeight=&lt;span &gt;"Bold"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  43:  &lt;/span&gt;                &amp;lt;TextBlock Height=&lt;span &gt;"30"&lt;/span&gt; HorizontalAlignment=&lt;span &gt;"Center"&lt;/span&gt;  Name=&lt;span &gt;"yTextBlock"&lt;/span&gt; Text=&lt;span &gt;"Y: 000"&lt;/span&gt; VerticalAlignment=&lt;span &gt;"Top"&lt;/span&gt; Foreground=&lt;span &gt;"Green"&lt;/span&gt; FontSize=&lt;span &gt;"25"&lt;/span&gt; FontWeight=&lt;span &gt;"Bold"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  44:  &lt;/span&gt;                &amp;lt;TextBlock Height=&lt;span &gt;"30"&lt;/span&gt; HorizontalAlignment=&lt;span &gt;"Right"&lt;/span&gt;   Name=&lt;span &gt;"zTextBlock"&lt;/span&gt; Text=&lt;span &gt;"Z: 000"&lt;/span&gt; VerticalAlignment=&lt;span &gt;"Top"&lt;/span&gt;  Foreground=&lt;span &gt;"Blue"&lt;/span&gt; FontSize=&lt;span &gt;"25"&lt;/span&gt; FontWeight=&lt;span &gt;"Bold"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  45:  &lt;/span&gt;            &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  46:  &lt;/span&gt;            &amp;lt;Grid Height=&lt;span &gt;"300"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  47:  &lt;/span&gt;                &amp;lt;Line x:Name=&lt;span &gt;"xLine"&lt;/span&gt; X1=&lt;span &gt;"240"&lt;/span&gt; Y1=&lt;span &gt;"150"&lt;/span&gt; X2=&lt;span &gt;"340"&lt;/span&gt; Y2=&lt;span &gt;"150"&lt;/span&gt; Stroke=&lt;span &gt;"Red"&lt;/span&gt; StrokeThickness=&lt;span &gt;"4"&lt;/span&gt;&amp;gt;&amp;lt;/Line&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  48:  &lt;/span&gt;                &amp;lt;Line x:Name=&lt;span &gt;"yLine"&lt;/span&gt; X1=&lt;span &gt;"240"&lt;/span&gt; Y1=&lt;span &gt;"150"&lt;/span&gt; X2=&lt;span &gt;"240"&lt;/span&gt; Y2=&lt;span &gt;"50"&lt;/span&gt; Stroke=&lt;span &gt;"Green"&lt;/span&gt; StrokeThickness=&lt;span &gt;"4"&lt;/span&gt;&amp;gt;&amp;lt;/Line&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  49:  &lt;/span&gt;                &amp;lt;Line x:Name=&lt;span &gt;"zLine"&lt;/span&gt; X1=&lt;span &gt;"240"&lt;/span&gt; Y1=&lt;span &gt;"150"&lt;/span&gt; X2=&lt;span &gt;"190"&lt;/span&gt; Y2=&lt;span &gt;"200"&lt;/span&gt; Stroke=&lt;span &gt;"Blue"&lt;/span&gt; StrokeThickness=&lt;span &gt;"4"&lt;/span&gt;&amp;gt;&amp;lt;/Line&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  50:  &lt;/span&gt;            &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  51:  &lt;/span&gt;        &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（3）在主页面的MainPage.xaml.cs中，声明一个Motion类的对象。&lt;/p&gt;&#xD;
&lt;p&gt;（4）重写页面的&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.windows.controls.page.onnavigatedto.aspx"&gt;OnNavigatedTo(NavigationEventArgs)&lt;/a&gt;方法，检查设备是否支持Motion，初始化Motion对象，添加&lt;a href="http://msdn.microsoft.com/zh-cn/library/hh239103.aspx"&gt;CurrentValueChanged&lt;/a&gt;事件，代码如下：&lt;/p&gt;&#xD;
&lt;div &gt;&lt;pre &gt;&lt;span &gt;   1:  &lt;/span&gt;&lt;span &gt;protected&lt;/span&gt; &lt;span &gt;override&lt;/span&gt; &lt;span &gt;void&lt;/span&gt; OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   3:  &lt;/span&gt;  &lt;span &gt;// Check to see whether the Motion API is supported on the device.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   4:  &lt;/span&gt;  &lt;span &gt;if&lt;/span&gt; (! Motion.IsSupported)&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   5:  &lt;/span&gt;  {&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   6:  &lt;/span&gt;    MessageBox.Show(&lt;span &gt;"the Motion API is not supported on this device."&lt;/span&gt;);&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   7:  &lt;/span&gt;    &lt;span &gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   8:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  10:  &lt;/span&gt;  &lt;span &gt;// If the Motion object is null, initialize it and add a CurrentValueChanged&lt;/span&gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  11:  &lt;/span&gt;  &lt;span &gt;// event handler.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  12:  &lt;/span&gt;  &lt;span &gt;if&lt;/span&gt; (motion == &lt;span &gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  13:  &lt;/span&gt;  {&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  14:  &lt;/span&gt;    motion = &lt;span &gt;new&lt;/span&gt; Motion();&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  15:  &lt;/span&gt;    motion.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20);&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  16:  &lt;/span&gt;    motion.CurrentValueChanged += &lt;span &gt;new&lt;/span&gt; EventHandler&amp;lt;SensorReadingEventArgs&amp;lt;MotionReading&amp;gt;&amp;gt;(motion_CurrentValueChanged);&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  17:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  18:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  19:  &lt;/span&gt;  &lt;span &gt;// Try to start the Motion API.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  20:  &lt;/span&gt;  &lt;span &gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  21:  &lt;/span&gt;  {&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  22:  &lt;/span&gt;    motion.Start();&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  23:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  24:  &lt;/span&gt;  &lt;span &gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  25:  &lt;/span&gt;  {&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  26:  &lt;/span&gt;    MessageBox.Show(&lt;span &gt;"unable to start the Motion API."&lt;/span&gt;);&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  27:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  28:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（5）通过周期性地调用CurrentValueChanged事件获得Motion数据，但是该事件是在后台进程中调用，无法对UI元素进行更改。因此，我们需要在UI线程中使用BeginInvoke来调用CurrentValueChanged。&lt;/p&gt;&#xD;
&lt;p&gt;（6）创建CurrentValueChanged方法，在其中设置6个Textblock和4个图的内容。使用XNA Framework中的MathHelper类实现弧度和角度的转换，代码如下：&lt;/p&gt;&#xD;
&lt;div &gt;&lt;pre &gt;&lt;span &gt;   1:  &lt;/span&gt;&lt;span &gt;private&lt;/span&gt; &lt;span &gt;void&lt;/span&gt; CurrentValueChanged(MotionReading e)&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   3:  &lt;/span&gt;  &lt;span &gt;// Check to see if the Motion data is valid.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   4:  &lt;/span&gt;  &lt;span &gt;if&lt;/span&gt; (motion.IsDataValid)&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   5:  &lt;/span&gt;  {&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   6:  &lt;/span&gt;    &lt;span &gt;// Show the numeric values for attitude.&lt;/span&gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   7:  &lt;/span&gt;    yawTextBlock.Text = &lt;span &gt;"YAW: "&lt;/span&gt; + MathHelper.ToDegrees(e.Attitude.Yaw).ToString(&lt;span &gt;"0"&lt;/span&gt;) + &lt;span &gt;"&amp;#176;"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   8:  &lt;/span&gt;    pitchTextBlock.Text = &lt;span &gt;"PITCH: "&lt;/span&gt; + MathHelper.ToDegrees(e.Attitude.Pitch).ToString(&lt;span &gt;"0"&lt;/span&gt;) + &lt;span &gt;"&amp;#176;"&lt;/span&gt;;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   9:  &lt;/span&gt;    rollTextBlock.Text = &lt;span &gt;"ROLL: "&lt;/span&gt; + MathHelper.ToDegrees(e.Attitude.Roll).ToString(&lt;span &gt;"0"&lt;/span&gt;) + &lt;span &gt;"&amp;#176;"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  11:  &lt;/span&gt;    &lt;span &gt;// Set the Angle of the triangle RenderTransforms to the attitude of the device.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  12:  &lt;/span&gt;    ((RotateTransform)yawtriangle.RenderTransform).Angle = MathHelper.ToDegrees(e.Attitude.Yaw);&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  13:  &lt;/span&gt;    ((RotateTransform)pitchtriangle.RenderTransform).Angle = MathHelper.ToDegrees(e.Attitude.Pitch);&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  14:  &lt;/span&gt;    ((RotateTransform)rolltriangle.RenderTransform).Angle = MathHelper.ToDegrees(e.Attitude.Roll);&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  16:  &lt;/span&gt;    &lt;span &gt;// Show the numeric values for acceleration.&lt;/span&gt;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  17:  &lt;/span&gt;    xTextBlock.Text = &lt;span &gt;"X: "&lt;/span&gt; + e.DeviceAcceleration.X.ToString(&lt;span &gt;"0.00"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  18:  &lt;/span&gt;    yTextBlock.Text = &lt;span &gt;"Y: "&lt;/span&gt; + e.DeviceAcceleration.Y.ToString(&lt;span &gt;"0.00"&lt;/span&gt;);&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  19:  &lt;/span&gt;    zTextBlock.Text = &lt;span &gt;"Z: "&lt;/span&gt; + e.DeviceAcceleration.Z.ToString(&lt;span &gt;"0.00"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  20:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  21:  &lt;/span&gt;    &lt;span &gt;// Show the acceleration values graphically.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  22:  &lt;/span&gt;    xLine.X2 = xLine.X1 + e.DeviceAcceleration.X * 100;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  23:  &lt;/span&gt;    yLine.Y2 = yLine.Y1 - e.DeviceAcceleration.Y * 100;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  24:  &lt;/span&gt;    zLine.X2 = zLine.X1 - e.DeviceAcceleration.Z * 50;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  25:  &lt;/span&gt;    zLine.Y2 = zLine.Y1 + e.DeviceAcceleration.Z * 50;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  26:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  27:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;4. 测试结果&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对三星Focus i917（已升级到Mango，版本号为7720.68）进行Compass测试，获得的结果如下图3所示：&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301342468108.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Screen Capture (6)" border="0" alt="Screen Capture (6)" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110301342533827.jpg" width="256" height="424"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;图3：Focus上的Motion API测试结果&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;参考链接：&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1. &lt;a href="http://msdn.microsoft.com/zh-cn/library/hh202984.aspx"&gt;How to: Use the Combined Motion API for Windows Phone&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. &lt;a href="http://msdn.microsoft.com/zh-cn/library/hh202968.aspx"&gt;Sensors Overview for Windows Phone&lt;/a&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2229248.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/10/30/MotionSensorOnWP7.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/10/29/CompassOnWP7.html</id><title type="text">Windows Phone 7 数字罗盘使用指南</title><summary type="text">本文讲述了数字罗盘的分类，Windows Phone 7上Compass的支持情况，以及如何在应用程序中加入Compass，最后给出了三星Focus i917上的测试结果。</summary><published>2011-10-29T13:28:00Z</published><updated>2011-10-29T13:28:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/10/29/CompassOnWP7.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/10/29/CompassOnWP7.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;1. 什么是数字罗盘，和指南针有什么关系？&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 指南针是我们外出旅游时，用来指示方向的一种工具。常见的机械式指南针，它是一种根据地球磁场的有极性制作的地磁指南针，但这种指南针指示的南北方向与真正的南北方向不同，存在一个磁偏角。电子器件的飞速发展，为我们带来了电子指南针，也就是所谓的数字罗盘，它采用了磁场传感器的磁阻技术，可很好地修正磁偏角的问题。有人会问，为了实现指向，直接使用GPS不就可以了吗？但现实情况是，如果我们处于建筑物内、或者一些无法接收卫星信号的地方，那么GPS就无法获取地理位置和方向信息了。在这种情况下，数字罗盘就可以发挥作用了。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;2. 数字罗盘的种类&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font size="3"&gt;根据实现的原理，数字罗盘可以分为两种：&lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Compass#Magnetic_compass"&gt;&lt;font size="3"&gt;magnetic compass&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;和&lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Gyrocompass"&gt;&lt;font size="3"&gt;gyro compass&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="3"&gt;。前者指示的是地磁意义上的南北极，而后者指示的是地理意义上的南北极。注意，&lt;strong&gt;地磁南北极与地理南北极并不相同&lt;/strong&gt;。地磁北极是地球表面地球磁场方向垂直向下的点，地磁北极点随时间不停的变化。另外，由于地球磁场并不是完全对称的，地磁北极与地磁南极并不是处在同一个轴上。地理北极（通常就简称为北极）是地球的自转轴与地球表面的两个交点之一（另一个点是南极，就在相对的另一面），地理上的北极是纬度为北纬90&amp;#176;的点，在方向上是真北，在这一点所指向的任何方向都是南方。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;3. Windows Phone 7上的数字罗盘&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="3"&gt;为了方便我们的日常生活，传感器可以说是手机中必备的功能器件。常用的传感器包括加速度传感器、数字罗盘、GPS等等。当然，手机厂商对其的支持程度也会随着手机型号及其面向的用户而改变。对于Windows Phone 7而言，微软给各个手机生产厂商指定了一个硬件规格，包括CPU、屏幕分辨率、内存容量和传感器等等。具体来说，Windows Phone OS 7.0（Windows Phone RTM）支持加速度传感器，但却并不支持数字罗盘（Compass）（确切的说，应该是没有向用户开放Compass的API）。但是，这一情况从Windows Phone OS 7.1（Mango）发布以后就得到了改观，&lt;strong&gt;Compass API是其引入的新特性之一&lt;/strong&gt;。下图就显示了Windows Phone RTM和Mango这两个版本对各种传感器的支持情况。&lt;/font&gt;&lt;/p&gt; &lt;div align="center"&gt; &lt;table style="color: #000000" border="1" cellspacing="0" cellpadding="0" align="center"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p align="left"&gt;&lt;b&gt;Sensor&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;&lt;b&gt;Windows Phone RTM&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;&lt;b&gt;Windows Phone Mango&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;Accelerometer&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;Microphone&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;A-GPS&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;Camera&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;Compass&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;不支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;可选&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;Gyro&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;不支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;可选&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;Motion&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;不支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;可选&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="132"&gt; &lt;p&gt;&lt;b&gt;FM Radio&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="183"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="213"&gt; &lt;p&gt;支持&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;div align="center"&gt;&lt;strong&gt;图1：WP7两个版本间传感器支持的差异&lt;/strong&gt;&lt;/div&gt; &lt;div align="center"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt; &lt;div align="left"&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="3"&gt;需要注意的是，对于Windows Phone 7设备来说，Compass并不是必须的。换句话说，微软并没有对其进行强制规定，硬件厂商可以根据自己的意愿来选择是否对其生产的Windows Phone 7设备加入数字罗盘的支持。例如，对于我的三星Focus i917而言，它支持加速度传感器和Compass，但是却并不支持Gyro。&lt;/font&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;strong&gt;&lt;font size="4"&gt;4.&amp;nbsp; 如何判断你的Windows Phone 7设备是否支持数字罗盘&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="3"&gt;如何判断Windows Phone 7设备是否支持某种传感器，我们可以通过Microsoft.Devices.Sensors命名空间下，各个传感器的IsSupported属性获得。例如，判断设备是否支持数字罗盘，我们可以使用下面的语句：&lt;/font&gt;&lt;/div&gt; &lt;div &gt;&lt;pre &gt;&lt;span &gt;   1:  &lt;/span&gt;Compass compass;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   2:  &lt;/span&gt;&lt;span &gt;if&lt;/span&gt; (!Compass.IsSupported)&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   3:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   4:  &lt;/span&gt;    statusTextBlock.Text = &lt;span &gt;"device does not support compass"&lt;/span&gt;;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   5:  &lt;/span&gt;    ApplicationBar.IsVisible = &lt;span &gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   6:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;5. Compass提供的数据&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;Windows Phone 7的Compass，可以提供的数据及其含义如下：&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）HeadingAccuracy -- 数字罗盘方向指示的精度，该数值一般用来指示是否需要校准。 &lt;/font&gt;&#xD;
&lt;li&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）MagneticHeading -- 与地磁北极的偏角，一般用角度来表示。 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （3）TrueHeading -- 与地理北极的偏角，一般用角度来表示。 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （4）MagnetometerReading -- 从磁力计得到的原始数据，以微特斯拉为单位，用XNA中的 Vector3 作为数据类型。&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注：Windows Phone 7的Compass提供了TrueHeading，从数字罗盘的分类上看，它还实现了gyro的功能。但是，从MSDN的文档《&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh202968(v=vs.92).aspx"&gt;&lt;font size="3"&gt;Sensors Overview for Windows Phone&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;》来看，其compass提供的应该是与地磁北极的偏角：&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8220;&lt;em&gt;&lt;u&gt;The &lt;/u&gt;&lt;/em&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.sensors.compass(v=vs.92).aspx"&gt;&lt;em&gt;&lt;font size="3"&gt;&lt;u&gt;Compass&lt;/u&gt;&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;em&gt;&lt;u&gt;, or magnetometer, sensor can be used to determine the angle by which the device is rotated relative to the Earth&amp;#8217;s magnetic north pole. An application can also use raw magnetometer readings to detect magnetic forces around the device&lt;/u&gt;&lt;/em&gt;.&amp;#8221; &lt;/font&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 所以，对于这一点，我还是存在疑惑。 &lt;/font&gt;&#xD;
&lt;div align="left"&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;6. 如何为Windows Phone 7应用程序加入Compass？&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;关于这一点，我们可以参考MSDN上的这篇文章：《&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh202974(v=vs.92).aspx"&gt;&lt;font size="3"&gt;How to: Get Data from the Compass Sensor for Windows Phone&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;》。需要注意的有以下几点：&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）我们需要添加对&lt;strong&gt;Microsoft.Devices.Sensors&lt;/strong&gt;以及&lt;strong&gt;Microsoft.Xna.Framework&lt;/strong&gt;的引用。&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）我们需要在xaml对应的cs文件中，声明对命名空间的引入：&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&lt;pre &gt;&lt;span &gt;   1:  &lt;/span&gt;&lt;span &gt;using&lt;/span&gt; Microsoft.Devices.Sensors;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   2:  &lt;/span&gt;&lt;span &gt;using&lt;/span&gt; Microsoft.Xna.Framework;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   3:  &lt;/span&gt;&lt;span &gt;using&lt;/span&gt; System.Windows.Threading;&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;（3）&lt;strong&gt;手机竖屏模式与横屏模式对Compass的影响&lt;/strong&gt;。应用程序从Compass类中获得的角度信息会根据手机的姿态有所调整，其中主要是横屏和竖屏模式的区别。判断手机处于哪种状态，可以通过加速度传感器中Z轴的值来实现。&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&lt;pre &gt;&lt;span &gt;   1:  &lt;/span&gt;&lt;span &gt;void&lt;/span&gt; accelerometer_CurrentValueChanged(&lt;span &gt;object&lt;/span&gt; sender, SensorReadingEventArgs&amp;lt;AccelerometerReading&amp;gt; e)&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   3:  &lt;/span&gt;  Vector3 v = e.SensorReading.Acceleration;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   5:  &lt;/span&gt;  &lt;span &gt;bool&lt;/span&gt; isCompassUsingNegativeZAxis = &lt;span &gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   7:  &lt;/span&gt;  &lt;span &gt;if&lt;/span&gt; (Math.Abs(v.Z) &amp;lt; Math.Cos(Math.PI / 4) &amp;amp;&amp;amp;&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   8:  &lt;/span&gt;                (v.Y &amp;lt; Math.Sin(7 * Math.PI / 4)))&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   9:  &lt;/span&gt;  {&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  10:  &lt;/span&gt;    isCompassUsingNegativeZAxis = &lt;span &gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  11:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;  13:  &lt;/span&gt;  Dispatcher.BeginInvoke(() =&amp;gt; { orientationTextBlock.Text = (isCompassUsingNegativeZAxis) ? &lt;span &gt;"portrait mode"&lt;/span&gt; : &lt;span &gt;"flat mode"&lt;/span&gt;; });&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;  14:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;7. Compass的校准&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 由于受到外部电磁场的干扰，会使得手机的Compass数据精度降低，在这种情况下，我们必须提示用户远离磁场干扰，并且对Compass进行校准。在Windows Phone 7上，与CurrentValueChanged一样，OS为Compass提供了校准事件处理compass_Calibrate。在OS检测到heading accuracy的绝对值大于20度时，就会触发该事件。在对Compass进行校准时，一般显示一个图片，提示用户对手机进行绕&amp;#8220;8&amp;#8221;字移动。&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&lt;pre &gt;&lt;span &gt;   1:  &lt;/span&gt;&lt;span &gt;void&lt;/span&gt; compass_Calibrate(&lt;span &gt;object&lt;/span&gt; sender, CalibrationEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   3:  &lt;/span&gt;  Dispatcher.BeginInvoke(() =&amp;gt; { calibrationStackPanel.Visibility = Visibility.Visible; });&lt;/pre&gt;&lt;pre&gt;&lt;span &gt;   4:  &lt;/span&gt;  calibrating = &lt;span &gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre &gt;&lt;span &gt;   5:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;8. 实际测试结果分析&lt;/strong&gt;&lt;/p&gt;&lt;/font&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;对三星Focus i917（已升级到Mango，版本号为7720.68）进行Compass测试，获得的结果如下图2所示：&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110292128104517.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Screen Capture" border="0" alt="Screen Capture" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201110/201110292128227964.jpg" width="304" height="504"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;图2：三星Focus i917设备的Compass测试结果&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 进行测试时，手机处于竖屏模式（flat mode），而非横屏模式（portrait mode）。另外，从magnetic heading与true heading的结果来看，这两个数值相同，因此，我猜想：由于受设备的传感器的限制，OS并没有区分地磁南北极与地理南北极，而是把地磁的南北极等同于地理的南北极。&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 希望有HTC设备的朋友们可以测试一下，是否支持Gyro？如果支持的话，从Compass获得的magnetic heading与true heading值是否一致？&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;参考链接：&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;1. MSDN：&lt;a href="http://msdn.microsoft.com/en-us/library/hh202974(v=vs.92).aspx"&gt;&lt;font size="3"&gt;How to: Get Data from the Compass Sensor for Windows Phone&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;2. Wiki：&lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Compass#Magnetic_compass"&gt;&lt;font size="3"&gt;magnetic compass&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; and &lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Gyrocompass"&gt;&lt;font size="3"&gt;gyro compass&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2228876.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/10/29/CompassOnWP7.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/09/29/WindowsPhoneSDK71RTMRelease.html</id><title type="text">Windows Phone SDK 7.1 RTM 发布</title><summary type="text">Windows Phone SDK 7.1 RTM可以下载了。</summary><published>2011-09-28T23:49:00Z</published><updated>2011-09-28T23:49:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/09/29/WindowsPhoneSDK71RTMRelease.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/09/29/WindowsPhoneSDK71RTMRelease.html"/><content type="html">&lt;p&gt;自昨天开始发规模推送Mango，今天又看到Windows Phone SDK 7.1 RTM可以下载了，大家可以去Microsoft Download Center下载了。&lt;/p&gt;&lt;p&gt;地址如下：&lt;/p&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27570"&gt;Windows Phone SDK 7.1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt;&lt;p&gt;&lt;strong&gt;具体内容如下：&lt;/strong&gt;&lt;/p&gt;            &lt;p&gt;&lt;strong&gt;The Windows Phone SDK includes the following&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Microsoft Visual Studio 2010 Express for Windows Phone&lt;/li&gt;&lt;li&gt;Windows Phone Emulator&lt;/li&gt;&lt;li&gt;Windows Phone SDK 7.1 Assemblies&lt;/li&gt;&lt;li&gt;Silverlight 4 SDK and DRT&lt;/li&gt;&lt;li&gt;Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0&lt;/li&gt;&lt;li&gt;Microsoft Expression Blend SDK for Windows Phone 7&lt;/li&gt;&lt;li&gt;Microsoft Expression Blend SDK for Windows Phone OS 7.1&lt;/li&gt;&lt;li&gt;WCF Data Services Client for Window Phone&lt;/li&gt;&lt;li&gt;Microsoft Advertising SDK for Windows Phone&lt;/li&gt;&lt;/ul&gt;            &lt;img alt="Top of page" src="http://i.microsoft.com/download/shared/templates/components/omniDetails/images/Arrow_AnchorLink_Up.png" /&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27570#top"&gt;Top of page&lt;/a&gt;                    &lt;p&gt;&lt;strong&gt;System requirements&lt;/strong&gt;&lt;/p&gt;                            &lt;p&gt;&lt;strong&gt;Supported Operating Systems:&lt;/strong&gt; Windows 7, Windows Vista&lt;/p&gt;                            &lt;ul&gt;&lt;li&gt;Windows&amp;#174; Vista&amp;#174; (x86 and x64) with Service Pack 2 &amp;#8211; all editions except Starter Edition&lt;/li&gt;&lt;li&gt;Windows 7 (x86 and x64) &amp;#8211; all editions except Starter Edition&lt;/li&gt;&lt;li&gt;Installation requires 4 GB of free disk space on the system drive.&lt;/li&gt;&lt;li&gt; 3 GB RAM&lt;/li&gt;&lt;li&gt;Windows Phone Emulator requires a DirectX 10 or above capable graphics card with a WDDM 1.1 driver &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;The Windows Phone SDK 7.1 is compatible with the final version of Visual Studio 2010 SP1.&lt;/strong&gt;&lt;br /&gt;                        &lt;img alt="Top of page" src="http://i.microsoft.com/download/shared/templates/components/omniDetails/images/Arrow_AnchorLink_Up.png" /&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27570#top"&gt;Top of page&lt;/a&gt;                    &lt;p&gt;&lt;strong&gt;Instructions&lt;/strong&gt;&lt;/p&gt;            &lt;p&gt;&lt;strong&gt;If  a pre-release version of the Windows Phone SDK 7.1 (Beta or RC) is  installed on the machine, please uninstall it before installing this  product. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Click on the &lt;strong&gt;vm_web2.exe&lt;/strong&gt; file in the  download section above. This will start the installation of Windows  Phone SDK 7.1 and install necessary components on your computer. &lt;br /&gt;&lt;br /&gt;Please refer to the Release Notes in the download section above for additional details before running setup.&lt;br /&gt;&lt;br /&gt;Note: this release is also available in &lt;a href="http://go.microsoft.com/fwlink/?LinkID=226694"&gt;.iso&lt;/a&gt; format.&lt;br /&gt;&lt;br /&gt;Choose one of the following options for handling downloaded ISO images:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;(Recommended) Write the image file to a blank DVD.&lt;/li&gt;&lt;li&gt;(Alternative) Mount the image file virtually as DVD devices.&lt;/li&gt;&lt;/ul&gt;For more information about these options, see "What are ISO image files and how do I use them?" on the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=95676"&gt;FAQ&lt;/a&gt; page.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 24pt;"&gt;注意：也可以在这里下载离线安装包哦！&lt;/span&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=226694"&gt;&lt;span style="font-size: 24pt;"&gt;.iso&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2195020.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/09/29/WindowsPhoneSDK71RTMRelease.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/09/28/WP7MangoUpdate.html</id><title type="text">图文解说三星focus i917芒果升级</title><summary type="text">图文解说三星Focus i917升级芒果过程</summary><published>2011-09-28T01:31:00Z</published><updated>2011-09-28T01:31:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/09/28/WP7MangoUpdate.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/09/28/WP7MangoUpdate.html"/><content type="html">&lt;p&gt;去年就开始关注WP7，但基本都是在模拟器上。最近看芒果即将面世，Hold不住，淘宝上入手了focus的冲新机。特意要的7004英文原版，那是为了方便地通过推送来升级。配件什么的不咋地，但是机子还好。查看了一下机子，基本没有啥问题，硬件是1.3的版本。一开始也没有注意这个硬件版本，后来才了解说，1.3版本的推送要比1.4的早，真是非常的庆幸。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930242437.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_3623" alt="IMG_3623" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930263908.jpg" border="0" height="325" width="432" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930282597.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_3625" alt="IMG_3625" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930297972.jpg" border="0" height="325" width="432" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;9月26日晚上通过zune，更新到了7008，之后就再也没有更新的提示了。更新之前，我把系统的位置改为美国。更新的提示是：windows phone update， Feb 2011，更新好以后，系统就是7008版本了。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930316727.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="3" alt="3" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930324610.jpg" border="0" height="641" width="595" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;9月27日晚上通过Zune检查更新，还是提示7008是最新版本，论坛上朋友们都说是在准备推送，关闭了更新，所以就没有继续。直到28号早上起来，看到消息说，各家运营商已经开始推送芒果更新（消息来自&lt;a title="http://mango.microsoft.com/windowsphone/en-us/features/update-schedule-world.aspx" href="http://mango.microsoft.com/windowsphone/en-us/features/update-schedule-world.aspx"&gt;http://mango.microsoft.com/windowsphone/en-us/features/update-schedule-world.aspx&lt;/a&gt;）。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930341969.png"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930363723.png" border="0" height="413" width="759" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;但是插上手机，检查更新，还是没有得到芒果更新的提示。在焦急万分的时候，论坛上一个通过插拔网线来获得更新的帖子引起了我的注意，按照里面的方法，在点击检查更新大概4-5秒钟以后，拔掉网线，Zune就会检测到7392的更新了。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930371639.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="4" alt="4" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930381540.jpg" border="0" height="236" width="630" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;之后，插上网线，点击更新，出现了更新提示。之后就是一路的下载、安装和升级。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930409390.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="5" alt="5" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930411733.jpg" border="0" height="484" width="440" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930434600.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="6" alt="6" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930448371.jpg" border="0" height="483" width="465" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;升级完毕以后，系统版本为7392，继续升级。直接点击检查更新还是不会有效，同样需要通过插拔网线来完成系统更新的检测。需要注意的是，插拔的时机很重要，机油们总结出检查更新时间的四分之三处拔掉最好，如果不行就多试验几次。这次我检测到的是7403的升级。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930463746.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="8" alt="8" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930479470.jpg" border="0" height="279" width="918" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;检测到更新以后，就重新插上网线，点击更新，一路的下载、安装和升级。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930497843.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="9" alt="9" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930513774.jpg" border="0" height="480" width="464" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930529988.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="10" alt="10" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930545919.jpg" border="0" height="481" width="435" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;但奇怪的是，这次是直接从7403到7720，并没有经过检测和更新的环节。&lt;/p&gt;          &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930561228.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="11" alt="11" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280930586919.jpg" border="0" height="595" width="670" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;安装完以后，系统重启，查看版本号，果然是7720了。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280931006687.jpg"&gt;&lt;img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="IMG_3638" alt="IMG_3638" src="http://images.cnblogs.com/cnblogs_com/dearsj001/201109/201109280931041308.jpg" border="0" height="502" width="669" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;终于吃到芒果了。有朋友说输入法有中文的么。大家可以去Settings-》System-》Keyboard下选择，有简体中文Qwerty，简体中文的12键盘，简体中文的手写，繁体中文的键盘和手写等可以选择。&lt;/p&gt; &lt;p&gt;祝大家好运！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2193807.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/09/28/WP7MangoUpdate.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dearsj001/archive/2011/06/30/WindowsPhone7SDKBeta2.html</id><title type="text">Windows Phone 7 SDK 7.1 Beta2 发布</title><summary type="text">Windows Phone 7 SDK 7.1 Beta2发布，给出了简要介绍和下载链接。</summary><published>2011-06-29T23:27:00Z</published><updated>2011-06-29T23:27:00Z</updated><author><name>施炯</name><uri>http://www.cnblogs.com/dearsj001/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dearsj001/archive/2011/06/30/WindowsPhone7SDKBeta2.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dearsj001/archive/2011/06/30/WindowsPhone7SDKBeta2.html"/><content type="html">&lt;p&gt;早上看到消息，有Marketplace账号的筒子们注意了，可以去下载芒果的ROM了，一个开发者账号只能更新一个WP7，以下是App hub上的消息：&lt;/p&gt;&lt;p align="left"&gt;来自&lt;span&gt;&lt;a href="http://create.msdn.com/en-US/news/Mango_Beta"&gt;http://create.msdn.com/en-US/news/Mango_Beta&lt;/a&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 关于开发工具的更新，可以去下载中心下载，包括web安装和iso安装，这个你懂的。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26648"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26648&lt;/a&gt;&lt;/p&gt;&lt;p&gt;特别给出iso的链接地址：&lt;a href="http://go.microsoft.com/fwlink/?LinkID=220415"&gt;http://go.microsoft.com/fwlink/?LinkID=220415&lt;/a&gt;，大小为723M。&lt;/p&gt;&lt;p&gt;SDK包括的内容如下：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;Windows Phone SDK 7.1 (Beta2)&lt;br /&gt;Windows Phone Emulator (Beta2)&lt;br /&gt;Windows Phone SDK 7.1 Assemblies (Beta2)&lt;br /&gt;Silverlight 4 SDK and DRT&lt;br /&gt;Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0&lt;br /&gt;Microsoft Expression Blend SDK Preview for Windows Phone 7.1&lt;br /&gt;WCF Data Services Client for Window Phone 7.1&lt;br /&gt;Microsoft Advertising SDK for Windows Phone 7&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;/u&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;对于安装了Windows Phone Developer Tools 7.1 Beta 的筒子们注意，要先卸载以后才能安装Windows Phone Developer Tools 7.1 Beta2。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dearsj001/aggbug/2093979.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dearsj001/archive/2011/06/30/WindowsPhone7SDKBeta2.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
