【问题标题】:Determine if the device has touch screen or not判断设备是否有触摸屏
【发布时间】:2013-06-27 06:09:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: android touchscreen


    【解决方案1】:

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

    您可以做的一件事是通过检查 HDMI 端口是否处于活动状态并相应地更改您的导航来检测播放器是否连接到外部显示器。

    见:Detect HDMI Port in android device

    旁注:如果播放器没有触摸屏,但包管理器错误地报告它有,那么它要么是包管理器的错误,要么是设备制造商的 Android 实现可能有错误.

    【讨论】:

      【解决方案2】:

      使用OnTouchListener 而不是OnClickListener

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

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        相关资源
        最近更新 更多