2013-06-27 23 views
7

私のアプリは標準の携帯電話で動作しますが、HDMI経由でテレビに接続し、マウスで操作するAndroidプレーヤーでも動作します。デバイスがタッチスクリーンをサポートしているかどうかをプログラマチックに判断する方法はありますか?私はナビゲーションの2つの方法を区別できますか?デバイスにタッチスクリーンがあるかどうかを判断する

私はthisを試してみましたが、それは両方のデバイスにtrueを返します:

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

答えて

3

PackageManagerはおそらくタッチスクリーンを持っているAndroidのプレイヤー自身を参照します。プレーヤーのディスプレイがHDMI経由で外部モニターにルーティングされているかどうかを検出することはできません。デバイスがタッチスクリーンを持っているかどうかをパッケージマネージャーに尋ねるとき、それは外部ディスプレイではなくプレーヤーを指しています。

HDMIポートがアクティブであるかどうかを確認してプレーヤーが外部ディスプレイに接続されているかどうかを検出し、それに応じてナビゲーションを変更することができます。

参照:Detect HDMI Port in android device

サイドノート:プレーヤーはタッチスクリーンを持っていますが、パッケージマネージャが誤ってそれがないことを報告している、それはパッケージマネージャのバグやAndroidのデバイスメーカーの実装のどちらかだしない場合バグかもしれない。

0

利用OnTouchListener代わりのOnClickListener

OnTouchはあなたに、より良いフィードバックを与え、それがクリック時に既に行うすべてを行います。両方のケースでこれを行います(どのケースがどちらであるか把握する必要はありません)。

開発者の中には、非タッチデバイスのみを扱っていても(OnTouchListenersではなく、OnTouchListenersを使用しています(パフォーマンスが向上し、応答が速いと主張しているため)。

個人的には、最後の主張が真であるかどうかわかりませんが、OnClickListenerの代わりにOnTouchListenerを使用することには、(私が気づいている)欠点がないことに同意します。

関連する問題