Jim Wilson
JW Hedgehog, Inc.
適用於:
Windows Mobile 版本 5.0
基於 Windows Mobile 的裝置
Visual Studio2005
Windows Media Player
Direct3D
DirectDraw
DirectShow
.NET Compact Framework
ActiveSync
Pocket Outlook
Exchange
摘要:從開發人員的觀點來瞭解 Windows Mobile 版本 5.0 中的新增功能。
本頁內容
|
簡介 |
|
Windows Mobile 5.0 API |
|
工具和技術 |
|
其他影響開發人員的 Windows Mobile 5.0 更改 |
|
小結 |
簡介
基於 Windows Mobile 的裝置(包括 Pocket PC 和 Smartphone)在全世界得到了廣泛部署。是什麼原因使這些具有高度可移動性的裝置廣受歡迎呢?這主要歸功於它們迅速改進的硬體功能。這些裝置現在提供了高品質的顯示、照相機、更大的記憶體和不久以前還難以想像的強大通訊功能。Windows Mobile 5.0 使開發人員能夠輕鬆地利用這些強大的裝置功能和其他更多的功能。
Windows Mobile 5.0 引入新一代平台API (API),這些介面公開了豐富的多媒體支援、豐富的二維和三維繪圖功能、與照相機或全球定位系統 (GPS) 裝置等裝置硬體之間的輕鬆互動、與 Pocket Outlook 的簡單互動和整合以及更為完善的通訊功能。這些新的 API 不僅提供了更為出色的應用程式功能,而且還通過將這些功能的詳細資料封裝在平台中,從而使開發人員能夠重點關注他們應用程式功能的特定需要,從而提高了開發人員的工作效率。
Windows Mobile 5.0 是第一個同時公開本機版本和託管版本平台 API 的平台,從而使開發人員可以基於他們的技能和應用程式適應性選擇最適當的開發模型。Windows Mobile 5.0 還合并了很多 API 增強功能,以便在 Windows Mobile 裝置和 Windows 案頭以及伺服器電腦平台之間提供更大的連續性,從而使伺服器開發人員可以跨越所有 Windows 平台使用公用的技能集。
本文從開發人員的角度說明 Windows Mobile 5.0 中的這些新功能,並且說明開發人員用來建立 Windows Mobile 5.0 解決方案的工具。以下各部分概述其中一些最值得注意的 Windows Mobile 5.0 功能。
改進的工作效率
下表概述 Windows Mobile 5.0 改進開發人員工作效率的一些方式:
• |
新的 API 解決了很多最常見的行動裝置開發難題(其中包括圖片管理、連絡人管理和 GPS),使開發人員能夠集中精力去產生令人刮目相看的應用程式。 |
• |
用於 Pocket PC 的 Windows Mobile 軟體和用於 Smartphone 的 Windows Mobile 軟體之間的更大連續性在裝置之間提供了代碼和應用程式的更大可移植性。 |
• |
新狀態和通知 Broker API 使應用程式可以輕鬆地跟蹤系統活動,例如,網路狀態的更改、簡訊息服務 (SMS) 資訊的接收或傳入的撥打電話。 |
• |
Visual Studio 通過多個可以提高工作效率的工具簡化了裝置開發,例如,資料設計器、更快的調試器和改進的使用者介面設計器(它們包含相應的支援,以便於開發人員跨不同的螢幕方向、解析度和裝置查看應用程式表示形式)。 |
• |
改進的模擬器(包括新的 ARM 模擬器)通過更加準確地表示裝置環境,從而減少開發人員需要直接在裝置上啟動並執行測試數量和層級,簡化了應用程式測試。 |
多媒體支援
下表概述 Windows Mobile 5.0 的豐富多媒體支援:
• |
整合式照相機 API 使開發人員能夠將照相機、圖片和視頻功能直接嵌入到應用程式中。 |
• |
Windows Media Player Mobile 使開發人員能夠將媒體播放器功能整合到他們的應用程式中,其中包括庫管理和播放。 |
• |
Direct3D 使開發人員能夠提供豐富的三維遊戲環境。 |
• |
DirectDraw 在呈現高速度的二維圖形方面為開發人員提供更大的控制和靈活性。 |
Managed 程式碼支援
Windows Mobile 5.0 為Managed 程式碼開發人員提供了最好的支援。下表概述 Windows Mobile 5.0 的Managed 程式碼支援:
• |
所有 Windows Mobile 5.0 裝置都將 .NET Compact Framework 1.0Service Pack3 安裝到 ROM 中。這為託管應用程式部署提供了一致的目標平台。 |
• |
許多核心裝置功能(例如,訊息處理、電話和 Outlook Mobile)現在都公開了託管 API,從而使它們可以直接從Managed 程式碼中進行訪問。 |
• |
很多直接公開為託管 API 的作業系統功能向託管開發人員提供了跨 .NET Compact Framework 的所有版本的訪問。 |
返回頁首
Windows Mobile 5.0 API
Windows Mobile 5.0 提供很多新的 API。儘管這些新的 API 分布在許多不同的服務中,但它們都是為提高開發人員工作效率這一共同目標服務的。通過將很多經常執行的任務合并到作業系統中,應用程式開發人員可以集中精力去滿足各個應用程式的特定需要。
Windows Mobile 5.0 第一次直接向託管開發人員公開作業系統功能。除了為現有作業系統功能提供的新託管類以外,這些新託管 API 還包括新增作業系統功能。
您可以將新的 Windows Mobile 5.0 API 分為三組:直接面向本機開發人員的新增 API;現在公開給託管開發人員的現有本機 API;本機和託管開發人員都可以使用的新增 API。
新增 API
本節描述直接面向本機開發人員的新增 API。
Direct3D Mobile
• |
因為 Windows Mobile 裝置包含越來越豐富的顯示並且三維案頭電腦遊戲廣受歡迎,所以下一個合乎邏輯的步驟是為行動裝置廣泛生產三維遊戲。Direct3D Mobile 現在使其有可能成為現實。 |
• |
Direct3D Mobile 是案頭電腦的 Direct3D API 的行動裝置實現。通過 Direct3D Mobile,開發人員可以使用他們的現有案頭電腦 Direct3D 技能和代碼為 Windows Mobile 裝置產生豐富的三維遊戲環境。 |
• |
Direct3D Mobile 充分利用圖形硬體支援,並且能夠用來在行動裝置上開發高效能的三維透視圖。除了能夠合并創造性的三維使用者介面以外,這一支援還使開發人員能夠建立強大的三維遊戲環境。 |
DirectDraw
• |
對於需要直接操縱顯示記憶體、提供高速度的二維圖形或者合并數位視訊的應用程式,Windows Mobile 5.0 提供了 DirectDraw API。通過在裝置顯示硬體之上提供公用抽象,DirectDraw 為應用程式開發人員提供以獨立於裝置的方式直接操縱裝置顯示的功能。 |
• |
DirectDraw 不僅提供對繪製開發人員可以輕鬆查詢的曲面的支援,而且為移動開發人員提供強大的能夠取代 Game API (GAPI) 的API,從而使應用程式可以充分利用硬體功能和效能。 |
• |
DirectDraw 是案頭電腦的 DirectDraw API 的行動裝置實現。案頭電腦開發人員可以利用他們的現有技能,並且可以將現有的 DirectDraw 代碼和庫遷移到 Windows Mobile 5.0 裝置中。 |
DirectShow
• |
現在,包含照相機的行動裝置正在快速增加。對於希望建立與這些支援照相機的裝置互操作的應用程式的開發人員,可以使用 DirectShow API。DirectShow 為應用程式開發人員提供了管理和訪問照相機硬體的功能,從而使其可以捕獲和播放高品質的圖片以及串流視頻。DirectShow 對各個照相機硬體的細節進行了抽象,從而為應用程式開發人員提供了公用、一致的編程介面。 |
• |
DirectShow 支援各種各樣的檔案格式,並且開發人員可以自訂和擴充它以支援新的或專用的格式。與 Direct3D 和 DirectDraw 類似,DirectShow 是案頭電腦 API 的移動實現,並且使案頭電腦開發人員可以快速應用他們的現有技能以利用他們現有的代碼投資。 |
全球定位系統
現在,很多行動裝置在其內部包含 GPS,或者將它作為附件。過去,對於要訪問 GPS 裝置返回的資訊的應用程式而言,要求這些應用程式使用串列 API 直接開啟 GPS 裝置。該技術產生了兩個問題。首先,通過串列 API 工作需要編寫相當多的代碼,並且要求應用程式開發人員起碼具有關於串列裝置編程的中等程度的知識。其次,該體繫結構將 GPS 資料的接收限制到當前串連的單個應用程式。Windows Mobile 5.0 通過 GPS 中介層驅動程式消除了這些問題。
GPS 中介層驅動程式提供了一個非常便於使用的 API,以便提供對 GPS 資料的共用訪問。通過 GPS 中介層驅動程式,Windows Mobile 大大減少了與 GPS 裝置互動所需的代碼數量,並且使多個應用程式可以同時向 GPS 裝置詢問配置和定位資訊。表 1 顯示用於訪問 GPS 中介層驅動程式的四個函數。
表 1. GPS 中介層驅動程式函數 |
函數 |
說明 |
GPSOpenDevice |
串連到 GPS 中介層驅動程式 |
GPSCloseDevice |
與 GPS 中介層驅動程式中斷連線 |
GPSGetPosition |
檢索 GPS 位置資訊 |
GPSGetDeviceState |
檢索有關 GPS 硬體的目前狀態的資訊 |
唯一地標識裝置
對於需要唯一地標識單個裝置的應用程式,Windows Mobile 5.0 包含四個 GetDeviceUniqueID 方法。通過使用 GetDeviceUniqueID,獨立軟體廠商 (ISV) 現在可以將每個軟體許可證與特定裝置聯絡在一起,從而輕鬆地保護智慧財產權。公司開發人員可以發現它對於跟蹤針對特定裝置的資料和應用程式分發很有用。
數字權利管理
數字權利管理 (DRM) 仍然是保護和分發智慧財產權的一個重要組成部分。對於某些應用程式開發人員而言,支援各種 DRM 引擎 API 之間的差異會降低應用程式的開發速度和代碼的可移植性。
為了消除這些問題,Windows Mobile 5.0 提供了基於檔案的數字權利管理 (FDRM) API。FDRM 在不同的 DRM 引擎之間提供了公用編程介面。該公用編程介面提高了開發人員工作效率和代碼可移植性。開發人員現在只需要考慮 FDRM,而無需考慮裝置使用的特定 DRM 引擎。
ActiveSync 互動
開發人員現在可以通過使用 ActiveSyncStart 和 ActiveSyncStop 方法從裝置內部啟動和中止 ActiveSync 同步進程。
其他 Windows Mobile 5.0 函數
表 2 顯示本節中未描述的其他 Windows Mobile 5.0 函數。
表 2. 其他 Windows Mobile 5.0 函數 |
函數 |
說明 |
QueryPolicy |
提供 DMProcessConfigXML 的簡化替代函數,可供開發人員用來檢索單個原則設定的值。 |
ExitWindowsEx |
使應用程式可以關閉裝置。在 Pocket PC 上,應用程式只是使用 ExitWindowsEx 來重新啟動裝置。在 Smartphone,應用程式使用 ExitWindowsEx 來關閉或重新啟動裝置。 |
DrawFocusRectColor |
使用當前主題的顏色和樣式繪製指定的矩形,就好像它具有焦點。 |
現在被公開為託管 API 的現有作業系統功能
這裡列出的功能對於 Windows Mobile 平台而言並無新穎之處。真正的新功能是 Windows Mobile 5.0 提供的託管 API。通過提供這些託管 API,Windows Mobile 5.0 使託管開發人員可以直接存取上述功能,而無需機器碼的協助,也無需考慮應用程式使用的 .NET Compact Framework 的具體版本。
電話
Windows Mobile 5.0 現在通過 Microsoft.WindowsMobile.Telephony.Phone 類公開基本的電話行為。通過使用新的 Phone 類的 Talk 方法,開發人員可以編寫應用程式代碼以啟動撥打電話,並且可以選擇提示使用者在呼叫之前驗證號碼。Phone 類需要對 Microsoft.WindowsMobile.Telephony 程式集的引用。
以下代碼顯示 Phone.Talk 方法的兩種形式。
using Microsoft.WindowsMobile.Telephony;// ...Phone thePhone = new Phone();// Place a call to the specified numberthePhone.Talk("4255551212");// Place a call to the specified number after// first prompting the user to verify the numberthePhone.Talk("4255551212", true);
Outlook Mobile
個人資訊管理員 (PIM) 資料是很多行動裝置應用程式的核心,並且 Windows Mobile 多年以來已經在 Pocket Outlook 中提供了優秀的 PIM 系統。Windows Mobile 5.0 現在通過“Microsoft.WindowsMobile.PocketOutlook”命名空間和程式集中的類將 Pocket Outlook 直接公開給託管開發人員。通過新的託管 Pocket Outlook API,開發人員可以輕鬆地將 PIM 合并為他們的應用程式的一部分。表 3 中顯示部分常用類。
表 3. 常用的 Pocket Outlook 託管類 |
類 |
說明 |
OutlookSession |
代表 Pocket Outlook 應用程式公開電子郵件、SMS 帳戶、約會、連絡人和任務的屬性。 |
Appointment |
代表一塊預定的時間。包含用於標識約會詳細資料以及應該如何顯示約會提醒的屬性。提供應用程式可以處理以便獲得約會更改通知的事件。 |
Contact |
代表個人或組織的資訊記錄。包含 60 個以上用於通過相應事件跟蹤連絡人資訊的不同屬性,從而使應用程式可以輕鬆地跟蹤使用者或應用程式對連絡人資料所做的更改。 |
Task |
代表可訴的待辦項。包含各種標識任務詳細資料(包括進度以及應該如何顯示任務提醒)的屬性。提供應用程式可以處理以便獲得任務更改通知的事件。 |
新的 Pocket Outlook 託管物件模型大大簡化了與 Pocket Outlook 的應用程式互動。下面的代碼顯示添加新約會是如此容易。
using Microsoft.WindowsMobile.PocketOutlook;// ...// Create the Appointment and set the detailsAppointment theAppointment = new Appointment();// Set the subjecttheAppointment.Subject = "MEDC Precon";// Set the appointment to start on May 9, at 9:00 A.M.theAppointment.Start = new DateTime(, 05, 09, 09, 00, 00);// The appointment lasts for eight hourstheAppointment.Duration = new TimeSpan(08, 00, 00);// Issue a reminder by having the device vibratetheAppointment.ReminderVibrate = true;// Repeat the reminder until the user dismisses ittheAppointment.ReminderRepeat = true;// Create the Outlook session and add the appointment// to the Outlook Appointment Folderusing (OutlookSessionsession = new OutlookSession()){session.Appointments.Items.Add(theAppointment);}
圖 1 顯示裝置運行前面的代碼之後的 Pocket Outlook 日曆。
圖 1. Pocket Outlook 中剛剛建立的約會