如何检测设备是否具有钛金属触摸屏

How can I detect if a device has a touch screen in Titanium?

本文关键字:金属 触摸屏 检测设备 是否      更新时间:2023-09-26

我的目标是使用Titanium的Android。如何判断设备是否有触摸屏?

最简单的方法是测试触摸事件支持。如果支持它们,则设备可能具有触摸屏。如果没有,它可能没有,或者您无论如何都无法使用它们。一种解决方案是:

var touchSupported = ('ontouchstart' in window);
但要小心,因为浏览器可能支持触摸事件,

但设备可能不支持(例如,Chrome 20 支持没有触摸的设备中的大量触摸事件)。

您可以让用户单击按钮,并查看是调度了触摸事件还是仅单击。

这就是我想出的解决方案。这真的很愚蠢,但它有效。无论在何处创建应用程序窗口,请添加以下代码:

function touchStart(){
    Titanium.App.Properties.setBool("touch", true);
    self.removeEventListener("touchstart", touchStart);
}
self.addEventListener("touchstart", touchStart);

self替换为窗口的名称。现在,首次检测到触摸事件时,将设置应用程序属性。

稍后,检查是否存在触摸:

var touchSupported = Titanium.App.Properties.getBool("touch", false);

如果要在模拟器上对此进行测试,则即使更改"设备",该属性也可能保留。因此,请在其他任何内容之前添加此行:

Titanium.App.Properties.setBool("touch", false);