如何将MIDlet应用移植到BlackBerry(二)

作者: 邓明轩、王恒进、王志刚

 

 

左右软键的处理

 

 

很多 j 2 m e MI Dl et 使 用左 ,在 分别 左软 用户 提示 右软 程序 响应 应用

但是 B la ck Be rry 有左 右软 的操 行适 的是 如果使 Com m an d A ct io n 些操 动添 Bla ck B er r y 单中 时候 Com m an d 于这 种情 的代

如果 右软 使 听左 对程 进行 调整 Bla c kB er r y 机上 软键 公网 种简 的调 方法 键盘 Q 映射 左软 ,将 P ”键 右软 。使 用这 要修 代码 侦听 Q 件时 执行 应代 ,当 P 点击 件时键响 应代 。这然简 单可 有一 个可 能工 输入 Q P 字母 Bla ck Be rry 户的 操作 惯。

一个 菜单 退出 使 用这 方法 的做 事件 退事件 这两 执行

 


代码 。有使 用标 j 2 m e 式获 B la ck Be rry 上的 菜单退 ,发 标准的 j 2 m e 这里 件和退 为关

Bla ck Be rry 键事退 通过 Ke yList ene r 开发 可以加一 K e yList ene r 当这 按键 时,

K e yList en er 器的 k e yDo wn 执行 发人现这 k e yD o wn 取当 是哪 菜单 是退 出键 键或 辑。

所开 Ke yList ene r 需要 实现 n et .rim .d ev ic e.ap i .s y s t em. K e yList ener 下代码所 示:

public class MyKeyListener implements

net.rim.device.api.system.KeyListener

该接 方法 k e yDo wn 键事 码如 下:

