您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > BlackBerry Widget 开发中级篇--BlackBerry 编程
BlackBerryWidget开发中级篇作者:王志刚背景知识在入门篇中,我们讨论了如何应用Blackberry提供的WidgetAPI来进行开发,从如下链接中,可以找到BlackBerry能提供的所有WidgetAPI列表。然后,对于很多应用开发来说,widget开发过程中,有些需求是系统API所不能满足的,还有一种应用场景是用户需要把原有java系统的代码和功能与widget技术结合起来。为了满足这两种开发和应用的需求,widget也提供了扩展机制,能够满足用户的这种需求。本文就以一个扩充widget的api来实现手机在javascript中调用widgetapi来实现手机震动功能,这个api在标准widgetapi中是没有实现的。开发工具下载在进行Widget开发之前,开发人员需要下载相应的开发工具,BlackBerryeclipseplug-in。本文使用的BlackBerryjavaPlug-inforEclipse版本为:v1.1.1(下载地址如下):这个plug-in的作用是给用户开发widget扩展api使用的。开发具体步骤步骤一启动Eclipse,FileNewProject,选择BlackBerryProject,然后选择Next:步骤二在接下来的对话框,输入project的名字MyWidgetExtension,然后选择Next步骤三接下来,会出现project的视图,图中可以看到系统已经添加了新的project,在project的src目录下点击右键,然后添加一个package名字为widgetpackge。上点击右键,添加一个新的class,名为AlertSample,让他继承net.rim.device.api.script.Scriptable.的基本框架如下所示:这个class的作用是用来映射在widget应用中的调用逻辑。当在javascript的代码中通过”.”操作符号调用扩展的api时,getFiel()便会被调用。这个函数在AlertSample中的实现如下:当它被调用后,便会检查当前device中vibrate功能是不是被支持。步骤六然后,添加一个vibrateclass类,让他继承自net.rim.device.api.script.ScriptableFunction.的代码框架如下所示:在自动生成的代码框架中加入如下代码,这段代码的作用是让设备震动一段时间。步骤八接下来,我们将把AlertSample和vibrate两个class连接起来。在AlertSample中加入如下代码:这些代码的作用是让AlertSample能够调用vibrate的实例,然后在AlertSample的getField()中加入如下函数实现代码步骤九最后,添加SampleExtensionclass到项目中,创建class的时候确保public和final修饰符被选中,让sampleextensionclass继承自net.rim.device.api.web.WidgetExtension.框架如下所示:这里的几个主要方法的作用描述如下:getFeatureList()–这个方式是为了给widget引擎提供我们新的widget扩成能提供的featurelist列表,如基础篇介绍,这里的feature就是widget开发过程中可以加入的access的资源。loadFeature()–这个方法是当widget使用相应的widgetengine提供的feature时候,可以执行的一些任务,这个一般就是widget引擎加载进来我们extensionapi的入口点。register()–这个方法提供一个入口插入点,扩充的widget程序可以自动执行一些对当前widget配置文件和浏览器的操作。unloadFeatures()–这个是一个入口点,可以加入一些逻辑,如果需要做一些清理工作当widget退出出这个api调用的时候。步骤十一在上步生成的SampleExtension的getFeatureList中添加如下代码:中,添加如下代码:步骤十二在完成widge扩充api的具体开发和定义工作之后,剩下的就是把widget发布到Blackberry的widget平台中,这一步是通过export相应的java文件完成的。根据基础篇里面的信息,我们需要把我们做好的java文件export到相应的widgetsdk的目录下。右键选择项目,然后选择Export在出现的对话框中,选在general下的filesystem然后下一步:不管是用户使用Blackberry的widgetsdk还是基于eclipse的webplug-in做widget开发发布,我们都需要把这里做出来的java文件export到相应widgetsdk安装目录下的devicetemplates目录下。在上图中选择Export之后,在出现的对话框中选中src目录,确保源文件会被export出来。,选择为相应的开发机器上的widgetsdk(或者webplugin-inforeclipse安装好之后的plugins目下下的)安装录下的device_templates目录。在完成了export之后,可以看到在blackberry的widgetsdk的package目录下,会出现相应的source文件平台,我们还需要修改系统的API列表访问,这样才能最后在widget中访问调用到我们新添加的API。修改其中的WidgetConfigImpl.java,加入如下黑体的内容protectedWidgetConfigImpl(){_customHeaders=newHttpHeaders();_notifications=newHashtable();_accessList=newHashtable();_featureTable=newHashtable();_widgetExtensions=newVector();//setdefaultssetVersion();_widgetExtensions.addElement(net.rim.device.api.web.jse.BlackBerryWidgetToolkit.getInstance());_widgetExtensions.addElement(newwidgetpackage.SampleExtension());}步骤十四所有的这些设置做完之后,剩下来的就是要测试运行了,如开发入门中的方式我们可以添加一个新的widget。在你的计算机上创建一个c:\widget\alert目录(也可以工作在别的目录),在这个目录中生成两个index.html和config.xml文件,正如基础篇介绍的那样。定义的index.html和config.xml如下所示:htmlheadmetaname=viewportcontent=width=device-width;height=device-height/=text/JavaScriptfunctionvibrateAlert(){if(sample.alert.vibrateSupported){sample.alert.vibrate(1000);}elsealert('extensionnotsupported');}/script/headbodydivinputtype=submitvalue=Alertonclick=vibrateAlert()//div/body/htmlConfig.xml的内容如下:?xmlversion=1.0encoding=utf-8?widgetxmlns=:rim==1.0.0nameAlertWidget/namedescriptionSamplewidgetthatdemonstrateshowtousetheAlertAPItovibratetheBlackBerrySmartphone/descriptionauthorhref=:copyright=nocopyrightemail=author_name@authordomain.comCompanyName?AuthorName/authorcontentsrc=index.html/featureid=sample//widget在入门文档中,我们是通过eclipse自动打包这两个文件成cod的,这里我们也可以使用另外一种手工通过bbwp打包工具完成这一步,先zip然后生成cod。包,名为alert.zip然后执行如下命令这里的bbwp.exe位于安装好的widgetsdk的目录下面。在执行完上述命令后在命令行出可以看到如下输出,最后在zip同级目录下会生成一个bin目录,如果基础篇介绍的,bin目录下,我们可以发现最后生成的cod文件。验证完成这一步,就可以把模拟器自动启动了.最后在模拟器中或者真机上,就可以看到我们的widget的效果,如果上一篇基础篇的介绍那样,到这里,一个基于我们新的扩充的widget的开发API的新的widget的开发就完成了。点击Alert按钮,就可以体验我们新添加的API能提供的功能了。
本文标题:BlackBerry Widget 开发中级篇--BlackBerry 编程
链接地址:https://www.777doc.com/doc-3131892 .html