7

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

私はこれを試しましたが、両方のデバイスで true を返します:

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

2 に答える 2

4

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

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

参照: Android デバイスで HDMI ポートを検出する

補足:プレーヤーにタッチスクリーンがなく、パッケージ マネージャーが誤ってタッチスクリーンを持っていると報告している場合は、パッケージ マネージャーのバグか、Android のデバイス メーカーの実装にバグがある可能性があります。

于 2013-06-27T06:36:31.043 に答える
0

OnTouchListenerの代わりに を使用するOnClickListener

OnTouch はより良いフィードバックを提供し、OnClick が既に行っているすべてのことを行います。両方のケースでこれを行います (したがって、どちらのケースがどちらであるかを把握する必要はありません)。

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

個人的には、最後の主張が正しいかどうかはわかりませんが、OnClickListener の代わりに OnTouchListener を使用することには (私が認識している) マイナス面がないという開発者の意見に同意します。

于 2013-06-27T06:59:23.123 に答える