BlackBerry Widget开发进阶

移动开发
对于很多应用开发来说,widget开发过程中,有些需求是系统API所不能满足的,还有一种应用场景是用户需要把原有Java系统的代码和功能与widget技术结合起来。

入门篇中,我们讨论了如何应用Blackberry提供的Widget API来进行开发,从如下链接中http://www.blackberry.com/developers/docs/widgetapi/

 

 

可以找到BlackBerry能提供的所有Widget API列表。然后,对于很多应用开发来说,widget开发过程中,有些需求是系统API所不能满足的,还有一种应用场景是用户需要把原有Java系统的代码和功能与widget技术结合起来。为了满足这两种开发和应用的需求,widget也提供了扩展机制,能够满足用户的这种需求。本文就以一个扩充Widget的API来实现手机在javascript中调用widgetapi来实现手机震动功能,这个API在标准Widget API中是没有实现的。

开发工具下载

在进行Widget开发之前,开发人员需要下载相应的开发工具,BlackBerry eclipse plug-in。本文使用的BlackBerry javaPlug-in for Eclipse版本为:v1.1.1(下载地址如下):

http://na.blackberry.com/eng/developers/browserdev/eclipse.jsp

这个plug-in的作用是给用户开发Widget扩展API使用的。

开发具体步骤

步骤一

启动Eclipse,File New Project,选择BlackBerry Project,然后选择Next:

 

 

步骤二

在接下来的对话框,输入project的名字My Widget Extension,然后选择Next

 

 

步骤三

接下来,会出现project的视图,图中可以看到系统已经添加了新的project,在project的src目录下点击右键,然后添加一个package名字为widgetpackge。

 

 

步骤四

在新建好的widgetpackage上点击右键,添加一个新的class,名为Alert Sample,让他继承net.rim.device.api.script.Scriptable.

 

 

步骤五

添加好的class的基本框架如下所示:

 

 

这个class的作用是用来映射在Widget应用中的调用逻辑。当在JavaScript的代码中通过”.”操作符号调用扩展的API时,get Fiel()便会被调用。这个函数在Alert Sample中的实现如下:当它被调用后,便会检查当前device中vibrate功能是不是被支持。

 

 

步骤六

然后,添加一个vibrateclass类,让他继承自net.rim.device.api.script.ScriptableFunction.

 

 

步骤七

添加好的class的代码框架如下所示:

 

 

在自动生成的代码框架中加入如下代码,这段代码的作用是让设备震动一段时间。

 

 

步骤八

接下来,我们将把AlertSample和vibrate两个class连接起来。在AlertSample中加入如下代码:

 

 

这些代码的作用是让Alert Sample能够调用vibrate的实例,然后在Alert Sample的getField()中加入如下函数实现代码

 

 

步骤九

***,添加Sample Extension class到项目中,创建class的时候确保public和final修饰符被选中,让sample ext ension class继承自net.rim.device.api.web.Widget Extension.

步骤十

生成好的class框架如下所示:

 

 

这里的几个主要方法的作用描述如下:

get Feature List()–这个方式是为了给widget引擎提供我们新的widget扩成能提供的feature list列表,如基础篇介绍,这里的feature就是widget开发过程中可以加入的access的资源。

load Feature()–这个方法是当widget使用相应的widget engine提供的feature时候,可以执行的一些任务,这个一般就是widget引擎加载进来我们extensionapi的入口点。

register()–这个方法提供一个入口插入点,扩充的widget程序可以自动执行一些对当前widget配置文件和浏览器的操作。

unloadFeatures()–这个是一个入口点,可以加入一些逻辑,如果需要做一些清理工作当widget退出出这个api调用的时候。

步骤十一

在上步生成的SampleExtension的getFeatureList中添加如下代码:

 

 

在loadFeature中,添加如下代码:

 

 

步骤十二

在完成widget扩充api的具体开发和定义工作之后,剩下的就是把widget发布到BlackBerry的widget平台中,这一步是通过export相应的Java文件完成的。根据基础篇里面的信息,我们需要把我们做好的java文件export到相应的widget sdk的目录下。右键选择项目,然后选择Export

 

 

在出现的对话框中,选在general下的filesystem然后下一步:

 

 

不管是用户使用Blackberry的widget sdk还是基于eclipse的web plug-in做widget开发发布,我们都需要把这里做出来的java文件export到相应widget sdk安装目录下的devicet emplates目录下。在上图中选择Export之后,在出现的对话框中选中src目录,确保源文件会被export出来。

 

 

这里的Todirectory,选择为相应的开发机器上的widget sdk(或者web plug in-in for eclipse安装好之后的plugins目下下的)安装录下的device_templates目录。在完成了export之后,可以看到在blackberry的widgetsdk的package目录下,会出现相应的source文件

 

 

步骤十三

出了发布source文件在widget平台,我们还需要修改系统的API列表访问,这样才能***在widget中访问调用到我们新添加的API。

 

 

修改其中的Widget Config Impl.java,加入如下黑体的内容

  1. pro tecte d W i d g etC on f i g I m p l() {  
  2.  
  3. _ cus to m Head er s = n e w Http H ead er s () ;  
  4.  
  5. _ n o tif icat io n s = n e w Has h tab l e() ;  
  6.  
  7. _ ac ce ss Lis t = n e w Has h tab le() ;  
  8.  
  9. _ f ea tu r eT ab le = n e w Ha sh tab l e() ;  
  10.  
  11. _ w id g etE x te ns io n s = n e w Vec tor() ;  
  12.  
  13. //s et d ef a u lt s s etVer sio n () ;  
  14.  
  15. _ w id g etE x te ns io ns .add Ele m e n t(  
  16.  
  17. n et.r i m .d e v ice. ap i. w eb .j s e.B lack B err y W id g etT oo lk it.g etIn s t an ce()) ;  
  18.  
  19. _w id ge tExte n sion s.a d d Eleme n t( n e w w id ge tpac k age .S am p leExte n sion () );  
  20.  
  21. }  

