确定设备是否具有触摸屏

我的应用程序在标准手机上运行,​​但它也运行在Android播放器上,通过HDMI连接到我的电视并使用鼠标进行导航。 有没有一种方法可以通过编程来决定设备是否支持触摸屏,这样我就可以区分两种导航方式了吗?

我试过这个,但它在两个设备上都返回true:

getPackageManager().hasSystemFeature("android.hardware.touchscreen");

PackageManager将引用可能具有触摸屏的Android播放器本身。 它无法检测播放器显示是否通过HDMI路由到外部显示器。 当您询问包管理员时,如果设备有触摸屏,则指的是播放器而不是外部显示器。

你可以做的一件事是通过检查HDMI端口是否激活并相应地改变导航来检测播放器是否连接到外部显示器。

请参阅:检测android设备中的HDMI端口

附注:如果播放器没有触摸屏,但包管理器错误地报告它确实如此,那么它可能是包管理器的错误,或者Android的设备制造商实施可能是错误的。


使用OnTouchListener而不是OnClickListener

OnTouch为您提供更好的反馈,并且它可以处理OnClick已经做的所有事情。 对这两种情况做这件事(所以不需要弄清楚哪种情况是哪种情况)。

有些开发人员甚至使用OnTouchListeners而不是OnClickListeners,即使他们只处理非触摸设备(因为他们声称可以提供更好的性能和更快的响应)。

就我个人而言,我不知道最后的声明是否属实,但我同意那些开发者没有任何缺点(我知道)使用OnTouchListener而不是OnClickListener。

链接地址: http://www.djcxy.com/p/14485.html

上一篇: Determine if the device has touch screen or not

下一篇: Equivalent of `using` aliases for `template`s