`

BlackBerry按键捕捉分析

阅读更多

版权所有,转载请注明来自 : http://mdev.cc SinFrancis

 

有JE的朋友问我关于BB上捕捉按键的一些问题,总结了一下,写了此文章。

 

BB上的所有UI视图的父类是一个叫做Field的类,此类中有keyDown  keyChar等相关的方法。

那么BB上并不能像Android上可以直接对某个组件进行set监听事件的方法,那么我们应该怎么样做呢?

我们可以重写这些关于key的方法。

 

 

那么分析一下这些方法如何运行的:

BB上的最外层的组件是Screen,此组件中可以包含Manager 、Field等子类,那么当按下某个键的时候,系统会捕获到

这个按键的值,然后传递给Screen,Screen的决定是否要处理此消息,如果处理的话,就不再传递给子组件处理,如果不处理,那么就会交给子组件中当前聚焦的那个组件来处理,写的比较难懂。。。

 

 

举个例子:

我们在Screen类中重写了 keyDown方法,例如:

 

protected boolean keyDown(int keycode, int time) {
		System.out.println("Screen1.keyDown():"+keycode);
		return true;
	}

 此方法返回true,那么表示当前key事件由Screen处理,不会再往下传递给子组件。如果返回false则反之。

 

如果Screen或者父组重写了捕捉key事件的方法,并且返回true,那么子组件是接收不到消息的。

 

关于keyDown和keyChar两个方法。keyDown优先于keyChar,如果一个组件中这个两个方法同时被重写,并且keyDown返回了true,那么keyChar是不能被调用的。

 

请看代码:

 

import net.rim.device.api.ui.Keypad;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.ActiveRichTextField;
import net.rim.device.api.ui.container.MainScreen;


/**
 * @site http://androidos.cc http://mdev.cc
 * @author SinFrancis Wong
 * @since 2009-12-09
 *
 */
public class Main extends UiApplication {
	public Main() {
		pushScreen(new Screen1());
	}

	public static void main(String[] args) {
		Main m = new Main();
		m.enterEventDispatcher();
	}
}

class Screen1 extends MainScreen {
	ActiveRichTextField f;

	public Screen1() {
		f = new ActiveRichTextField("catch key....") {
			protected boolean keyChar(char c, int status, int time) {
				
				//keyChar方法似乎捕捉不到menu按键事件,可以用keyDown捕捉
				System.out.println(".keyChar():"+c);
				if (c == Keypad.KEY_BACKSPACE) {
					//捕捉Back space键
					f.setText("catch the KEY_BACKSPACE key...");
					return true;
				} else if (c == Keypad.KEY_ESCAPE) {
					//捕捉back键
					f.setText("catch the BACK key...");
					return true;
				} else {
					f.setText("catch other key value is  :" + c);
					return true;
				}
			}
			
			protected boolean keyDown(int keycode, int time) {
				if (keycode == 268566528) {//menu的int值
					f.setText("catch the MENU  key...");
				}
				System.out.println(".keyDown():"+keycode);
				return false;
			}
		};
		add(f);
	}
	
	protected boolean keyDown(int keycode, int time) {
		System.out.println("Screen1.keyDown():"+keycode);
		return false;//交给子组件处理
	}
}
 

 

 

以上代码在BB 9500机器上测试是正常捕捉按键事件的。

如果将最后的一段keyDown代码返回true,点击是没有任何反应得(在debug模式下能看到打印的消息),因为消息没有往下传递,全部被Screen消耗掉了。

 

protected boolean keyDown(int keycode, int time) {
		System.out.println("Screen1.keyDown():"+keycode);
		return true;//交给子组件处理
	}

 

 

 

分享到:
评论
11 楼 王山而 2010-06-17  
bb建议一个程序要么只用bbUI,要么只用j2me UI,不能交叉使用。
10 楼 sinfrancis 2010-06-07  
pdw2009 写道
楼主这一贴主要是针对一个固定的field进行键捕捉,俺发一个screen的按键捕捉
http://www.iteye.com/topic/684809
为什么有问题呢



针对SCREEN的按键捕捉应该是一个道理,首先是SCREEN接收到按键,在你重写捕捉方法的时候,有个返回值决定了是否继续传入到当前聚焦的field中,所以请LZ详细看一下我写的文章。
9 楼 pdw2009 2010-06-05  
不会吧,发了一个贴俺的俺的又少了一颗星
8 楼 pdw2009 2010-06-05  
楼主这一贴主要是针对一个固定的field进行键捕捉,俺发一个screen的按键捕捉
http://www.iteye.com/topic/684809
为什么有问题呢
7 楼 pdw2009 2010-06-05  
sinfrancis 写道
操作文件和连接网络可以使用J2ME的库。

发现楼上对blackberry jde开发很有研究
6 楼 sinfrancis 2009-12-11  
操作文件和连接网络可以使用J2ME的库。
5 楼 wuhua 2009-12-11  
conmind 写道
两套ui貌似是不能交叉用的,记得黑莓的开发文档的前几页就说这个来着,保留着j2me的ui是为了jar2cod吧,如果要用黑莓特有的一些功能,只能用黑莓的ui,这个问题曾经也困扰了我好久,最后发现没办法互相通用,就没折腾了


BB 这点做的不够好, 要么就不用, 要么就要考虑到兼容性, 而且J2ME下面的Canvas 也不能做全部的事情.
4 楼 conmind 2009-12-11  
两套ui貌似是不能交叉用的,记得黑莓的开发文档的前几页就说这个来着,保留着j2me的ui是为了jar2cod吧,如果要用黑莓特有的一些功能,只能用黑莓的ui,这个问题曾经也困扰了我好久,最后发现没办法互相通用,就没折腾了
3 楼 sinfrancis 2009-12-09  
如果在BB下开发,还是建议使用BB的UI
2 楼 sinfrancis 2009-12-09  
J2ME的情况我没有做过!!
1 楼 wuhua 2009-12-09  
这个只是在BlackBerry本地应用程序才生效啊,
如果我想在J2ME 的MIDlet下面实现KeyListener, 尝试过好像不行.
你有什么好的建议吗

在MIDlet下实现菜单键跟返回键的处理

相关推荐

    GPIO-KEY_LED_STM32F103_黑莓key1按键灯_按键_

    标题中的"GPIO-KEY_LED_STM32F103_黑莓key1按键灯_按键_"表明我们将在STM32F103微控制器上使用GPIO(General Purpose Input/Output)接口来处理按键(KEY)输入和LED灯输出。这个项目特别关注的是通过黑莓key1按键来...

    老黑莓OS经典软件合集大全,独家整理,适合黑莓blackberry 7XXX 8XXX 9XXX等黑莓老机型.zip

    老黑莓OS经典软件合集大全,独家整理,适合黑莓blackberry 7XXX 8XXX 9XXX等黑莓老机型,格式为cod , alx,jad等格式;;怀旧经典,软件清单如下 Twitter70.zip WacaiBlackberry.zip [BerryCN.com_DZH_v5.18] XECurrency-...

    黑莓blackberry Anyview

    黑莓blackberry阅读工具 支持格式txt

    7290 bb blackberry黑莓

    7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓...

    黑莓桌面管理器 BlackBerry Desktop Manager 5.0.1 B73多国语言版

    ### 黑莓桌面管理器 BlackBerry Desktop Manager 5.0.1 B73多国语言版 #### 一、概述 黑莓桌面管理器(BlackBerry Desktop Manager)是为黑莓设备设计的一款桌面软件,旨在帮助用户更高效地管理其黑莓手机上的数据...

    黑莓替代滚轮的软件

    这个物理滚轮是黑莓手机上的一个标志性设计,它允许用户在菜单、联系人、邮件等应用之间快速浏览和选择,而无需反复触屏或按键。然而,这种机械结构随着时间的推移可能会出现磨损,导致灵敏度下降或完全失效。 为了...

    黑莓手机usb驱动(BlackBerry USB Driver)

    黑莓usb驱动是一款黑莓手机专用驱动,已经装了桌面管理器的电脑就不需要安装了。没有装桌面管理器,又想访问TF卡,装这个就可以了。驱动介绍相信大家在第一次使用黑莓手机连接电脑的时候都出现了没有反应的问题了,...

    blackberry chinese黑莓 中文

    【黑莓中文输入法详解】 黑莓手机,以其独特的全键盘设计和强大的商务功能,在早期深受用户喜爱。本文将详细讲解如何在黑莓设备上设置和使用中文输入法。 1. **输入区域设置(Input Locale)** 黑莓手机支持多...

    黑莓blackberry8700g游戏软件经典集合

    黑莓Blackberry 8700g是一款经典的智能手机,它在2006年推出,以其独特的全键盘和优秀的电子邮件功能赢得了商务人士的青睐。这款手机不仅在通信和办公方面表现出色,还拥有一定的娱乐功能,包括游戏和各种实用软件。...

    黑莓软件大全 黑莓软件集合下载 2011.3.16

    【标题】"黑莓软件大全 黑莓软件集合下载 2011.3.16" 提供的是一份2011年3月16日更新的黑莓手机软件资源集合,其中包含了适用于黑莓操作系统的各种应用程序。这个集合可能是一个方便用户一次性获取多个黑莓软件的...

    黑莓桌面管理器4.2

    **黑莓桌面管理器4.2详解** 黑莓桌面管理器4.2是一款专为Blackberry OS 5.0及以下版本设计的管理工具,它为用户提供了与黑莓手机进行高效交互的平台。这款软件以其简洁的界面和易于操作的特点,深受黑莓用户的喜爱...

    qq-blackberry.zip 黑莓QQ

    【标题】"qq-blackberry.zip 黑莓QQ" 指的是一个专为黑莓手机设计的QQ应用程序的压缩包。黑莓QQ是腾讯公司针对黑莓操作系统的智能手机开发的一款即时通讯软件,允许用户在黑莓设备上实现与PC版QQ类似的聊天、文件...

    黑莓版QQ_1.0.2.95_blackberry_beta

    《黑莓版QQ_1.0.2.95_blackberry_beta》是专为黑莓手机用户设计的一款即时通讯应用程序,版本号1.0.2.95表明这是该软件的早期测试版本,通常用于在正式发布前进行功能测试和性能优化。"beta"标签意味着它可能还存在...

    BlackBerry(黑莓)开发入门教程最新版

    **BlackBerry(黑莓)开发入门教程最新版** 在移动应用开发领域,BlackBerry(黑莓)曾经占据一席之地,尤其在商务用户中颇受欢迎。尽管近年来市场份额有所下降,但仍有开发者对其平台感兴趣,尤其是对于历史项目...

    Blackberry黑莓手机一键WIPE程序V1.0版

    Blackberry黑莓手机一键WIPE程序V1.0版是一款专为Blackberry用户设计的实用工具,主要用于清理和重置设备。在深入了解这个程序之前,我们先来了解一下什么是Blackberry手机,以及WIPE操作在手机维护中的作用。 ...

    BlackBerry黑莓手机软件安装方法.pdf

    ### 黑莓手机软件安装全攻略 随着对黑莓手机的深入使用,用户往往会产生尝试新功能、增强体验的需求,这就涉及到软件的安装。本文旨在详细介绍黑莓手机软件的多种安装方法,帮助新用户轻松上手,同时也为资深用户...

    黑莓(BlackBerry)开发从入门到精通

    3. **用户界面设计**:黑莓设备通常具有物理键盘,因此在设计UI时要考虑触控与按键操作的兼容性。使用BlackBerry提供的GUI组件,如Manager类和Field类,可以创建适应不同屏幕尺寸和方向的用户界面。 4. **网络编程*...

    黑莓手机品牌战略分析-精品课件.pptx

    【黑莓手机品牌战略分析】 黑莓手机,源自加拿大RIM公司,以其独特的QWERTY全键盘设计和Push Mail技术赢得了全球用户的青睐。黑莓手机最初被设计为无线手持邮件解决方案,但随着时间的推移,它逐渐演变为集通信、...

Global site tag (gtag.js) - Google Analytics