开发Windows Phone应用程序需要安装哪些组件?
2. Windows Phone开发的学习资源有哪些?
3. 我要去哪里提出对Windows Phone开发平台的建议?
4. Windows Phone主要有哪些通信方式?
5. Windows Phone访问REST service支持哪些验证方式?
6. 我能否启动一个后台进程?
7. 怎样在Windows Phone不同页面间传值?
8. Windows Phone提供了哪些类型的推送通知服务?
9. 我能否开发一个系统组件?
10. 如何在Windows Phone模拟器中模拟多点触摸?
11. 在程序运行时怎样防止WP7自动锁屏?
12. 如何设置手机的横竖显示方向?
13. 如何隐藏System Tray?
14. OnNavigatedTo和OnNavigatedFrom的区别是什么?
15. 如何动态修改 shell:ApplicationBarIconButton显示图片?
16. 如何使应用在手机锁定状态仍可以运行和震动?
17. 如何使手机震动? 如何使在震动的手机停止震动?
18. 如何使用WP7的收音机?
19. 如何使用CameraCaptureTask进行图像获取?
20. XNA中如何弹出带有按钮处理事件的消息?
21. 手势有哪些基本操作(XNA)?
22. XNA支持哪些手势?
23. 出现Invalid attribute value controls:LongListSelector for property TargetType这个错误的可能原因是什么?
Answers:
1. 开发Windows Phone应用程序需要安装哪些组件?
您只要安装Windows Phone SDK 7.1就已经包含最基本的windows phone开发所需工具:
· Microsoft Visual Studio 2010 Express for Windows Phone
· Windows Phone Emulator
· Windows Phone SDK 7.1 Assemblies
· Silverlight 4 SDK and DRT
· Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0
· Microsoft Expression Blend SDK for Windows Phone 7
· Microsoft Expression Blend SDK for Windows Phone OS 7.1
· WCF Data Services Client for Window Phone
· Microsoft Advertising SDK for Windows Phone
可以选择性安装 Silverlight for Windows Phone Toolkit,其中提供了很多可直接使用的windows phone控件。
如果想要方便程序界面设计,推荐安装Expression Blend 4。
2. Windows Phone开发的学习资源有哪些?
· 我们推荐你从portal开始:
http://msdn.microsoft.com/zh-cn/ff380145
http://create.msdn.com/en-US/
· 免费在线培训课程
WP7: http://msdn.microsoft.com/en-us/wp7trainingcourse.aspx
Mango: http://msdn.microsoft.com/en-US/WP7MangoTrainingCourse
· MSDN文档
http://msdn.microsoft.com/zh-cn/library/ff402535.aspx
· 开源代码实例
http://msdn.microsoft.com/zh-cn/library/ff431744.aspx
· Programming Windows Phone 7免费电子书
http://blogs.msdn.com/b/microsoft_press/archive/2010/10/28/free-ebook-programming-windows-phone-7-by-charles-petzold.aspx
3. 我要去哪里提出对Windows Phone开发平台的建议?
如果您需要的一个功能在目前版本的Windows Phone不支持,可以去WPDev 反馈网站提交您的建议和意见。同时您也可以对已提交的建议进行投票,如果有足够多的人要求添加该功能,在未来的某个Windows Phone版本中就很可能实现了。
4. Windows Phone主要有哪些通信方式?
Windows Phone支持传统的电话,短信,以及Email通信,但是你的程序无法直接控制电话短信,只能够通过PhoneCallTask,SmsComposeTask,以及EmailComposeTask间接通信。你可以使用这些task自动填充短信以及邮件内容,但无法强制用户发送短信和邮件,只有用户确认了才能发送。
Windows Phone也支持部分PC上的通信方式。
· HTTP
可以使用WebClient或者HttpWebRequest访问REST service。
· SOAP 1.1
可以访问支持SOAP 1.1的SOAP service,例如使用BasicHttpBinding的WCF service。请注意大多数手机,例如iPhone和Android,都不支持SOAP(虽然有第三方类库),所以我们推荐尽量使用REST。
· REST
与服务器通信我们推荐使用REST service,而不是短信和邮件,因为REST service最通用,你可以在非手机设备上(例如今后会出现支持Windows 8的平板电脑)使用同样的service。你的service可以部署在任何服务器上,只需要该服务器能在internet上访问。例如,你可以将服务部署在Windows Azure云端。
· Socket
WP7.1提供了部分socket的支持,有关详细信息请参考Windows Phone Socket 。
Socket适合于对性能要求高的场合,因为TCP相比较HTTP快一些。
5. Windows Phone访问REST service支持哪些验证方式?
Windows Phone支持Basic Authentication和OAuth两种验证方式。
· Basic Authentication
在简单的场合下,你可以使用basic authentication。请注意使用SSL加密通信。使用Basic Authentication的方式和普通的Silverlight程序是一样的,请参考
Windows Phone 7: Basic Authentication over HTTPS。
· OAuth
使用OAuth可以使你的服务被第三方客户端访问,例如Windows Live Connect,Windows Azure ACS,Facebook,Google API,都支持OAuth。使用OAuth的方法,请参考
OAuth2 and OData Service in a Windows Phone 7 app 。
6. 我能否启动一个后台进程?
Windows Phone强调用户体验,强调电池使用效率,因此不支持后台进程。但是考虑到很多程序确实需要在后台做一些事,在WP7.1中提供了后台代理的功能。
使用后台代理,你可以要求系统在你的程序不处于运行状态时执行某些任务,但是系统不保证任务的优先级,若是多个程序都申请要执行后台任务,有可能你的任务必须等到其它程序申请的某个任务完成后才能执行。
7. 怎样在Windows Phone不同页面间传值?
Windows Phone页面间传值主要有三种方式:
· Query String
例如URL定为/SecondPage.xaml?id=1,然后在SecondPage中通过NavigationContext.QueryString[“id”]取得对应的值。如果有多个属性,也可以通过&符号连接多个属性。如:/SecondPage.xaml?Name=MyName&Amount=100。注意所有的query string必须是string,如果是int之类的数值必须作类型转换,不能使用复杂类型。
· 全局变量
一个常见的做法是在App中定义一个属性,例如MyVariable。然后你可以通过(Application.Current as App).MyVariable的方式访问那个属性,读写均可。
· 在当前页面中定义一个属性,在SecondPage中重写OnNavigatedFrom,然后判断e.Content的类型是不是之前的那个页面,如果是,就做个类型转换,并访问对应的属性。例如假设从FirstPage转到SecondPage,可以在SecondPage的OnNavigatedFrom中写
if (e.Content is FirstPage)
{
var v = (e.Content as FirstPage).SomeProperty;
}
· Raw
推送一个二进制数据(在.NET平台上就是byte array)至手机。你的手机应用程序得到数据后,可以在应用程序内部进行处理并显示,但是不会涉及到任何tile和toast。
· Tile
a. Single tile:这是tile的一种,指的是单纯地操作应用程序的main tile。Service push一条消息至手机,这条消息可以包括一幅画,一句话,还有一个数。手机收到该消息后,如果用户有选择将对应的应用程序pin到主页上,就会更新应用程序的main tile。
b. Multi tile:和single tile不同,它用于更新应用程序的secondary tile。你的程序可以提供一个功能,在主页上添加上不止一个tile。每个tile对应程序的一个页面。多个tile也可以对应同样的页面,使用query string区别表示。现在,service push消息时,会多包含一个URI信息,也就是对应的页面及查询字符串。当手机接收到该消息时,会比对每个secondary tile的URI,如果对应的页面和查询字符串都匹配,就会更新tile。
6.关于手机费流量的问题
Windows Phone手机主要是联系人跟邮件要经常同步,比较费流量(当然不排除还有其他原因,在这里只是点出一些问题,给建议),当你不上网时,把data connection(网络连接)关闭(“Settings(设置)”-->“cellular(移动电话)”-->“Data connection(数据连接)”)