本机和托管开发人员都可以使用的新增 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\State 和 HKEY_LOCAL_MACHINE\Software\State 中。
如果本机开发人员希望检索通知,则他们具有多个选择,包括 Windows 消息、回调函数和消息队列。那些希望创建通知提供程序的开发人员可以在某个适当的注册表位置下面创建一个项,并且使用 RegistrySetDWORD 或 RegistrySetString 函数来创建和修改该项下面的值。表 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. 图片选择对话框
图片选择对话框具有高度的可配置性,并且使应用程序开发人员可以用多种方式控制该对话框的行为,包括限制用户可能浏览图像的位置、控制是否允许用户浏览来自附加照相机(如果存在)的图像以及应该如何处理受 DRM 保护的文件。
照相机捕获 API/SHCameraCapture
支持照相机的设备极为受欢迎。由于这些设备的使用范围是如此之广,因此应用程序开发人员现在有机会通过将静止图像和视频图像的捕获直接集成到他们的应用程序中来切切实实地增强用户体验。为了使应用程序开发人员能够轻松地提供该功能,Windows Mobile 5.0 提供了照相机捕获对话框。
照相机捕获对话框为应用程序开发人员提供一种独立于设备的方式,以便将照片、视频和带声音的视频的捕获集成到他们的应用程序中。该对话框为开发人员提供了对照相机捕获过程的完整控制,包括捕获的类型、质量和最大长度(仅限于视频)。本机开发人员通过 SHCameraCapture 函数利用照相机捕获对话框;托管开发人员使用 Microsoft.WindowsMobile.Forms.CameraCaptureDialog。
| 共12页: 上一页 [1] [2] [3] 4 [5] [6] [7] [8] [9] [10] [11] [12] 下一页 | ||
|