1

デバイスが入力用のスタイラスをサポートしている場合にのみ、メニュー項目を表示したいと考えています。

残念ながら、デバイスまたはディスプレイが入力用のスタイラス/Spen をサポートしているかどうかを確認するものは何も見つかりませんでした。

編集: event.getToolType() を使用して MotionEvent がトリガーされた後、Stylus と Finger を区別できます。ツールタイプが TOOL_TYPE_STYLUS の場合、スタイラスをサポートしていることを確認できます。そうでない場合は、圧力 > 0 があるかどうかを推測できます ( Android デバイスで画面が容量性か抵抗性かを検出する方法に関連していますか? )

しかし、私は自分のアクティビティの onCreate メソッドでそれを知りたいです。

以下はどういうわけかサポートされておらず、私にとってはうまくいきません。

Configuration config = getResources().getConfiguration();
if (config.touchscreen == Configuration.TOUCHSCREEN_STYLUS)
    Toast.makeText(this, "TOUCHSCREEN_STYLUS", Toast.LENGTH_SHORT).show();
4

4 に答える 4

4

InputManager を使用すると、S-Pen やその他のスタイラスをかなり確実に検出できます。

    boolean sPen = false;
    if(Build.VERSION.SDK_INT > 15) {
        InputManager inptmgr = (InputManager)getSystemService(INPUT_SERVICE);
        int[] inputs = inptmgr.getInputDeviceIds();
        for(int i = 0;i<inputs.length;i++) {
            if(inptmgr.getInputDevice(inputs[i]).getName().toLowerCase().contains("pen")) sPen = true;
        }
    }

通常、デバイスは、「Bluetooth マウス」、「Logicool USB キーボード」、「E_Pen」などの適切な名前で登録されます。

于 2015-04-08T00:41:24.733 に答える
3

どうぞ (Android のドキュメントから) - 4.0 以降でのみサポートされているようです。 http://developer.android.com/about/versions/android-4.0.html

Android は、デジタイザー タブレット周辺機器やスタイラス対応のタッチ スクリーンなどのスタイラス入力デバイスから入力を受け取るための API を提供するようになりました。

スタイラス入力は、タッチまたはマウス入力と同じように動作します。スタイラスがデジタイザーに接触しているとき、アプリケーションは、指でディスプレイに触れたときと同じように、タッチ イベントを受け取ります。スタイラスがデジタイザーの上にあるとき、ボタンが押されていないときにマウス ポインターがディスプレイ上を移動している場合と同様に、アプリケーションはホバー イベントを受け取ります。

アプリケーションは、getToolType ()を使用して MotionEvent内の各ポインターに関連付けられた「ツール タイプ」をクエリすることにより、指、マウス、スタイラス、および消しゴムの入力を区別できますツールの種類を照会することにより、アプリケーションは、指やマウスによる入力とは異なる方法でスタイラス入力を処理することを選択できます。

アプリケーションは、getButtonState ()を使用し てMotionEventの「ボタンの状態」を照会することにより、どのマウス ボタンまたはスタイラス ボタンが押されているかを照会することもできます 。現在定義されているボタンの状態は次 とおりです。および進むマウス ボタンは自動的にKEYCODE_BACKおよびKEYCODE_FORWARDキーにマップされます. アプリケーションはこれらのキーを処理して、マウス ボタン ベースの前後のナビゲーションをサポートできます.

一部のスタイラス入力デバイスは、接触の位置と圧力を正確に測定するだけでなく、スタイラスの先端とデジタイザーの間の距離、スタイラスの傾き角度、およびスタイラスの向きの角度も報告します。アプリケーションは、軸コードAXIS_DISTANCEAXIS_TILT、および AXIS_ORIENTATIONを指定してgetAxisValue()を使用して、この情報を照会できます。

于 2012-07-19T17:27:25.600 に答える
0

スタイラス入力を検出するようなものはないと思います。デバイスにタッチ機能があれば、スタイラスにも反応できると思います。私の知る限り、Android は特にスタイラス入力をサポートしていません。

于 2012-07-19T17:23:21.457 に答える