Windows Mobile 5.0 中為開發人員提供的新功能(2)

來源:互聯網
上載者:User
Windows Mobile 5.0 中為開發人員提供的新功能(2)2007-10-28 23:16

訊息處理

除了提供對 PIM 資料的訪問以外,Pocket Outlook 物件模型還分別通過“Microsoft.WindowsMobile.PocketOutlook.EmailAccount”和“Microsoft.WindowsMobile.PocketOutlook.SmsAccount”命名空間為電子郵件和 SMS 訊息提供了託管支援。這些命名空間中的類使Managed 程式碼開發人員能夠容易地將訊息處理整合到他們的應用程式中。

對於需要整合電子郵件功能的託管應用程式開發人員,EmailAccount 類提供了完整的電子郵件功能,包括對附件的支援。下面的代碼示範開發人員可以如此容易地寄送電子郵件。該樣本使用 ChooseContactDialog 提示使用者選擇要向其寄送電子郵件的連絡人。然後,代碼建立一個電子郵件,附加一個 Pocket Excel 活頁簿,然後通過使用裝置的主電子郵件帳戶將該郵件發送給所選擇的連絡人。

using Microsoft.WindowsMobile.PocketOutlook;            using Microsoft.WindowsMobile.Forms;            // ...            ChooseContactDialogcontactDialog = new ChooseContactDialog();            contactDialog.Title = "Select user to send message";            if (contactDialog.ShowDialog() == DialogResult.OK)            {            EmailMessage message = new EmailMessage();            message.To.Add(                   new Recipient(contactDialog.SelectedContact.Email1Address));            message.Subject = "MEDC Session List";            message.BodyText =                   "I've attached the list of MEDC sessions - hope to see you there";            message.Attachments.Add(new Attachment(@"\My Documents\Sessions.xls"));            using (OutlookSessionsession = new OutlookSession())            {                 session.EmailAccounts[0].Send(message);            }            }            

SMS 仍然是一種非常流行且有效通訊機制。Windows Mobile 5.0 託管應用程式開發人員可以將 SMS 資訊的發送和接收完全整合到他們的應用程式中。

下面的代碼使用 ChooseContactDialog 提示使用者選擇連絡人。然後,代碼使用裝置的已配置的 SMS 帳戶向使用者選擇的連絡人發送郵件,然後請求回執。

using Microsoft.WindowsMobile.PocketOutlook;            using Microsoft.WindowsMobile.Forms;            // ...            ChooseContactDialogcontactDialog = new ChooseContactDialog();            contactDialog.Title = "Select user to send message";            if (contactDialog.ShowDialog() == DialogResult.OK)            {            // Construct message requesting delivery receipt            SmsMessage message = new SmsMessage(                   contactDialog.SelectedContact.MobileTelephoneNumber,                   "R U Going to the Keynote?");            SmsMessage message.RequestDeliveryReport = true;            // Send message            message.Send();            }            

Windows Mobile 5.0 還使 SMS 郵件的截獲和處理變得容易。開發人員可以使用“Microsoft.WindowsMobile.PocketOutlook.MessageInterception”命名空間中的類(位於 Microsoft.WindowsMobile.PocketOutlook 程式集中)建立 .NET Compact Framework 應用程式,以截獲和處理髮送到裝置的 SMS 資訊。

該資訊截獲機制具有高度的可配置性,從而使應用程式可以在 SMS 資訊中註冊基於內容的興趣。開發人員可以對裝置進行編程,以便基於寄件者、接收者或資訊內容嚮應用程式發出有關資訊的通知。開發人員還可以對截獲系統進行編程,以便在請求通知的應用程式尚未運行時啟動它。表 4 顯示一些資訊截獲類。

表 4. 常用的 SMS 資訊截獲託管類
說明

MessageInteceptor

在滿足指定條件的資訊到達時引發事件。該類根據情況在請求通知的應用程式尚未運行時啟動它。

MessageCondition

標識要滿足的資訊條件。

MessageInteceptorEventHandler

由那些註冊以便接收語音總機的類實現的委託類型。

