【问题标题】:Floating Touch on Galaxy S4Galaxy S4 上的浮动触控
【发布时间】:2013-05-21 09:47:16
【问题描述】:

Samsung Galaxy S4 具有“Floating Touch”功能,即使不触摸屏幕也可以检测到手指。

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

我尝试使用OnHoverListener,但是当MotionEventMotionEvent.ACTION_HOVER_ENTERMotionEvent.ACTION_HOVER_EXITMotionEvent.ACTION_HOVER_MOVE 时,onHover 永远不会被调用,这是我需要的事件。

这是我的代码:

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;
}
});

我错过了什么吗?也许一些许可?

【问题讨论】:

    标签: android hover galaxy samsung-mobile


    【解决方案1】:

    好的,我终于明白了!

    要让它发挥作用,你必须:

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

    它会起作用的。

    【讨论】:

    • 我应该将意图过滤器放在清单中的什么位置?如果我将此行放在主要活动的意图过滤器中,那么 Eclipse 会在我的手机上安装该应用程序,但它说没有启动器活动。如果我不包括这一行,它也可以。真的很棒!
    • 嗯,好的。如果您不将该行放在清单上,您将不会收到任何事件(奇怪的是,对于主要活动它仍然有效)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2013-09-30
    • 1970-01-01
    相关资源
    最近更新 更多