Windows Phone 7 智慧型手機應用程式開發總覽
摘要
Windows Phone 7 是 Microsoft 推出的全新智慧型手機作業系統,不但具有新穎的使用者介面,也支援整合當紅的社交網站與微網誌,內建搜尋功能,LBS (Location-Based Service) 適地性服務,視訊與音樂播放功能,先進而且具高度生產力的遊戲開發支援,以及多點觸控控制等等,是 Microsoft 逐鹿智慧型手機巿場的重要先鋒。在這一篇文章中我們將要為大家介紹開發 Windows Phone 7 智慧型手機應用程式的基本知識與相關工具,開啟開發 Windows Phone 7 應用程式的大門。
[環境安裝]
欲開發 Microsoft 最新的 Windows Phone 7 智慧型手機應用程式,您必須先下載並安裝 Windows Phone Developer Tools 套件,再利用 Windows Phone Developer Tools 套件提供的 Visual Studio 2010 Express 進行開發 Windows Phone 7 智慧型手機應用程式的工作,將開發妥的應用程式部署到 Windows Phone 模擬器進行測試,如果您想要開發智慧型手機的遊戲程式,也可以利用 Microsoft Expression Blend for Windows Phone 或 XNA Game Studio 發展 2D 與 3D 的遊戲程式。請注意 Windows Phone Developer Tools 套件只能安裝在 Windows Vista SP2 或 Windows 7 電腦,而且皆不可以是簡易版 (Starter Edition)。除此之外,欲利用 Windows Phone Developer Tools 套件提供的 XNA Game Studio 4.0 發展遊戲程式的程式設計師請特別注意,Windows Phone Developer Tools 套件不支援安裝在任何的虛擬機器上,同時電腦配備的顯示卡必須符合 DirectX 10 版定義的規格,並配備 WDDM 1.1 版的驅動程式。
Windows Phone 7 的硬體支援
Windows Phone 7 的硬體在很多地方都有別於之前的系統,包括 800 x 480 或 480 x 320 螢幕解析度,支援多點觸控,內建 A-GPS 衞星定位系統 (反應速度更快的衞星定位系統),G-Sensor (Accelerometer),電子羅盤感測器,光源感測器,以及不需要直接接觸就可以偵測到附近物體的 Proximity Sensor。
Windows Phone 7 智慧型手機支援最少 500 萬畫素的數位相機,內建 Codec 與多媒體影音播放功能,最少 256MB 的 RAM 與最少 8GB 的快閃記憶體,GPU (圖形處理器),ARMv7 Cortex/Scorpion 或更佳的處理器,以及 Back、Start、Search 三個硬體按鍵。
Windows Phone 7 的軟體支援
Microsoft 最新推出的 Windows Phone 7 智慧型手機主要的訴求對象不止是一般的普羅大眾,還包括為數眾多的企業用戶,所以在軟體支援方面加入了對雲端服務的支援。圖1所示即為 Windows Phone 7 的軟體支援,上方顯示的是 Runtime 和工具,下方顯示的是雲端相關的服務,兩者構成開發 Windows Phone 7 應用程式的支援,以及應用程式執行時期的支援。
圖1:Windows Phone 7 的軟體支援
從圖1 可以看出,開發 Windows Phone 7 應用程式的主要工具除了可以依靠傳統的 Visual Studio 2010 Express for Windows Phone 以外,還可以利用 Expression Blend for Windows Phone,不管使用的是那一種工具,都支援將開發妥的應用程式部署到具模擬 GPU (圖形處理器 - Graphic Processing Unit) 能力的 Windows Phone 7 模擬器進行測試。
使用 Visual Studio 2010 Express for Windows Phone 可以開發以 Silverlight Framework 為基礎的應用程式,也可以開發以 XNA Framework 為基礎的應用程式,而且支援應用程式偵錯與封裝。使用 Expression Blend for Windows Phone 只能開發以 Silverlight Framework 為基礎的應用程式,允許 Silverlight 應用程式設計師以熟知的程式開發經驗開發 Windows Phone 7 應用程式。
除了 Visual Studio 2010 Express for Windows Phone 與 Expression Blend for Windows Phone 以外,欲開發 Windows Phone 7 遊戲程式的程式設計師還可以利用 XNA Game Studio 4.0 設計可以適用於 Microsoft Windows、Microsoft Xbox 360、Microsoft Zune、與 Windows Phone 7 的遊戲程式。透過 XNA Game Studio 的幫助,Visual Studio 2010 Express for Windows Phone 就可以利用 XNA Framework 進行開發遊戲程式的工作。當然,Microsoft 在提供開發 Windows Phone 7 應用程式的工具的同時,也提供了相關的說明文件,教學文件,論壇,部落格,技術網站,以及豐富的範例程式,協助程式設計師解決開發 Windows Phone 7 應用程式的種種問題。
在支援 Windows Phone 7 應用程式開發的 Framework 方面,Windows Phone 7 提供了兩種 Framework,分別是 Silverlight Framework 與 XNA Framework。Silverlight Framework 是以 XAML 文件為基礎的應用程式設計概念,透過事件驅動機制的幫助,提供與開發 Windows 應用程式和 Silverlight 應用程式相同的程式開發體驗。XNA Framework 主要的目的則是用來支援以迴圈為基礎的遊戲程式,意即利用迴圈不斷地更新畫面顯示的內容,顯示流暢的遊戲效果。
Silverlight Framework 和 XNA Framework 都是架構在 NET 平台上的應用程式開發架構,能夠有效率地協助程式設計師發展安全的智慧型手機應用程式,而且程式設計師只要稍微修改現有的 Silverlight 應用程式或 XNA 應用程式,例如修改螢幕的高度和寬度,並加入智慧型手機特有的感測器相關的功能,就可以將 Silverlight 應用程式或 XNA 應用程式移植到 Windows Phone 7 上執行。
使用 Silverlight Framework 來開發 Windows Phone 7 應用程式類似設計 Silverlight 應用程式,以 Silverlight Framework 為基礎的 Windows Phone 7 應用程式是由一堆的 Page (繼承自 PhoneApplicationPage 類別的衍生類別) 組成的,每一個 Page 是一個副檔名為 .XAML 的文件,代表一個操作畫面,程式設計師可以利用 Visual Studio 2010 Express for Windows Phone 或是 Expression Blend for Windows Phone 來設計 Page 的使用者介面。XNA Framework 和 Silverlight Framework 不一樣的地方在於 XNA Framework 主要的用途在支援開發遊戲程式,提供 2D/3D 的動畫,音效,及各種遊戲相關的功能,協助有志於開發遊戲程式的企業或個人發展 Windows Phone、Xbox 360、Zune 播放器、以及 Windows 7 平台的遊戲程式。
在支援應用程式開發方面,程式設計師可以利用 Framework 提供的功能控制 Windows Phone 7 的多點觸控螢幕,感測器,音效裝置,以及麥克風等硬體,或是播放聲音與影片。
在檔案處理方面 Windows Phone 7 應用程式只能存取位於隔離儲存區 (Isolated Storage) 中的檔案,無法存取隔離儲存區以外的任何檔案,避免惡意程式危害到其他應用程式或 Windows Phone 7 本身的運作。
Windows Phone 7 支援的 Location 功能可以和雲端服務提供的 Location 服務整合,協助應用程式查詢裝置的實際位置,在裝置位置改變時得到通知,判斷裝置移動的方向和速度,或是計算兩點之間的距離。
支援上述種種功能的底層是一組功能完整的 Framework,如圖2 所示,位於最底層的 Common Base Class Library 提供了 Microsoft .NET 平台的基本功能,也是 Silverlight Framework 與 XNA Framework 的基礎。
圖2:支援開發 Windows Phone 7 應用程式的 Framework
除了內建在 Windows Phone 7 智慧型手機的 Framework 以外,Windows Phone 7 應用程式也可以使用到網際網路的雲端服務,包括 Windows Azure、Xbox LIVE 服務、Notification 服務、Location 服務、以及其他各種協力廠商提供的 Web 服務和 WCF 服務,甚至是 REST 服務 (Representational State Transfer) 等先進的技術,為 Windows Phone 7 應用程式提供更豐富的功能支援。透過雲端服務的幫助,能夠讓使用者在使用不同的電腦裝置時都可以存取到共同的資料,享受相同的服務,是支援發展新一代的行動運算解決方案的重要基礎。
透過雲端服務的幫助,程式設計師不但能夠使用到超越 Windows Phone 7 本身內建的功能以外的更多功能,而且雲端服務是 24 小時不間斷的服務,不會因為智慧型手機的電池電力耗盡而無法取得服務。
[說明]
Xbox Live 是由微軟公司所開發的多用戶線上遊戲與數位媒體配送服務平台,最初是 2002 年 11 月為 Xbox 遊戲機平台推出的服務,之後更新成可以支援 Xbox 360 平台,Microsoft Zune 可攜式媒體播放器,與 Microsoft Windows 平台,最新的版本已經可以支援 Windows Phone 7 智慧型手機。透過 Xbox Live 服務的幫助,使用者不管使用的是個人電腦,Xbox/Xbox 360 遊戲機,Zune 播放器,或是 Windows Phone 智慧型手機,都可以利用相同的操作介面方便地取用共用的資訊和服務。從發展應用程式的角度來看,Xbox Live 也是支援發展跨越多種平台與裝置的遊戲程式的重要服務。
Microsoft 提供的雲端服務中,Notification 服務能夠協助 Windows Phone 7 應用程式以訂閱的方式收到欲處理的事件,節省定時詢問特定的資料或狀態耗費的電力。Location 服務能夠利用 Wi-Fi、Cellular、和 GPS 等資料,為 Windows Phone 7 應用程式提供定位相關的功能。另外,Identity 服務能夠提供身份驗証功能,Feed 服務能夠提供資料餵入服務,Social 服務能夠提供社群服務,而 Map 服務則可以提供地圖與導覽服務。
Windows Phone 7 應用程式開發完成後,程式設計師可以利用 Portal 服務將開發好的應用程式發佈到手機線上軟體商店 (即 Marketplace),讓使用者購買和使用。
在上傳 Windows Phone 7 應用程式到手機線上軟體商店之前,您必須先使用 Windows Live 帳號登入到手機線上軟體商店並進入註冊,註冊完成後就可以利用 Portal 服務提供的功能將開發好的應用程式上傳到線上軟體商店。程式設計師必須將欲上傳的應用程式準備成 .xap 格式的壓縮檔再進行上傳,上傳成功之後可以查詢應用程式的認証狀態,並在應用程式通過 Portal 服務的認証之後收到認証信。通過認証的應用程式將會以程式設計師訂立販售價格發佈到線上軟體商店供使用者購買和下載。如果程式設計師修正應用程式的錯誤,為應用程式添加新功能,或是另外開發新的應用程式,都需要重覆相同的應用程式認証程序,才能將新的應用程式或是修改過的應用程式發佈到線上軟體商店。
線上軟體商店除了能夠提供程式設計師進行應用程式的銷售以外,還有提供 Trial API,協助程式設計師開發試用版的應用程式供使用者下載試用。除此之外,線上軟體商店也提供完整的銷售報告,使用者的回饋意見,使用者對應用程式的使用意見,或是使用者反應的應用程式錯誤等重要資訊,供程式設計師參考。
Silverlight Framework vs XNA Framework
了解了 Windows Phone 7 的硬體支援和軟體支援之後,在建立 Windows Phone 7 應用程式專案的時候,程式設計師必須面對選取 Silverlight Framework 或選取 XNA Framework 做為應用程式開發基礎的抉擇。從圖3 所示的 Framework 架構功能圖可以看出,Silverlight Framework 與 XNA Framework 的底層是一組共同的服務,提供感測器相關的功能,Location 功能,Live 服務功能,網路通訊功能,XNA 的音效 API,以及 XNA 的媒體 API,而位於這一組共用服務底下的則是 .NET Compact Framework,由 .NET Compact Framework 提供基礎程式開發協助,包括資料型態,XML 文件處理,LINQ 語言整合查詢,Isolated Storage 隔離儲存區,WCF 服務,與序列化等功能。
圖3:Silverlight Framework 與 XNA Framework 的架構與功能
從圖3 可以看出 Silverlight Framework 和 XNA Framework 具有相同的本質,差別在於 Silverlight Framework 和 XNA Framework 支援的是不同類型的應用程式。Silverlight Framework 支援開發一般的 Windows Phone 7 應用程式,提供程式設計師設計應用程式需要的控制項以及顯示功能,當然也支援動畫功能供應用程式使用,而 XNA Framework 主要的用途是支援程式設計師設計遊戲相關的程式,包括畫面連續更新顯示的協助,Content Pipeline 遊戲內容處理功能,以及 2D/3D 的圖形顯示。
[說明]
XNA Framework 的 Content Pipeline 是一種製作遊戲內容 (包括 Texture、Sprite、Mesh、Effect、Font、Music、音效、Level 設定、和角色的特質)的功能,協助程式設計師在遊戲設計的階段準備遊戲程式執行時期需要用到的所有遊戲內容,避免遊戲程式執行的時候為了將各種不同的資料格式轉換成遊戲支援的內容格式而影響遊戲執行的速度。
圖4 所示即為 XNA 的 Content Pipeline 功能處理遊戲內容的過程:
圖4:XNA Content Pipeline 功能處理遊戲內容的過程
由圖4 的內容可以看出,不同格式的遊戲內容格式經由 Importer 匯入之後,會轉換成 Content DOM (Document Object Model) 能夠表示的物件格式,也就是 Processor 能夠處理的格式,Content DOM 表示的物件經由 Processor 處理之後,透過 Content Compiler 編譯成 .XNB (XNA Binary File 的縮寫) 格式的內容,以便被 Windows、Xbox 360、或 Windows Phone 7 平台中執行的遊戲載入使用。
[提示]
XNA 的 Content Pipeline 功能允許程式設計師擴充其內建的功能,以處理新興的遊戲內容格式,或是產出自訂的輸出格式。
表1 列有 Silverlight Framework 和 XNA Framework 的功能特性以及適用的應用程式類型:
表1:Silverlight Framework 和 XNA Framework 的功能特性以及適用的應用程式類型
Silverlight Framework 的功能特性 | XNA Framework 的功能特性 |
適合開發以 XAML 文件為基礎的事件驅動應用程式 | 適合開發高效能的遊戲 |
適合應用 Silverlight 網頁開發經驗到 Windows Phone 7 應用程式開發 | 適合快速開發 2D 和 3D 的遊戲 |
提供控制項供應用程式開發使用 | 提供 Content Pipeline 功能,協助應用程式處理遊戲程式執行時期欲使用的遊戲內容 |
支援影音媒體播放功能 | |
支援提供瀏覽網頁功能的 WebBrowser 控制項,支援顯示高互動地圖的 Bing Map Silverlight 控制項,支援開發全景式瀏覽功能的 Panoramic 控制項,以及支援以軸心的方式來回瀏覽應用程式頁面或資料的 Pivot 控制項。 |
[提示]
選擇開發 Windows Phone 7 應用程式欲使用的 Framework 之後並未限制應用程式不能使用另外的 Framework 提供的功能,也就是說選擇 Silverlight Framework 做為應用程式發展基礎的應用程式還是能夠透過參考組件的方式使用到 XNA Framework 提供的功能,反之,選擇 XNA Framework 做為應用程式發展基礎的應用程式也同樣能夠透過參考組件的方式使用到 Silverlight Framework 提供的功能。
建立 Windows Phone 7 應用程式專案
欲使用 Visual Studio 2010 Express for Windows Phone 建立 Windows Phone 7 應用程式,您可以啟動 Visual Studio 2010 Express for Windows Phone,執行 [File | New Project] 功能,螢幕上就會出現如圖5 的畫面,於左方視窗的 [Visual C#] 項目下可以看到 Visual Studio 2010 Express for Windows Phone 支援的兩種應用程式型態,分別是 Silverlight for Window Phone 和 XNA Game Studio 4.0。
圖5:使用 Visual Studio 2010 Express for Windows Phone 建立專案的畫面
選擇 [Visual C#] 項目下的 Silverlight for Windows Phone,於中間的視窗選擇 [Windows Phone Application] 專案型態,然後按下 [OK] 鍵,就可以建立以 Silverlight Framework 為基礎的 Windows Phone 7 應用程式,專案建立成功後您就可以看到類似圖6 的結果畫面。請注意 [Solution Explorer] 視窗中名稱為 MainPage.xaml 的檔案代表應用程式的主畫面,您可以直接從 [Toolbox] 視窗將控制項拖曳到 MainPage.xaml 放置,設計應用程式的操作畫面,而編輯應用程式操作畫面的結果會反應在 MainPage.xaml 檔案的原始檔編輯畫面中,而為操作畫面上的控制項撰寫事件處理程序時,程式碼會被自動加入到 MainPage.xaml.cs 檔案中,整體的應用程式開發經驗對具備 Windows Form 應用程式開發,或是 Silverlight 應用程式開發經驗的程式設計師而言應該不陌生。
圖6:以 Silverlight Framework 為基礎的 Windows Phone 7 應用程式的專案內容
欲使用 Visual Studio 2010 Express for Windows Phone 發展遊戲的程式設計師可以在執行 [File | New Project] 功能後,選擇左方視窗 [Visual C#] 項目下的 [XNA Game Studio 4.0] 專案類型,就可以從右方視窗看到數種不同的遊戲專案型態,包括 Windows Phone 7 遊戲相關的專案型態,Windows 平台遊戲相關的專案型態,Xbox 360 遊戲相關的專案型態,自訂 Content Pipeline 功能的 Content Pipeline Extension Lib 專案型態,以及用來管理遊戲內容的 Empty Content Project (4.0) 專案型態,如圖7 所示:
圖7:Visual Studio 2010 Express for Windows Phone 支援遊戲開發的專案型態
選擇左方視窗 [Visual C#] 項目底下的 [XNA Game Studio 4.0] 專案類型,於中間的視窗選擇 [Windows Phone Game (4.0)] 專案型態,然後按下 [OK] 鍵,就可以建立以 XNA Framework 為基礎的 Windows Phone 7 遊戲程式。專案建立成功後您可以於 [Solution Explorer] 視窗中看到兩個專案,其中專案名稱為 [專案名稱Content] 的專案是負責管理遊戲內容的專案,另外一個則是遊戲程式專案。如圖8 所示:
圖8:以 XNA Framework 為基礎的 Windows Phone 7 遊戲程式專案的內容
您可以開啟遊戲程式專案中名稱為 Game1.cs 的檔案,這個檔案是控制遊戲的中樞,其中名稱為 Update 的方法負責執行控制遊戲進行的邏輯,包括管理遊戲的狀態和處理使用者輸入的資料等控制遊戲的動作,而名稱為 Update 的方法則負責更新遊戲程式顯示的內容。
欲使用 Expression Blend for Windows Mobile 開發 Windows Phone 7 應用程式的程式設計師請注意,完成 Windows Phone Developer Tools 套件安裝之後,Expression Blend for Windows Mobile 工具會出現在 [Microsoft Expression] 程式群組中,您將不會在 [Microsoft Expression] 程式群組中看到名稱為 Expression Blend for Windows Mobile 的工具,因為 Expression Blend for Windows Mobile 已經與 Microsoft Expression Blend 4 工具整合,欲使用 Expression Blend for Windows Mobile 開發 Windows Phone 7 應用程式,您必須啟動 Microsoft Expression Blend 4,然後執行 [File | New Project] 功能,執行建立專案的動作,您就會看到如圖9 的操作畫面:
圖9:使用 Microsoft Expression Blend 4 建立 Windows Phone 7 應用程式的操作畫面
請點選左方視窗 [Project types] 項目底下的 [Windows Phone] 專案型態,就可以在右方視窗中看到 Expression Blend for Windows Mobile 支援程式設計師建立的五種 Windows Phone 應用程式專案型態,分別是:Windows Phone Application、Windows Phone Databound Application、Windows Phone Panorama Application、Windows Phone Pivot Application、與Windows Phone Control Library。請選擇 [Windows Phone Application] 專案型態,然後按下 [OK] 鍵,執行建立專案的動作,專案建立成功後您就會看到類似圖10 的畫面:
圖10:使用 Microsoft Expression Blend 4 建立的 Windows Phone 應用程式專案的內容
您可以利用 [Tools] 視窗提供的控制項設計應用程式,利用 [Properties] 視窗設定控制項的屬性,設計妥應用程式的功能之後按下 F5 功能鍵執行製作好的應用程式,Expression Blend for Windows Mobile 就會將設計好的應用程式載入到 Windows Phone 模擬器供您測試。
[結語]
Windows Phone 7 是 Microsoft 推出的全新智慧型手機作業系統,不但具有新穎的使用者介面,也支援整合當紅的社交網站與微網誌,內建搜尋功能,LBS (Location-Based Service) 適地性服務,視訊與音樂播放功能,先進而且具高度生產力的遊戲開發支援,以及多點觸控控制等等,是 Microsoft 逐鹿智慧型手機巿場的重要先鋒。