Windows Mobile 6.5 新功能widget开发
简介
本文通过一个Currency Converter(外汇兑换)例子,讲述Windows Mobile 新功能Widget开发的基本概念和步骤,同时讲述了Widget如何调用WebService。
背景
最近比较关心汇率波动,所以在Widget上实现一个汇率转换器程序。
什么是Widget
Windows Mobile 6.5引入了Widget功能。为Windows Mobile开发提供了新的方式,使得开发Windows Mobile程序变得更简便,Widget的规范请看下面链接:http://www.w3.org/TR/2008/WD-widgets-20081222/ 。Widget有三个关键文件如下图。
Config.xml为配置文件,配置Widget的属性,这些属性包括名字,使用的html文件,是否访问网络以及图标等等。
<?xml version="1.0" encoding="utf-8" ?><widget version="1.0" xmlns="http://www.w3.org/ns/widgets" id=""> <name>Currency Converter</name> <content src="currency.htm" type="text/html" /> <access network="true" /> <icon src="currency.gif"/> <description>This is a currency converter widget!</description></widget>
Currency.gif为图标文件,实际应用中,该文件可以为png,ico等其他图形格式。
Currency.htm为Widget的核心文件,开发Widget的核心就是开发该html文件,这里的html是指纯html(Raw HTML),开发者可以使用HTML来布局,使用CSS来定制样式,使用JavaScript来控制业务逻辑。开发widget使我想起几年前做JavaScript的日子,那时候还没有Ajax,ASP.net的服务器控件的交互性十分差,用户老是投诉界面的操作性,只好手工编写大量的JavaScript来提高用户体验。每次调试JavaScript只能在IE 5上执行,然后alert()出调试信息。开发Widget,我还没有找到很好的方法进行调试,还是有点像以前开发JavaScript那样,使用alert()的方式进行调试。
实现
HTML
<html><head> <title>Currency Converter</title> <script src="currency.js" type="text/javascript"></script></head><body><table> <tr> <td>From </td> <td> <select id="FromBox"> <option value="AUD" selected="selected">Australian Dollar(AUD)</option> <option value="CNY">Chinese Yuan(CNY)</option> <option value="HKD">Hong Kong Dollar(HKD)</option> <option value="USD">U.S. Dollar(USD)</option> </select> </td> </tr> <tr> <td>To </td> <td> <select id="ToBox"> <option value="AUD">Australian Dollar(AUD)</option> <option value="CNY" selected="selected">Chinese Yuan(CNY)</option> <option value="HKD">Hong Kong Dollar(HKD)</option> <option value="USD">U.S. Dollar(USD)</option> </select> </td> </tr> <tr> <td colspan=2> <input type="text" id="Result" readonly onclick="clickConvert()" /> </td> </tr></table></body></html>
这里的HTMl十分简单,只是显示两个下拉框来表示币种,使用一个input text来显示Webservice查询结果。
菜单
菜单指的是Windows Mobile的左右操作菜单,widget.menu为 Windows Mobile特有,在PC上调试该菜单不能呈现。
var menu = widget.menu;var menu1001 = menu.createMenuItem(1001);menu1001.text = "Convert";menu1001.onSelect = clickConvert;menu.setSoftKey(menu1001, menu.leftSoftKeyIndex);
上面代码重写左边菜单,显示"Convert", 并且绑定事件方法 clickConvert,效果图如上。
调用WebService
该汇率转换程序是通过查询WebService来实现的,我使用的是http://www.webservicex.net/免费的WebService。调用WebService的代码如下:
var xmlHttpRequest = null; function clickConvert() { if (window.XMLHttpRequest) { xmlHttpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } var url = "http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=" + document.getElementById("FromBox").value + "&ToCurrency=" + document.getElementById("ToBox").value; xmlHttpRequest.open("GET", url, true); xmlHttpRequest.onreadystatechange = getData; xmlHttpRequest.send(null);} function getData() { if ((xmlHttpRequest.readyState == 4) &&( xmlHttpRequest.status == 200)) { var myXml = xmlHttpRequest.responseXML; var xmlobject = null; var XMLText = null; if (window.ActiveXObject) { XMLText = myXml.childNodes[1].firstChild.nodeValue; } else { XMLText = myXml.childNodes[0].firstChild.nodeValue; } var result = document.getElementById("Result"); result.value = document.getElementById("FromBox").value + " to " + document.getElementById("ToBox").value + " : " + XMLText; } }
先生成XMLHttpRequest的对象,组成需要访问的WebService的Url,通过GET的方式进行访问。返回结果的处理是异步的,通过onreadystatechange 属性指定异步处理函数。在访问过程中,getData()会被回调几次,需要判断xmlHttpRequest的readyState 和 status 来决定结果的返回。返回结果的读取和WebService的接口有关,根据WebService的出口分析需要的数据。这样一个调用WebService的过程就完成了。
调试
可以通过PC的IE进行调试,但是由于IE上没有Windows Mobile的菜单,所以需要做一点点特殊处理,例如我把名为Result的input框加入菜单的事件,那样在IE上只要点击该input框就可以进行调试了。
<input type="text" id="Result" readonly onclick="clickConvert()" />
理论上也可以使用FireBug来进行调试,可是平台相关性的在Firefox就不能用了。
构建
构建过程很简单,不需要编译,只需要压缩成zip格式的文件,把名字改成*.wgt或者*.widget就可以了。
我使用的7zip来进行构建,也可以写批处理文件进行构建,例如mark.bat文件,在批处理文件内进行压缩。
部署
把*.wgt文件拷贝到SD card。在Windows Mobile打开SD Card。
点击 Yes 进行安装。
运行
安装后在Start 菜单看到新的Widget。
运行结果如下。
目前为止一个调用WebService的Widget已经完成了。是不是很简单呢,我们基于免费WebService开发其他Widget。
关于JavaScript的WebService的开发,我参考了下面的文章,非常好。
Calling Cross Domain Web Services in AJAX
中文方面的资料可以参考 郭靖 的系列文章 http://www.shangducms.com/category/Windows-Mobile-65.aspx。
这周比较忙,写了好几天,终于写完了,大家都 have a good weekend.
转载于:https://www.cnblogs.com/procoder/archive/2009/06/26/1511919.html
Windows Mobile 6.5 新功能widget开发相关推荐
- 基于Windows Mobile 2003 的 Pocket PC 为开发人员提供的新功能(转)
对于 Pocket PC 用户和开发人员来说,基于 Microsoft® Windows Mobile® 2003 的 Pocket PC 是一个非常重要的里程碑.Pocket PC 2003 基于新 ...
- Windows 10 Version 2004 新功能盘点
Windows 10 Version 2004 新功能盘点 Windows 10 Version 2004功能更新即将登场,但目前仍没有敲定具体的名称.目前微软已经发布了ISO镜像,意味着微软有望近期 ...
- Windows 11,一个新功能,一场新屠杀!
6月24日,微软正式公布了新一代操作系统:Windows 11.这次的更新距离上一代操作系统Windows 10的发布,隔了有6年之久. 在新一代的操作系统中,包含了这些亮点: 采用了全新的UI设计. ...
- Windows Live Writer新版新功能试用
微软的一款管理个人Blog的客户端工具Windows Live Writer经过前期版本的发展后,目前推出了其最新的Beta2版本.作为一款本地Blog管理工具,Windows Live Writer ...
- Windows 10强推新功能:能否让你的电脑更快
Windows Defender提高你得电脑性能 电脑卡慢常常是电脑爱好者最头痛的问题,无论是做工作还是玩游戏,一个卡机就会让人走向崩溃的边缘.笔记本卡慢的原因有很多,但操作系统都绝对是电脑卡慢不可跳 ...
- Windows 10 20H1 2004新功能
Windows 10的年度更新版本20H1即将问世. 目前可以从insider preview渠道中获得.这个版本中看上去对搜索功能做了不小的改进.包括搜索的磁盘占用率以及搜索的一些展示方式. 其它的 ...
- Windows 11,一个新功能,一场新屠杀
6月24日,微软正式公布了新一代操作系统:Windows 11.这次的更新距离上一代操作系统Windows 10的发布,隔了有6年之久. 在新一代的操作系统中,包含了这些亮点: 采用了全新的UI设计. ...
- ios8新特性widget开发(手机上和通知栏并列的今天的制作)
ios8发布已经有一段时间了,伴随着ios8同时也出现了许多新的特性,ios系统将会越来越开放,这是好事.其中一个新特性就是在下拉通知栏里加入了个性的widget,开发者可以自己定义widget的样式 ...
- Windows 11正式发布,新功能太绝了!
前晚23点(6月24号),传说中的"下一代 Windows 操作系统"终于发布了. 在宣传时期,微软软CEO纳德拉就曾说过: 这将会是10年来最重磅的一次更新. 当时,大侠还是不太 ...
最新文章
- 自适应滤波:最小二乘法
- wannalfy 挑战赛8 F 白云的树(树形dp)
- 使用docker registry建立私有镜像仓库
- 如何在Jackson中使用PropertyNamingStrategy
- centos7下使用git
- Redis:主从配置
- celery java_Python的Java Celery项目相当于什么?
- 华为acl怎么生效_华为ACL配置教程
- 【Java笔记】四种权限修饰符总结
- 使用Kotlin的Android CoordinatorLayout
- 探究Windows内核你知多少
- Java单例模式双检锁原理
- 计算机408专业考研真题,2021年计算机考研408历年真题及答案
- react代码编辑器 react-ace
- EJB是什么?(节选)
- 固态硬盘装到服务器上影响寿命吗,谈谈SSD固态硬盘的寿命问题
- 贝叶斯(朴素贝叶斯,正太贝叶斯)及OpenCV源码分析
- CAIDA AS Rank项目介绍
- 景观智慧路灯:基于景观智慧灯杆的浙江嘉兴智慧旅游景区项目分享
- markdown 数学公式 任意符号 存在符号
热门文章
- CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源
- 【TensorFlow】TensorFlow函数精讲之tf.truncated_normal()
- 深度学习最常用的10个激活函数!
- 图机器学习有多大神力?一文带你回顾2020,展望2021
- 速收藏,《机器学习实战》Python3环境算法实现代码
- 【TensorFlow系列一】TensorFlow工作原理
- 基础知识(一)matlab与c++混合编程之环境搭建
- php gui中文手册,git gui - [ Git中文开发手册 ] - 在线原生手册 - php中文网
- c++ unix time 运行时间_C++编程:c++里时间类型详解 time_t等
- DBeaver 导出EXCEL文件