Windows Mobile 5.0 中为开发人员提供的新功能

yanglilibaobao 2006-12-26 01:16:17
简介
基于 Windows Mobile 的设备(包括 Pocket PC 和 Smartphone)在全世界得到了广泛部署。是什么原因使这些具有高度可移动性的设备广受欢迎呢?这主要归功于它们迅速改进的硬件功能。这些设备现在提供了高质量的显示、照相机、更大的内存和不久以前还难以想像的强大通信功能。Windows Mobile 5.0 使开发人员能够轻松地利用这些强大的设备功能和其他更多的功能。

Windows Mobile 5.0 引入新一代平台应用程序编程接口 (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 在呈现高速度的二维图形方面为开发人员提供更大的控制和灵活性。


托管代码支持

Windows Mobile 5.0 为托管代码开发人员提供了最好的支持。下表概述 Windows Mobile 5.0 的托管代码支持:

• 所有 Windows Mobile 5.0 设备都将 .NET Compact Framework 1.0Service Pack3 安装到 ROM 中。这为托管应用程序部署提供了一致的目标平台。

• 许多核心设备功能(例如,消息处理、电话和 Outlook Mobile)现在都公开了托管 API,从而使它们可以直接从托管代码中进行访问。

• 很多直接公开为托管 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) 的应用程序编程接口,从而使应用程序可以充分利用硬件功能和性能。

• 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 使用当前主题的颜色和样式绘制指定的矩形,就好像它具有焦点。

...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanbinyang 2006-12-28
  • 打赏
  • 举报
回复
的确超前,但是很感谢楼主提供这方面的发展趋势,期待未来,预测,新的概念已经有了,楼主是否能持续到底,还是期待!
cangwu_lee 2006-12-26
  • 打赏
  • 举报
回复
还用不着呢

--------------------------------------------------------------
程序,犹如人生。
yanglilibaobao 2006-12-26
  • 打赏
  • 举报
回复
现在被公开为托管 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 number
thePhone.Talk("4255551212");
// Place a call to the specified number after
// first prompting the user to verify the number
thePhone.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 details
Appointment theAppointment = new Appointment();
// Set the subject
theAppointment.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 hours
theAppointment.Duration = new TimeSpan(08, 00, 00);
// Issue a reminder by having the device vibrate
theAppointment.ReminderVibrate = true;
// Repeat the reminder until the user dismisses it
theAppointment.ReminderRepeat = true;
// Create the Outlook session and add the appointment
// to the Outlook Appointment Folder
using (OutlookSessionsession = new OutlookSession())
{
session.Appointments.Items.Add(theAppointment);
}

图 1 显示设备运行前面的代码之后的 Pocket Outlook 日历。
http://www.microsoft.com/china/MSDN/library/Mobility/pocketpc/art/whatsnew_wm5_01.gif
图 1. Pocket Outlook 中刚刚创建的约会

消息处理

除了提供对 PIM 数据的访问以外,Pocket Outlook 对象模型还分别通过“Microsoft.WindowsMobile.PocketOutlook.EmailAccount”和“Microsoft.WindowsMobile.PocketOutlook.SmsAccount”命名空间为电子邮件和 SMS 消息提供了托管支持。这些命名空间中的类使托管代码开发人员能够容易地将消息处理集成到他们的应用程序中。

对于需要集成电子邮件功能的托管应用程序开发人员,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 类包含两个静态方法:ProcessConfiguration 和 TestConfiguration。托管开发人员可以使用 ProcessConfiguration 配置电子邮件、安全策略、本地化、主屏幕、虚拟专用网络 (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);




790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