确定设备是否具有触摸屏功能。

7

我的应用程序可以在普通手机上运行,也可以在通过HDMI连接到电视并使用鼠标进行导航的Android播放器上运行。有没有办法编程来确定设备是否支持触摸屏,以便区分两种导航方式?

我尝试了这个方法,但它在两种设备上都返回true:

getPackageManager().hasSystemFeature("android.hardware.touchscreen");
2个回答

4
PackageManager将引用Android播放器本身,该播放器可能具有触摸屏。它无法检测播放器显示是否通过HDMI路由到外部监视器。当您询问软件包管理器设备是否具有触摸屏时,它是指播放器而不是外部显示器。
您可以做的一件事是通过检查HDMI端口是否活动来检测播放器是否连接到外部显示器,并相应地更改导航。
参考:Detect HDMI Port in android device 附注:如果播放器没有触摸屏,但软件包管理器错误地报告它具有,则可能是软件包管理器的错误或设备制造商对Android的实现可能存在故障。

0

使用OnTouchListener而不是OnClickListener

OnTouch提供更好的反馈,它可以完成OnClick已经完成的所有操作。对于这两种情况都要这样做(因此无需弄清楚哪种情况是哪种)。

一些开发人员甚至在处理非触摸设备时也使用OnTouchListeners而不是OnClickListeners(因为他们声称它可以提供更好的性能和更快的响应速度)。

就个人而言,我不知道最后一个说法是否正确,但我同意那些开发人员的看法,即使用OnTouchListener而不是OnClickListener实际上没有任何缺点(据我所知)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接