組態管理員

Windows Mobile 引入了組態管理員,它極大地簡化了 Windows Mobile 裝置的配置和部署,這是因為開發人員可以通過使用 XML 設定裝置的幾乎所有可配置的方面。通過使用 Microsoft.WindowsMobile.Configuration.ConfigurationManager 類,託管開發人員現在可以充分利用該功能。

ConfigurationManager 類包含兩個靜態方法:ProcessConfigurationTestConfiguration。託管開發人員可以使用 ProcessConfiguration 配置電子郵件、安全性原則、本地化、主畫面、Virtual Private Cloud (VPN) 設定、檔案系統以及其他設定。該類向開發人員提供了對所有裝置配置問題的一站式解決方式。TestConfiguration 使託管開發人員可以在不影響任何裝置設定的前提下驗證配置 XML 的有效性。下面的樣本示範了如何使用 ProcessConfiguration 將 MSDN Mobility Web 網站添加到裝置瀏覽器收藏夾中。

using System.Xml;            using Microsoft.WindowsMobile.Configuration;            // ...            string configurationXml =            @"<wap-provisioningdoc>                   <characteristic type='BrowserFavorite'>                     <characteristic type='MSDNMobility'>                       <parm name='URL' value='http://msdn.microsoft.com/mobility'/>                     </characteristic>                   </characteristic>                 </wap-provisioningdoc>";            // Load XMLinto the DOM            XmlDocument configurationXmlDoc = new XmlDocument();            configurationXmlDoc.LoadXml(configurationXml);            // Send to Configuration Manager            ConfigurationManager.ProcessConfiguration(configurationXmlDoc, false);            

本機和託管開發人員都可以使用的新增 API

隨著 Windows Mobile 平台的發展,越來越多的本機和託管開發人員正在開發豐富的、完善的應用程式。為了滿足這兩組開發人員的共同需要,Windows Mobile 5.0 的很多新功能直接公開本機和託管 API。包括託管 API 以使其成為 Windows Mobile 5.0 平台本身的一部分,使得這些 API 可供所有託管開發人員使用,而無需考慮應用程式使用的 .NET Compact Framework 的具體版本。

State and Notification Broker API

Windows Mobile 5.0 引入了一種新的非常強大的工具,稱為 State and Notification Broker API。State and Notification Broker API 提供用於存放裝置、應用程式和系統狀態資訊的統一機制。它不僅是一個統一的儲存,而且還提供了集中式通知體繫結構,從而使應用程式可以容易地註冊通知,並且可以選擇在感興趣的值更改時啟動應用程式。該模型還使應用程式可以容易地共用它們自己的狀態資訊。

Windows Mobile 5.0 裝置隨附了遠遠超過 100 個不同的狀態值,它們可以通過 State and Notification Broker API 獲得。這些可用值提供各種各樣的,與裝置本身和標準 Windows Mobile 5.0 應用程式有關的資訊。下表只是可以通過 State and Notification Broker 獲得的資訊的一部分樣本:

活動應用程式

裝置的 ActiveSync 狀態

當前電池電平

是否有照相機串連到該裝置

是否插入了耳機

Media Player 中當前播放的歌曲名稱

未讀的 SMS 資訊個數

未讀的電子郵件個數

當前是否正在通話

當前是否進行中會議呼叫

當前是否可以使用 GPRS 串連

裝置當前是否串連到 VPN

未接撥打電話的個數

電話的行動電信業者的名稱

當天預定的任務數

除了上述項以外,原始裝置製造商 (OEM) 和應用程式開發人員還可以擴充該列表。開發人員可以輕鬆地設計應用程式以檢索任何 State and Notification Broker API 儲存值,並且如果需要的話,則開發人員可以設計應用程式以監視一個或多個值的更改。

