通过触摸模式检测探索中的多点触控

时间:2015-12-10 13:07:29

标签: android multi-touch talkback

我正在盲目支持下撰写应用程序。我需要检测双指触摸。当任何辅助功能关闭时,我尝试使用TouchListener:

 RelativeLayout rl = (RelativeLayout) findViewById(R.id.main);
    rl.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // get masked (not specific to a pointer) action
            int maskedAction = event.getActionMasked();

            Log.d(TAG, "onTouch: " + actionToString(maskedAction) + " " + event.getPointerCount());

            return true;
        }
    });


}

// Given an action int, returns a string description
public static String actionToString(int action) {
    switch (action) {

        case MotionEvent.ACTION_DOWN: return "Down";
        case MotionEvent.ACTION_MOVE: return "Move";
        case MotionEvent.ACTION_POINTER_DOWN: return "Pointer Down";
        case MotionEvent.ACTION_UP: return "Up";
        case MotionEvent.ACTION_POINTER_UP: return "Pointer Up";
        case MotionEvent.ACTION_OUTSIDE: return "Outside";
        case MotionEvent.ACTION_CANCEL: return "Cancel";
    }
    return "";
}

我得到了

  1. D / MainActivity:onTouch:Pointer Down 2
  2. D / MainActivity:onTouch:Pointer Down 3
  3. D / MainActivity:onTouch:Pointer Up 3
  4. D / MainActivity:onTouch:Pointer Up 2
  5. 一切都很好。 但是当我打开TalkBack时,我很少得到多点触控事件。这意味着我需要重复相同的手势几次,但我只获得一次任何日志。

    有人可以提供我的任何提示。坦克很多。

    P.S。它可能很有用。我需要实现手势 - 用两根手指敲击,用手指双击,用两根手指长按,用两根手指轻扫。但是滑动工作正常,因为它们在TalkBack中默认已被覆盖。

1 个答案:

答案 0 :(得分:1)

在深入研究这个问题并且我仍然拥有它之后,似乎我们无法跟踪TalkBack的Touch to Explore功能中的两个指针!

如果您选中了my question及其答案,您将看到当您激活TalkBack的触摸浏览功能时触发的事件,并触摸视图为onHoverEvent

此事件只处理一个指针,您可以使用MotionEvent.ACTION_HOVER_ENTERMotionEvent.ACTION_HOVER_MOVEMotionEvent.ACTION_HOVER_EXIT跟踪它。

没有像ACTION_HOVER_POINTER_EXIT这样的其他指针。

我希望如果有人有任何解决方案与我们分享。