本文和大家重点学习一下WindowsMobile6.5Widgets开发的概念,Widgets开发是近来非常流行的一项技术,用于显示一些常用信息,比如天气、股票、新闻和体育等。googleAndroid和Symbian上已经有了类似的技术,可以说,Widgets开发是很好地结合了移动设备与互联网的技术。
WindowsMobile6.5Widgets开发初体验
Windowsmobile6.5的DTK终于发布了,其中最吸引人的是两个功能:Widgets和GestureAPI。Widgets开发是近来非常流行的一项技术,用于显示一些常用信息,比如天气、股票、新闻和体育等。googleAndroid和Symbian上已经有了类似的技术,可以说,Widgets开发是很好地结合了移动设备与互联网的技术。虽然Widgets开发简单,但很有可能改变移动互联网的未来格局。目前WindowsMobile6.5的Widgets是基于W3C的Widgets草案,支持2008年12月22日草案,链接在http://www.w3.org/TR/2008/WD-widgets-20081222/。
WindowsMobile6.5Widgets开发环境
好了,接下来,我们就要看一下,如何为WindowsMobile6.5开发一个Widgets控件。首先,我们需要下载WindowsMobile6.5的DTK,下载链接为:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=20686a1d-97a8-4f80-bc6a-ae010e085a6e
WindowsMobile6.5的DTK需要与WindowsMobile6SDK配合使用,WindowsMobile6SDK的下载地址:
http://www.microsoft.com/downloads/details.aspx?familyid=06111a3a-a651-4745-88ef-3d48091a390b&displaylang=en
由于很多Widgets都需要联网,所以测试环境也需要ActiveSync的支持。Vista应该使用WindowsMobileDeviceCenter6.1,下载地址:
http://www.microsoft.com/windowsmobile/en-us/help/synchronize/device-center-download.mspx
编写Widgets
接下来,我们就可以来开发一个Widgets了。首先创建一个WidgetDemo的文件夹,创建一个叫做widget.htm的文件,将下面的HTML代码拷贝到文件中:
- <html><head><title>CoolWidget!title>head><body>I'macoolwindowsmobile6.5widget<formmethodformmethod="get"action="http://www.google.cn/custom"target="google_window">
- <tablebgcolortablebgcolor="#ffffff"><tr><tdnowraptdnowrap="nowrap"valign="top"align="left"height="32"><ahrefahref="http://www.google.com/">
- <imgsrcimgsrc="http://www.google.com/logos/Logo_25wht.gif"border="0"alt="Google"align="middle">
- img>a><labelforlabelfor="sbi"style="display:none">????????label>tr><tr><inputtypeinputtype="text"name="q"size="31"maxlength="150"value=""id="sbi">
- input><labelforlabelfor="sbb"style="display:none">??????label><inputtypeinputtype="submit"name="sa"value="??"id="sbb">
- input><inputtypeinputtype="hidden"name="client"value="pub-9289651901062754">input><inputtypeinputtype="hidden"name="forid"value="1">
- input><inputtypeinputtype="hidden"name="ie"value="UTF-8">input><inputtypeinputtype="hidden"name="oe"value="UTF-8">input><inputtypeinputtype="hidden"name="cof"value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;
- AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1">
这个Widget就是调用Google的搜索页面。原来的WidgetDemo没有Google搜索的代码,我从网上找了一个示例加了进去。接下来,创建一个叫做config.xml的文件,将下列代码拷贝到文件中:
- xmlversion="1.0"encoding="utf-8"?><widgetversionwidgetversion="1.0"xmlns="http://www.w3.org/ns/widgets"id=""><name>Myfirstwidgetname>
- <contentsrccontentsrc="widget.htm"type="text/html"/><accessnetworkaccessnetwork="true"/><iconsrciconsrc="icon.png"/>
- <description>Thisismyfirstwidget,itwon'tmakealotofmoneyonthemarketplacebutatleastiscute!description>widget>
这是一个描述性的XML文件,结构非常清晰,不需要多做解释了。注意content,icon和accessnetwork三个节点。Content的src就是我们刚编写的widget.htm,允许Widget访问网络,icon则是显示在WindowsMobile开始菜单里的图标。
现在有了三个文件,我们使用WinZip将其压缩成一个ZIP文件。特别需要指出的是,我们不能压缩这三个文件所在的文件夹,必须选中所有文件之后进行压缩。然后我们将WidgetDemo.zip的扩展名改为WidgetDemo.wgt。
部署Widget
到这里,Widget开发就完成了。通过ActiveSync或者共享目录,将Widget拷贝到WindowsMobile6.5的模拟器中。
我们使用FileExplorer来找到这个Widget文件,点击之后,会提示是否安装并运行这个Widget。
安装Widget开发系统之后,会自动运行,Google的图标来源于网络,所以可能会显示慢一些。如果Google图标没有显示出来,则说明网络连接不通:
输入关键字,点击button,Widget开发系统会自动启动IEMobile,显示搜索结果。
在使用时,我们可以在开始菜单里找到相应的图标,可以打开Widget。还需要说明的是,如何卸载这个Widget。
在开始菜单-Setting–System-RemovePrograms里,可以看到我们的Widget,与卸载普通的应用程序没有区别。
我们的Widget被安装在\ProgramFiles\Widgets\User\7的目录里,目录的序号与安装顺序有关,比如1里就是内置的LiveSearch。
总结
写到这里,Widget开发就完成了,怎么样?简单吧。Widget开发的简单性,正是它未来可能缔造辉煌的主要优势。任何熟悉HTML和JavaScript的人都可以开发出功能丰富的Widget,而Widget又可以像普通应用程序一样使用。
虽然不像Palm的WebOS那样具有颠覆性,但是依托于目前的技术,才能获得大多数开发者的支持。现在只有WindowsMobile6.5支持Widget,但其他移动设备是否有可能支持Widget呢?一切皆有可能。
总之,一句话,大有可为!其实HTML和JavaScript并不是我的强项,下周还是给大家说说GestureAPI吧。
参考资料
GettingstartedwithwidgetsonWindowsMobile6.5
http://blogs.msdn.com/windowsmobile/archive/2009/06/04/getting-started-with-widgets-on-windows-mobile-6-5.aspx
DevelopingWidgetsforWindowsMobile6.5
http://msdn.microsoft.com/en-us/library/dd721906.aspx
WindowsMobile6.5Widget系列文章
http://www.shangducms.com/post/Windows-Mobile-Widget.aspx
【编辑推荐】
- AndroidWidget开发系列解读
- AndroidWidget开发详解
- 全面认识WebWidget开发
- DashBoard的Widget开发指南
- 解析AndroidWidget开发中如何构建Activity类