繁体   English   中英

在Blackberry中检测触摸屏?

[英]Detect touch screen in Blackberry?

我正在使用包含缩放缩放功能的Blackberry应用程序,但是该功能在触摸屏设备上有效。 我的应用程序也可以在设备的曲线类型上使用。

请让我知道“是否可以通过编程方式检测设备是否为触摸屏”,以便使我的应用程序灵活适用于两种类型。

自BlackBerry API 4.7.0起添加了触摸支持。 检查TouchEvent类的文档。

因此,如果要为在4.7.0或更高版本上运行的设备构建应用程序,则无需执行任何操作。 您可以编写与触摸事件相关的任务的代码,该应用程序将在触摸和非触摸设备上运行。 对于非触摸设备,将不会执行与触摸事件相关的代码。

但是,如果需要支持在4.7.0以下运行的旧设备,则需要使用预处理程序指令。

尝试使用以下链接在您的应用程序上使用预处理程序指令:

多个Blackberry设备的编码-在Eclipse中使用预处理程序指令

其他相关链接:

为工作区创建预处理程序指令

指定预处理程序指令

RIM编译器支持的预处理器指令

在BlackBerry JDE插件中使用预处理器指令进行蚀?

如何-在BlackBerry JDE中使用预处理器

如果您只需要支持OS 4.7+设备,则不需要使用预处理器。 您可以通过以下方式以编程方式测试触摸屏:

boolean isTouch = TouchScreen.isSupported();

Rupak在回答中建议的内容可能还不够(仅添加触摸处理代码,对于非触摸设备,它将被忽略)。 在您的情况下,如果要支持缩放功能,则可能需要主动检测非触摸设备(使用上面的代码),然后选择添加新的缩放ButtonField ,即使在具有该功能的触摸设备上也没有显示支持捏手势。 如果您不这样做,则非触摸设备将无法缩放,或者触摸设备的屏幕上会出现不必要的按钮。

但是, TouchScreen API仅适用于4.7+。 如果您还需要在较早的OS版本上运行相同的代码,则可以使用以下另一种方法:

boolean isTouch = (new Canvas(){protected void paint(Graphics graphics){}}).hasPointerEvents();

我的应用程序大多数仍然支持4.5+,甚至无法编译触摸处理代码。 因此,我通常依靠这种预处理器宏来选择性地编译不同的代码。 首先,在文件顶部

//#preprocess

然后,在文件内的任何位置:

//#ifndef TOUCH_SCREEN
/*
//#endif

// code only for touch devices:
import net.rim.device.api.ui.TouchEvent;

//#ifndef TOUCH_SCREEN
*/
//#endif

然后,对于要为部署到触摸屏设备而生成的构建,我添加TOUCH_SCREEN预处理器标志。 如果您不想为触摸设备和非触摸设备上传不同的应用程序包,只需使用Java代码( isTouch )以编程方式检测触摸屏,并使用预处理器删除在预编译中无法编译的代码4.7操作系统版本。

注意:这种有点令人困惑的“双重否定”预处理器逻辑不是一个错误。 就像在容纳BlackBerry的IDE(例如JDE,Eclipse,Netbeans)中处理预处理器的方式略有不同一样。 不幸的是,预处理不是标准化的J2ME功能,因此它的实现有点不稳定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM