1

拡張中のクラスがあり、Viewホバリング機能があるため、入力にスタイラス(ギャラクシーノート)を使用したいと思います。

ホバーイベントとタッチイベントの両方のリスナーを追加しましたが、この問題をうまく回避できません。スタイラスで画面をタッチすると、でホバーイベントが生成されACTION_HOVER_EXIT、でタッチイベントが生成されACTION_DOWNます。

ACTION_HOVER_EXITスタイラスが画面に触れ始めたのか、それとも画面から離れたのかをイベントが発生したときに知る方法があるかどうかを知りたいのですが。

スタイラスを持ち上げてもホバーゾーンにいる場合も同じです。1ACTION_UPつと1つACTION_HOVER_ENTERです。

4

1 に答える 1

3

ギャラクシーノート用です。

ACTION_HOVER_EXITイベントアクションで、いくつかの異なることを試しましたが成功しませんでした:

  1. イベント座標 (getX、getY) - スタイラスを画面から離すときの座標が 0、-146 のようなもので、スタイラスが画面に触れ始めると座標が両方とも 0 より大きい場合があります。
  2. 画面からの距離。画面からスタイラスの先端までの距離の軸があります。スタイラスの先端が画面に触れているはずです。残念ながら、Galaxy note のスタイラス デバイスにはこの機能がありません。
  3. 先端の圧力をチェックします。ACTION_HOVER_EXITアクションを伴うホバリング イベントがディスパッチされるとき、これはまだ 0です。

デバイスに保存されている情報を見るとdevice.toString()、2 つのケースで違いは見られませんでした。ただし、handler.postDelayed()呼び出しを使用することで、これを回避することができました。基本的に、10ミリ秒後に終了ホバーアクションを実行し、その間にタッチイベントがディスパッチされなかった場合にのみ実行します。

私のスタイラスの出力は次のdevice.toString()とおりです。

Input Device 5: sec_e-pen
Keyboard Type: non-alphabetic
Key Character Map: /system/usr/keychars/Generic.kcm
Sources: 0x2103 ( keyboard mouse )
AXIS_X: source=0x2002 min=0.0 max=799.8877 flat=0.0 fuzz=0.11234377
AXIS_Y: source=0x2002 min=0.0 max=1279.8877 flat=0.0 fuzz=0.11234969
AXIS_PRESSURE: source=0x2002 min=0.0 max=1.0 flat=0.0 fuzz=0.0
于 2012-07-28T20:59:29.553 に答える