01,Windows Phone 8 介紹


內容預告:

  • WP8中新的開發平台
  • 應用開發模型
  • WinRT的WP8版本
  • 支持的開發模式
  • WP8開發入門
  • 新功能預覽
  • 用Windows Phone的開發工具
  • 與WP7.X的兼容性

新的WP8硬件:Nokia Lumia 920, 820, HTC 8X, Huiwei W1, Sumsung ATIV S。

新的硬件配置:多核,新的圖形處理器,更大的內存,多分辨率,存儲卡,加密存儲,NFC。

共享Windows內核:Windows8將與WindowsPhone8在系統級別共享多個組件。

共享內核意味着:內核,網絡,圖形,文件系統,多媒體組件是相同的。硬件制造商可以用同樣的驅動工作。WindowsPhone支持多核。穩定、通用的基礎架構可以很容易被擴展。

共享內核不意味着:Windows8與WindowsPhone8用同樣的API開發(盡管很多功能是通用的)

WP8開發API支持:用WP7.1、WP8的.NET和WinPRTAPI開發托管的App。用WinPRT和Win32開發本地的App。用WP7.1的XNA開發游戲。用DirectX和Direct3D開發游戲。

基於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。

選擇.NET API 還是 WinPRT? 因為兩者有重疊,不同的是一個是托管代碼,一個是本地代碼:

如果是想跨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。

用托管代碼做XNA游戲:可以像WP7.1一樣XNA開發游戲,用C#/VB寫邏輯,但只能用WP7.1的.NET API。

純Direct3D App:Direct3D App完全用本地代碼寫,而且只能用Direct3D做UI,可以和PC版本共享基本代碼,可以用WinPRT API,可以方便地使用一些計算引擎,圖形庫和C++的API類庫。

Direct3D和XAML集成:也可以用XAML做UI,然后嵌入Direct3D的類庫。

XAML/托管+本地:托管App可以在托管XAML工程中引用C++的DLL或WinPRT工程。Win32 API支持Winsock和文件IO函數來移植已有的本地代碼。可以通過本地代碼實現高性能的計算。

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,像九宮格的。

鎖屏信息:可以將自己的App注冊成為鎖屏信息的提供者,用戶可以選擇哪5個App的Icon和計數,也可以選擇哪1個App的狀態顯示在鎖屏上,也可以選擇哪1個App做為鎖屏背景提供者。

新的啟動器:啟動器(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種屏幕分辨率:


照相機和照片:可用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方式完全不同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM