检测黑莓手机上的触摸

Detecting touch on Blackberry phones

本文关键字:触摸 手机 检测      更新时间:2023-09-26

我正在开发一款网络应用程序,该应用程序将部署在各种设备上,从台式机到安卓手机,再到黑莓手机。必须支持这种不同的设备,存在两种不同的界面:触摸和非触摸。

问题是,没有触摸支持的黑莓设备,如黑莓9300,错误地显示为支持触摸事件。即

'ontouchstart' in window;

返回CCD_ 1。

到目前为止,我只是依赖浏览器嗅探,尽管它很糟糕:

if (window.navigator.userAgent.match(/BlackBerry/i)) {
    doStuff();
}

但现在我必须支持黑莓火炬,触摸,所以后者将不再工作。当然,我可以尝试一个更精确的正则表达式来进行浏览器嗅探,但我觉得我正在走向灭亡。

有没有一种更可靠的方法来检测对触摸事件的支持,这种方法也适用于黑莓设备?

我不知道有任何内置属性可以检测触摸支持,但您可以使用设备名称来区分这两种情况:

public boolean hasTouchScreen()
{
   if (DeviceInfo.getDeviceName().startsWith("95")){
      return true;
   }
   else if (DeviceInfo.getDeviceName().startsWith("93")){
      return false;
   }...//other devices
    ...
   else{
      return false;
   }
}

这是一种相当不文明的做法,但它仍然有效。