5

Samsung Galaxy S4 には、画面に触れていなくても指を検出できる「フローティング タッチ」機能があります。

btn1指がホバーを通過したときにボタン( )でイベントを発生させたいと思います。

を使用してみましたOnHoverListenerが、必要なイベントであるまたはまたはのonHoverときに呼び出されません。MotionEventMotionEvent.ACTION_HOVER_ENTERMotionEvent.ACTION_HOVER_EXITMotionEvent.ACTION_HOVER_MOVE

これは私のコードです:

btn1.setOnHoverListener(new OnHoverListener() {
@Override
public boolean onHover(View v, MotionEvent event) {
    Log.d("FloatingTouch", "onHover: "+event.getAction());
    switch (event.getAction()) {
      case MotionEvent.ACTION_HOVER_ENTER:
          Log.d("FloatingTouch", "ACTION_HOVER_ENTER" );
          return true;
      case MotionEvent.ACTION_HOVER_MOVE:
          Log.d("FloatingTouch", "ACTION_HOVER_MOVE" );
          return true;
      case MotionEvent.ACTION_HOVER_EXIT:
          Log.d("FloatingTouch", "ACTION_HOVER_EXIT" );
          break;
      default:
          break;
    }
    return false;
}
});

私は何かが恋しいですか?もしかして何か許可?

4

1 に答える 1

4

よし、やっと手に入れた!

それを機能させるには、次のことを行う必要があります。

  1. マニフェストのアクティビティに新しいインテント フィルターを追加com.sec.android.airview.HOVERします。
<intent-filter>
<action android:name="com.sec.android.airview.HOVER" />
</intent-filter>
  1. onHoverListenerあなたに を追加View
convertView.setOnHoverListener(new OnHoverListener() {
    @Override
    public boolean onHover(View v, MotionEvent event) {
        Log.d("ListAdapter", "Hover: " + item);
        return false;
    }
});

それが動作します。

于 2013-05-22T09:03:02.437 に答える