步骤十四

所有的这些设置做完之后,剩下来的就是要测试运行了,如开发入门中的方式我们可以添加一个新的widget。在你的计算机上创建一个c:\widget\alert目录(也可以工作在别的目录),在这个目录中生成两个index.html和config.xml文件,正如基础篇介绍的那样。

定义的index.html和config.xml如下所示:

  1. < head > 
  2.  
  3. < m et a nam e="v i ew por t " cont ent = " wi dt h= dev i ce -wi dt h; h ei ght = dev i ce- hei ght " / > 
  4.  
  5. < scri pt t y pe=" t ext/ J av aScri pt " > 
  6.  
  7. f uncti on v i br at eA l ert( ) {  
  8.  
  9. i f ( sa m pl e.al er t .vi br at eSuppo rt ed)  
  10.  
  11. {  
  12.  
  13. }  
  14.  
  15. el se  
  16.  
  17. }  
  18.  
  19. sa m pl e.al ert .v i br at e( 10 00) ;  
  20.  
  21. al ert( ' ext ensi on not support ed' ) ;  
  22.  
  23. < / scri pt > 
  24.  
  25. < / head > 
  26.  
  27. < body > 
  28.  
  29. < di v > 
  30.  
  31. < i nput t y pe=" subm i t " v a l ue=" A l ert " oncli ck="v i br at eA l ert() " /> 
  32.  
  33. < / di v > 
  34.  
  35. < / body > 
  36.  
  37. < / ht m l > 

Config.xml的内容如下:

  1. < ? xm l v er si on" 1.0" encodi ng" ut f- 8" ? > 
  2.  
  3. < wi dget xm l ns=" htt p:/ / ww w . w 3.or g/ ns/ wi dget s" xm l ns: r i m = " htt p: / / ww w .bl ackber r y .co m / ns/ w i dget s" v er si on" 1.0.0" > 
  4.  
  5. < nam e> A l er t W i dget < / nam e> 
  6.  
  7. < des cri pti on> 
  8.  
  9. Sam pl e wi dget t hat dem onst r at es how t o use  
  10.  
  11. t he A l er t A P I t o v i br at e t he Bla ck Berr y S m art phone  
  12.  
  13. < / des cri pti on> 
  14.  
  15. < aut hor hr ef = " htt p://w w w .r i m .co m / " 
  16.  
  17. r i m : cop y ri ght = " no cop y ri ght " 
  18.  
  19. em ail = " aut hor _nam e@aut hor dom ai n.com " > Com pany N am e ? A ut hor N a m e  
  20.  
  21. < / aut hor > 
  22.  
  23. < cont ent sr c = " i ndex.ht m l " / > 
  24.  
  25. < f eat ur e i d" sa m pl e" /> 
  26.  
  27. < /wi dget > 

在入门文档中,我们是通过eclipse自动打包这两个文件成cod的,这里我们也可以使用另外一种手工通过bbwp打包工具完成这一步,先zip然后生成cod。

首先把这两个文件压缩为一个zip包,名为alert.zip

然后执行如下命令

 

 

这里的bbwp.exe位于安装好的widget sdk的目录下面。在执行完上述命令后在命令行出可以看到如下输出,***在zip同级目录下会生成一个bin目录,如果基础篇介绍的,bin目录下,我们可以发现***生成的cod文件。

 

 

验证

完成这一步,就可以把模拟器自动启动了.***在模拟器中或者真机上,就可以看到我们的widget的效果,如果上一篇基础篇的介绍那样,到这里,一个基于我们新的扩充的widget的开发API的新的widget的开发就完成了。点击Alert按钮,就可以体验我们新添加的API能提供的功能了。

 

【编辑推荐】

  1. BlackBerry Java 开发环境搭建及插件安装
  2. BlackBerry应用开发指南 监听UI对象的改变
  3. BlackBerry应用开发者指南 创建客户定制的UI组件
责任编辑:佚名 来源: BBturials
相关推荐

2011-05-03 15:13:23

BlackBerryWidget

2013-12-27 09:54:58

Android开发NDK

2012-02-07 10:05:40

jQuery MobijQuery Mobi

2010-12-23 09:11:17

读写Android文件

2011-08-17 16:23:31

iPhone开发UIViewContr

2011-08-17 16:29:12

iPhone开发UIButton

2021-01-20 08:16:06

异步Dotnet Core多路径

2014-01-07 14:53:37

Android开发依赖注入Roboguice

2010-05-22 16:57:09

BlackBerry开

2010-06-22 16:19:01

Black Berry

2011-10-18 10:25:08

Android应用开发

2011-10-18 10:17:39

Android应用开发

2011-08-17 16:12:20

iPhone应用程序

2011-08-17 16:16:29

iPhone应用程序启动过程

2011-05-03 16:41:04

BlackBerry

2011-09-09 20:14:58

Android Wid

2010-07-13 09:02:19

Widget开发

2023-08-01 08:52:03

WebRTC.Net线程

2011-09-07 17:54:40

Android Wid开发

2010-06-23 09:14:15

Widget开发
点赞
收藏

51CTO技术栈公众号