Galaxy S4上的浮动触摸

Nif*_*hel 5 android hover galaxy samsung-mobile

三星Galaxy S4具有“ 浮动触摸 ”功能,即使不触摸屏幕也可以检测到手指。

btn1当手指经过时,我想在按钮()上触发一个事件。

我尝试使用OnHoverListener,但是onHover在需要的事件MotionEventis MotionEvent.ACTION_HOVER_ENTERMotionEvent.ACTION_HOVER_EXITor 时从未被调用MotionEvent.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;
}
});
Run Code Online (Sandbox Code Playgroud)

我想念什么吗?也许需要许可?

Nif*_*hel 4

好吧,我终于明白了!

为了让它发挥作用,你必须:

  1. com.sec.android.airview.HOVER在清单中为您的 Activity添加一个新的意图过滤器:
<intent-filter>
<action android:name="com.sec.android.airview.HOVER" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
  1. onHoverListener给你添加一个View
convertView.setOnHoverListener(new OnHoverListener() {
    @Override
    public boolean onHover(View v, MotionEvent event) {
        Log.d("ListAdapter", "Hover: " + item);
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

它会起作用的。