内容预告:
- WP8中新的开发平台
- 应用开发模型
- WinRT的WP8版本
- 支持的开发模式
- WP8开发入门
- 新功能预览
- 用Windows Phone的开发工具
- 与WP7.X的兼容性
新的WP8硬件:Nokia Lumia 920, 820, HTC 8X, Huiwei W1, Sumsung ATIV S。
新的硬件配置:多核,新的图形处理器,更大的内存,多分辨率,存储卡,加密存储,NFC。
共享Windows内核:Windows8将与WindowsPhone8在系统级别共享多个组件。
![](https://pic002.cnblogs.com/images/2012/38071/2012113011515741.png)
共享内核意味着:内核,网络,图形,文件系统,多媒体组件是相同的。硬件制造商可以用同样的驱动工作。WindowsPhone支持多核。稳定、通用的基础架构可以很容易被扩展。
共享内核不意味着:Windows8与WindowsPhone8用同样的API开发(尽管很多功能是通用的)
WP8开发API支持:用WP7.1、WP8的.NET和WinPRTAPI开发托管的App。用WinPRT和Win32开发本地的App。用WP7.1的XNA开发游戏。用DirectX和Direct3D开发游戏。
![](https://pic002.cnblogs.com/images/2012/38071/2012113011511810.png)
基于WindowsPhone的.NET API: 包括所有WP7.1的API,所有的类都来自System和Microsoft.Phone这两个命名空间。新的类是
•Microsoft.Phone.Wallet
•Microsoft.Phone.Tasks.ShareMediaTask
•Microsoft.Phone.Tasks.MapsTask
•Microsoft.Phone.Storage.ExternalStorage
•Microsoft.Phone.Networking.Voip
。。。
WindowsPhone Runtime API:WindowsPhone Runtime是WinRT的子集,外加一些手机特有类(TTS,VOIP等)。WinPRT是用C++实现的,然后映射到C#、VB、C++,
不支持HTML5/JS。
![](https://pic002.cnblogs.com/images/2012/38071/2012113011554413.png)
选择.NET API 还是 WinPRT? 因为两者有重叠,不同的是一个是托管代码,一个是本地代码:
![](https://pic002.cnblogs.com/images/2012/38071/2012113012012284.png)
如果是想跨WP7.X和WP8,那么显然用.NET API。
如果是想跨WP8和Win8,显然就用WinPRT API。
Win32和COM API:除了上述两种API,还能用一些Win32的API:
- Winsock for low-level networking
- Camera APIs for native code apps
- COM APIs such as CoInitializeEx, CoTaskMemAlloc, CoTaskMemFree, CreateFile2, ReadFile, WriteFile, HeapAlloc, CreateMutexExW, WaitForSingleObjectW
本地代码开发感兴趣的码农们可以用这些,托管应用如果要用这些API得引用一个本地的工程到解决方案。
在托管代码中XAML中做UI:大多数App中都是用XAML做UI,C#/VB写逻辑,然后调用.NET API和WinPRT API。
![](https://pic002.cnblogs.com/images/2012/38071/2012113012134839.png)
用托管代码做XNA游戏:可以像WP7.1一样XNA开发游戏,用C#/VB写逻辑,但只能用WP7.1的.NET API。
![](https://pic002.cnblogs.com/images/2012/38071/2012113012585026.png)
纯Direct3D App:Direct3D App完全用本地代码写,而且只能用Direct3D做UI,可以和PC版本共享基本代码,可以用WinPRT API,可以方便地使用一些计算引擎,图形库和C++的API类库。
![](https://pic002.cnblogs.com/images/2012/38071/2012113012590635.png)
Direct3D和XAML集成:也可以用XAML做UI,然后嵌入Direct3D的类库。
![](https://pic002.cnblogs.com/images/2012/38071/2012113012591978.png)
XAML/托管+本地:托管App可以在托管XAML工程中引用C++的DLL或WinPRT工程。Win32 API支持Winsock和文件IO函数来移植已有的本地代码。可以通过本地代码实现高性能的计算。
![](https://pic002.cnblogs.com/images/2012/38071/2012113012594431.png)
HTML5开发:WP8不会像Win8那样支持HTML5/JS,但是WP8有IE10,可以用WebBrowser控件,可以把HTML5的代码放在WebBrowser里执行。
开发工具:http://dev.windowsphone.com
开发环境:软件/Windows8 64bit,硬件/4G内存,64bit主板,模拟器需要/I3以上,Hyper-V,SLAT。
开发账户:下载SDK不需要账户,但解锁手机和提交APP需要。可以通过MSDN订阅账户/学生DreamSpark订阅/或者99刀自己买 获得。
3种Tile:Flip,像WP7.X可前后翻滚的。Iconic,清爽型的。Cycle,像九宫格的。
![](https://pic002.cnblogs.com/images/2012/38071/2012113014133822.png)
锁屏信息:可以将自己的App注册成为锁屏信息的提供者,用户可以选择哪5个App的Icon和计数,也可以选择哪1个App的状态显示在锁屏上,也可以选择哪1个App做为锁屏背景提供者。
![](https://pic002.cnblogs.com/images/2012/38071/2012113014135621.png)
新的启动器:启动器(Launcher)帮助用户照相、选择联系人,发邮件,发短信等等。
- SaveAppointmentTask
- ShareMediaTask
- MapDownloaderTask
- MapUpdaterTask
- MapsTask
- MapsDirectionsTask
地图:Bing Map控件继续可用,但是推荐用Nokia地图控件,新功能包括矢量渲染,4种制图模式,白天/黑夜模式,显示地标,步行路径查询。
定位和定位跟踪:WP7.1的定位API继续支持,在增加了WinPRT中增加了定位的API。可以在后台运行,像”轨迹记录","全程导航"这种场景下可用。
语音:语音控制,可以执行在你的App中预置的命令。语音识别和TTS,可以用语音输入或将输入转换成语音。
电子钱包:可用在信用卡,借记卡,会员卡,支持NFC。
UI控件:LongListSelector有Flat List、Group List、Jump List、Formerly几种展现形式。
3种屏幕分辨率:
![](https://pic002.cnblogs.com/images/2012/38071/2012113014145093.png)
照相机和照片:可用API控制焦距,可以用Picture.GetPreviewImage返回thumbnail图片,可以与其他图片编辑App注册共享关系,后台上传,用API调节ISO,白平衡,曝光。
多媒体:可以用API删除和保存音乐。WP8会为每个保存的图片创建两个缩略图,小的可以用thumbnail获取,和原图大小一样的用thumbnail 获取。在后台音乐播放状态变化时返回PlayStateChangedEventArgs。
VoIP和视频聊天:
蓝牙和NFC:蓝牙API允许App到App通信,App到其他设备通信。NFC API支持能过蓝牙建立App到App的连接,建立Wi-Fi,蓝牙,或者两个设备间的Wi-Fi直连,通过NFC发送数据,通过NFC Tag与手机交互。
网络加强:支持Sockets,有Windows.Networking.Sockets和System.Net.Sockets及Win32的WinSock API。支持IPV6。
存储卡:可以用Microsoft.Phone.Storage从SD卡中读文件,可以用SD卡扩展私人文件(如视频,图片,音乐),可以在SD中安装App。
自定义联系人组:可以为App创建一个专属的联系人组,可以通过API创建,更新,删除和查询专属联系人。同步联系人到云端。
文件和协议关联:可以注册一个文件关联,当在邮件或浏览器或SharePoint遇到注册的类型时会用你的App打开,一个App也可以通过注册类型发送一个文件打开另一个App。注册协议,当另一个App打开一个特殊的URI时:比如 myprotocol:/ShowProducts?CategoryID=aea6ae1f ,将会打开另一个App并同时传参数过去。
App内支付:购买数字财产,如游戏等级,游戏装备,地图服务,电影优惠卷,数字杂志,电子书等。
企业级App部署:可通过微软的工具,内部分发,或者第三方安装的方式部署,企业可以删除App或对App发布指令。
本地化和国际化:WP8支持从右向左书写的语言。但有时从右向左的语言可能同时包括从左向右的文本,比如一个外来语,可以用Run控件来包含。
更快的运行:在WP8中托管App会被NEGN成本地代码,所以能启动和运行的更快。在VS里写代码时,不会编译成本地代码,但是编译器机器无关的CIL二进制文件。当提交App时,CIL文件会被优化成优化过的依赖机器的中间语言,叫MDIL。当用户下载了你的App时,已经被JIT到本地镜象代码了。
连接手机:WP7.1时,必须安装Zune才能同步音乐等文件。WP8只需要USB连接就行了。
注册手机:部署应用到手机之前需要把手机注册成开发手机,一个用户可以注册3个手机,学生账户只能注册一个手机。
部署应用:用VisualStudio调试时会直接部署,也可以用SDK自带的部署工具。一个手机只能部署10个非上传到商店的应用。
调试:在模拟器上不会生成本地代码,在Device上可以用Ctrl+F5调试,用Alt+F1性能分析(会生成本地代码)。
模拟器:模拟器以Hyper-V的方式运行,是SDK自带的,可以模拟位置,横竖向,锁屏,解锁,网络制式(2G,3G,4G,WiFi)和连通性。模拟器不能测试性能,只能测功能,可以用鼠标控制,支持多点触摸模拟,可以用物理键盘输入,用PgUp/PgDn切换输入方式。可以模拟照相机,但只是返回一个简单的图片。支持截屏(真机上可以用电源+Home键截屏)。
兼容性:一般的WP7应用都不用修改就可以在WP8上运行,但有些情况下则不行。有些代码在WP7和WP8上的表现不一样。比如Assembly.GetType是在不同的mscorlib.dll中实现。有些机制在两者上也不一同,比如WP7.1和WP8的GC方式完全不同。