PhoneGap In Windows phone
如下在Windows phone开发环境构建几个简单PhoneGap应用来体验一下其执行过程.So 如果你不了解如何在Windows phone 中搭建PhoneGap开发环境请参考如下链接:
How to Build development environment :
API Docs:
构建一个PhoneGap Application 命名:PhoneGapBuildAppDemo
从初始的解决方案的结构来看.Gaplib目录下包含一个WP7GapClassLib.dll. WWW目录下则是要编写发布 运行时展示的内容.如果要迁移支持多平台.这是核心内容.关于一次编译到处运行.很多开发人员可能产生一些误解. 即使我们在Windows phone 平台成功编译运行.还是需要Copy WWW目录下文件迁移到其他平台.做一些必要调整和修改.
至于Plugins目录稍后解释. 打开MainPage.xml文件发现只有一个定制的WEbBrowser控件:
<script type="text/javascript" charset="utf-8"> navigator.camera.getPicture(onSuccess, onFail, { quality: 50 }); function onSuccess(imageData) { var image = document.getElementById('myImage'); image.src = "data:image/jpeg;base64," + imageData; } function onFail(message) { alert('Failed because: ' + message); } </script>
运行应用程序:
可以看到通过JAvaScript中调用直接访问Windows phone SDK 中API拿到当前设备的基本信息.如果你觉得PhoneGap还不足够媲美Windows phone 自身SDK API能力.那么JavaScript中直接调用设备的摄像头.并能够实现摄像头图片截屏. 并保存到图片库中. 保存成功后.JAvaScript依然能够能够访问指定图片相册去读取截图文件. 只需需该一段JAvaScript 轻松实现截屏功能
运行时截图:
具体调用摄像头的实例请参考官方API文档:
well.出了官方提供的通用的SDK API.我们依然能够从第二章图能看出有些SDK API调用也是因平台不同而 各异. 不禁有开发人员提出一些具体而实际的需求.如果说要在PhoneGap直接调用PhoneCallTask任务实现打电话功能. 这里就必须提到如上解决方案中Plugins目录.
Plugins目录当然顾名思义.就是扩展的插件.PhoneGap有一个另外很重要的特点就是对对应平台可以供开发人员插件的方式集成SDK API中功能.实现即插即用的框架组织结构.这对开发人员无意给出最大的扩展自由. 如果我们PhoneGap集成一个打电话功能.首先要在Plugins目录创建一个PhoneTaskService类 添加引用:
using Microsoft.Phone.Tasks; using WP7GapClassLib.PhoneGap; public class PhoneTaskService : BaseCommand { public void ExcutePhoneCallTask(){ PhoneCallTask mefPhoneCallTask = new PhoneCallTask(); mefPhoneCallTask.DisplayName = "China Mobile Customer Service"; mefPhoneCallTask.PhoneNumber = "10086"; mefPhoneCallTask.Show(); } }
首先修改类命名空间.将该类做为 PhoneGap 运行库命名空间,因此将该类的命名空间修改为WP7GapClassLib.PhoneGap.Commands. 另外我们还必须继承 PhoneGap 运行库的 BaseCommand 类,以便我们可以在 JavaScript 中调用到该类. 定义JAvaScript调用:
function CallComposer(){ this.resultCallback = null; } CallComposer.prototype.showCallComposer = function(toRecipients, body){ var args = {}; if(toRecipients){ args.toRecipients = toRecipients;
} if(body){ args.body = body;
} PhoneGap.exec(null, null, "PhoneCall", "call", args); } PhoneGap.addConstructor(function () { if (!window.plugins) { window.plugins = {}; } window.plugins.CallComposer = new CallComposer(); });
在解决方案另存为.JS文件. 通过<Script>引用Index.HTML页面.通过如下方式JavaScript代码调用:
window.plugins.CallComposer.showCallComposer(recipients, message)