State and Notification Broker 的基礎實現依賴於註冊表。每個提供者都會建立一個登錄機碼,向該項添加值,以表示各個狀態值。在提供者建立該登錄機碼以後,State and Notification Broker 會監視該值的更改,並且自動通知已經註冊了對該值的興趣的所有各方。所有系統狀態屬性都儲存在 HKEY_CURRENT_USER\System\State HKEY_LOCAL_MACHINE\System\State 下面。這些項都被加以保護,允許不信任的應用程式進行唯讀訪問。應用程式可以將它們自己的狀態值添加到 HKEY_CURRENT_USER\Software\StateHKEY_LOCAL_MACHINE\Software\State 中。

如果本機開發人員希望檢索通知,則他們具有多個選擇,包括 Windows 訊息、回呼函數和訊息佇列。那些希望建立通知提供者的開發人員可以在某個適當的註冊表位置下面建立一個項,並且使用 RegistrySetDWORDRegistrySetString 函數來建立和修改該項下面的值。表 5 列出常用的本機 State and Notification Broker 函數。

表 5. 常用 State and Notification Broker API 本機函數
函數 說明

RegistryNotifyApp

通過將 Windows 訊息發送到應用程式視窗,將指定狀態值的更改通知給應用程式。如果該應用程式尚未運行,則 State and Notification Broker API 會啟動它。

RegistryNotifyWindow

通過將 Windows 訊息發送到應用程式視窗,將指定狀態值的更改通知給應用程式。

RegistryNotifyMsgQueue

通過向命名的訊息佇列發送通知,將指定狀態值的更改通知給應用程式。

RegistryNotifyCallback

通過調用傳遞的回呼函數,將指定狀態值的更改通知給應用程式。

RegistryGetDWORD / RegistryGetString

檢索目前狀態值。

RegistrySetDWORD / RegistrySetString

由 State and Notification Broker API 提供者用來建立和修改狀態值。

RegistryTestExchangeDWORD

由 State and Notification Broker API 提供者用來有條件地修改狀態值,並且將測試和更新作為單個原子操作予以執行。

託管開發人員通過使用屬於“Microsoft.WindowsMobile.Status”命名空間和同名程式集的類與 State and Notification Broker 互動。標準委託機制用於向託管類發送狀態更改通知。表 6 顯示常用託管類的列表。

表 6. 常用 State and Notification Broker API 託管類
函數 說明

RegistryState

封裝被監視的狀態值,包括檢索值、監視該值的更改以及在該值更改時根據情況啟動應用程式。

SystemState

提供公用系統狀態值之上的抽象,並且通過屬性提供對這些值的訪問。

圖片選擇對話方塊

隨著應用程式越來越多地合并了照片和圖形,這些應用程式需要一種容易的方式來向使用者呈現圖片列表,以供使用者選擇。為了滿足這一需要,Windows Mobile 5.0 提供了圖片選擇對話方塊。該對話方塊通過 GetFileNameEx 函數提供給本機開發人員;對於託管開發人員,它是通過 Microsoft.WindowsMobile.Forms.SelectPictureDialog 類公開的。圖 2 顯示圖片選擇對話方塊。

2. 圖片選擇對話方塊。單擊縮圖查看大映像。

圖片選擇對話方塊具有高度的可配置性,並且使應用程式開發人員可以用多種方式控制該對話方塊的行為,包括限制使用者可能瀏覽映像的位置、控制是否允許使用者瀏覽來自附加照相機(如果存在)的映像以及應該如何處理受 DRM 保護的檔案。

照相機捕獲 API/SHCameraCapture

支援照相機的裝置極為受歡迎。由於這些裝置的使用範圍是如此之廣,因此應用程式開發人員現在有機會通過將靜止映像和視頻映像的捕獲直接整合到他們的應用程式中來切切實實地增強使用者體驗。為了使應用程式開發人員能夠輕鬆地提供該功能,Windows Mobile 5.0 提供了照相機捕獲對話方塊。

照相機捕獲對話方塊為應用程式開發人員提供一種獨立於裝置的方式,以便將照片、視頻和帶聲音的視頻的捕獲整合到他們的應用程式中。該對話方塊為開發人員提供了對照相機捕獲過程的完整控制,包括捕獲的類型、品質和最大長度(僅限於視頻)。本機開發人員通過 SHCameraC

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.