public boolean keyDown( int arg0, int arg1) {

其中 的按 数是 时间 不做 重复按键处 的情况下, 一般只需 使用第 数。使用 值的方 过调用   Ke ypa d

k e y 换成 标准 后与 K e ypa d 中对 较, 的标准值 K e ypa d. KEY _M ENU 退 K e ypa d. KE Y_ E S CAP E 其中 K e yP a d 在包 net .rim .d ev ic e.ap i. ui   虽然是   ui   ,但 是我使 成员 使用

ui 会和   MI Dl et   U I

此外 方法 k e yDo wn 有布 尔类 t ru e 费, 不会 返回 f als e 的话 消费 事件 发人 应左 处理 到菜 时需 t rue 值。

具体 样例 码:

package cn.searb.keymenu;

 

 

import net.rim.device.api.ui.Keypad;

 

 

public class MyKeyListener implements

net.rim.device.api.system.KeyListener {

 

 

public boolean keyChar( char arg0, int arg1, int arg2) {

// TODO Auto -generated method stub

return false ;

}

 

 

public boolean keyDown( int arg0, int arg1) {

 

 

if (Keypad. key (arg0) == Keypad. KEY_MENU ) {

// 执行菜单 应代 , 左软键 应代码

return true ;

 

} else if (Keypad.key (arg0) == Keypad. KEY_ESCAPE ) {

// 执行退出 响应 , 即右软 响应

return true ;

}

return false ;

}

 

 

public   boolean keyRepeat( int   arg0,   int   arg1)   {

// TODO Auto -generated method stub

return false ;

}

 

 

public boolean keyStatus( int arg0, int arg1) {

// TODO Auto -generated method stub

return false ;

}

 

 

public boolean keyUp( int arg0, int arg1) {

// TODO Auto -generated method stub

return false ;

}

 

 

}

 

 

开发 统启 加到 要调 用的 a dd Ke yList ene r MI Dl et 中加 器。

App li ca t io n. g et App li ca t io n() .a dd K e yList ene r( n ew M yK e yList ener ( ) ) ;

其中 Ap pl ic a t io n. g et App li ca t io n() 用于 a dd K e yList en er 用于 添加 侦听

添加代码   MI Dl et   可以退 响应 需要 的是 Bla ck B er r y 习惯 使用退退 “取 关闭否定 性操 以在 移植   MI Dl et   右软退 “取 等操

要放 “开

 

 

滚轮操作的映射

 

 

如第 早的 Bla ck B er r y 用户 在这 机型 上没 户通

在这 轮点 的侦 于键 的一 部分   Ke yList ene r   法侦 ,如退 ,虽 布和 ,但使 K e yList en er 行侦 听。

响应听器   net .rim .d ev ic e.ap i. s y s t em. T r ac kwhe elLi s t ene r 发人 员需

现这 该接 轮滚 点击 点击 要实方法

t r ac kwhe elCli ck

 

一个 码如

package cn.searb.keymenu;

 

 

import net.rim.device.api.system .TrackwheelListener ;

 

 

public class MyTrackWheelListener implements TrackwheelListener {

 

 

public boolean trackwheelClick( int status, int time) {

// 执行滚轮 击响 代码

return true ;

}

 

 

public boolean trackwheelRoll( int amount, int status, int time) {

// TODO Auto -generated method stub

return false ;

}

 

 

public boolean trackwheelUnclick( int status, int time) {

// TODO Auto -generated method stub

return false ;

}

}

 

发了滚 侦听器 可以 过应用 序的     a dd T r ac k wheel List ene r   方法为 加滚轮

侦听 下:

Application.getApplication ().addTrackwheelListener ( new

MyTrackWheelListener());

其中   App li ca t io n. g et App li ca t io n() 用实 例, a dd T r ac kwh ee lLi s t ene r  加侦 器。

 

其它按键操作

 

 

bl ac kB er r y 一些 静音 事件 以通 过标 j 2 m e Can v a s k e yP re ss e d 法获

开发   k e yP r e ss e d 行处 理:

protected void keyPressed( int keyCode)

参数 k e yCod e 用户 按下 员可 k e yCod e= = 用户 按下 哪个 Bla c kB er r y n et .rim .d e vice.a pi .s y s t em. Cha r ac t er s 了很 多常

  Cha r ac t er s . C ONTR O L_V OL U ME_U P    Char ac t er s . C ONTR OL_ V OL U ME_DO W N   为减少 量键的 值,开发人员 以使用这 常量进 行判 接使 过测 常量 的健 值不 使 进行 比如 量键 的键 -15 0 ,减 音量键的 - 1 5 1 ,左快捷键的 - 2 1 ,右 捷键的键 -1 9

当然 方法中通   S y s t em.o ut .p rin t ln () 键值 打印 面上 键值 代码 段:

 

protected void keyPressed( int keyCode)

{

if (keyCode== -150)

{

System. out .println( "volume up " );

}

else if (keyCode== -151)

{

System. out .println( "volume down " );

}

}

使用 般的 键的处理 建议 尽量 使用 件进 输入 框等 输入利用 平台 输入 法等响应 键盘 件。 对于 响应 虑不类型 全键

S ure T yp e 型的 差别 需要

 

 

提醒用户

 

 

手机 分和 一个 手机 能对 般常 灯等 Bla c kB er r y 平台 以通 过修 屏幕 用户。

 

通过响铃提醒 用户

 

 

响铃 式, j2m e 使 P la y er ,当 件发 播放 因为 Bla ck B er r y 持标 j 2 m e 这种使 P la ye r 的方 Bla c kB er r y 平台 使 码进 时播大小 短都 来的使 景设 “静 不振 “响 以在 为用 置这 声音 等。

 

 

通过振动提醒 用户

 

 

在标   j 2 m e     Dis pl a y . vi br a t e( ) 可以 让设   Bla ck Be rry 设备 动的 接在 Bla ck B er r y 上使 备是 否振 全由 设置 法与 节中 提到 同样 通过 问题。

 

 

通过状态灯提

 

 

  Bla ck B er ry   平台上开发人员 可以通过闪烁状态灯来 醒来户,开发人员可以

 

 

AP I 、关状态、闪 此外 果设话,还 设置 颜色。

Bla ck Be rr y 位置

 

 

 

 

 

 

如何将MIDlet应用移植到BlackBerry(二)_第1张图片

 

用于   n e t .rim .d ev ic e.ap i. s y s t em.LED ,它 主要

法为   s etS t a t e 状态 态。 s etS t a t e   方法 望改 目标 状态 数为 in t 类型 但是 间的 LED .S T A TE _ON L ED .S T A TE_ OF F LED .S T A TE_ BLI NK I NG L ED .S T A TE_ A U DI O_S Y NC 。常   LED .S T A TE _ON L ED .S T A TE_ OF F LED .S T A TE_ BLI NK I NG 它们 的效 为:

l      LED .S T A TE_ ON 灯打

l      LED .S T A TE_ OF F 灯关闭

l      LED .S T A TE_ BLI NK I NG 使 态灯

s etS t a t e LED .isS up po rte d 法判 状态 化, 变化 if ( LED .isS up p o rt e d(L ED .LED _T YP E_S T A TU S ) )

另外 注意 s etS t a t e 方法 isS up po rt e d 受固 如果 开发 没有 些不参数 Il leg al Ar g um en t Ex ce pt io n

下面 片段:

if (LED.isSupported (LED. LED_TYPE_STATUS )) { LED.setState (LED. STATE_ON );

}

 

 

 

通过主屏幕标 提醒用

 

 

Bla ck Be rr y 可以 通过 图标 边的 是主 系统 示有 1 系统 示有 可以 用自 三个 由程 序添标记 可以 么时 该标 指定

 

主屏记通   App li ca t io nI nd ic a t o rR eg is t ry   App li ca t io nI nd ic at o r 进行操作 首先

App li ca t io nI nd ic a t o rR e g ist ry App li ca t io nI nd ic a t o r 记是 否显 显示 字。

具体

1 .           App li ca t io nI nd ic a to rR eg is t ry                         g et In s t an ce ( )           

App li ca t io nI nd ic at o rR eg is t ry 实例。

2 .      调用   A pp li ca t io nI nd ic a to rR eg is t ry 实例的   r eg ist e r 方法 注册 记。

App li ca t io nI nd ic at o rR eg is t ry        r eg ist er    App li ca t io nI c o n 用于指定标记 使用的图标 这个图标 以后可以通 程序更换 第二个 参数 标记 个参 于指标记 否可 以后 改。

下面 段:

EncodedImage readimage   = EncodedImage

.getEncodedImageResource ( "cn/searb/demo/icon/indicator.png" );

 

 

ApplicationIndicato rRegistry indicatorRegistry = ApplicationIndicatorRegistry. getInstance ();

 

 

ApplicationIcon icon = new ApplicationIcon( readimage );

 

 

indicatorRegistry.register(icon, false , false );

在注 序在 标记操作 修改 的操

1 .           App li ca t io nI nd ic a to rR eg is t ry                         g et In s t an ce ( )           

App li ca t io nI nd ic at o rR eg is t ry 实例。

2 .      通过   App li ca t io nI nd ic a t o rR eg is t ry 实例的   g et App li ca t io nI nd ic a t o r 方法获

App li ca t io nI nd ic at o r 实例。

3 .      通过   A pp li ca t io nI nd ic a to r   s et V al u e 设置 要显

4 .      通过   A pp li ca t io nI nd ic a to r   s et Ic o n 显示 图标

5 .      通过   A pp li ca t io nI ndic a to r   s et V is i bl e 设置 该标 可见

3 , 4 , 5 赖关 系, 用其 方法。 下面 段:

ApplicationIndicatorRegistry indicatorRegistry = ApplicationIndicatorRegistry. getInstance ();

 

 

ApplicationIndicator indicator =

indicatorRegistry.getApplicationIndicator() ;

 

 

ApplicationIcon icon = new ApplicationIcon( readimage );

 

indicator.setValue(number); indicator.setIcon(icon); indicator.setVisible( true );

 

 

 

 
 

 

 

BlackBerry SDK下载

 

  • BlackBerry Java Plug-in for Eclipse v1.1
  • Java Plug-in for Eclipse Update Site
  • BlackBerry Web Plug-in v2.0
  • BlackBerry Widget SDK v1.0
  • BlackBerry Theme Studio v5.0
  • Plazmic Content Developer’s Kit v4.7
  • BlackBerry smartphone simulators
  •  

    相关链接:

    如何将MIDlet 应用移植到BlackBerry (一)

    如何将MIDlet 应用移植到BlackBerry (二)

    如何将MIDlet 应用移植到BlackBerry (三)

    如何将MIDlet 应用移植到BlackBerry (四)

    你可能感兴趣的:(eclipse,command,手机,BlackBerry,平台,j2me)