2015-12-10 2 views
3

Я пишу приложение со слепой поддержкой. Мне нужно обнаружить прикосновение двух пальцев. Когда людей с ограниченными возможностями выключены я пытаюсь использовать 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: Указатель вниз 2
  2. D/MainActivity: onTouch: указатель вниз 3
  3. Д/MainActivity: onTouch: Указатель до 3
  4. Д/MainActivity: onTouch: Указатель до 2

Все в порядке. Но когда я включаю TalkBack, я получаю мультитач-событие очень редко. Это означает, что мне нужно повторить один и тот же жест несколько раз, но я получаю журнал только один раз.

Может кто-нибудь предоставить мне какие-либо намеки. Большое спасибо.

P.S. Это может быть полезно. Есть жесты, которые мне нужно реализовать - коснитесь двумя пальцами, дважды постучите пальцами, длинным касанием двумя пальцами и двумя пальцами. Но swipes отлично работает, потому что они по умолчанию перезаписаны в TalkBack.

+0

Вы нашли для этого какой-либо ответ? Пожалуйста, поделитесь им с нами, потому что у меня такая же проблема. Благодаря! – Mohammad

ответ

1

После более глубокого изучения этой проблемы, и у меня все еще есть это, кажется, мы не можем отслеживать две функции Touch Touch, чтобы исследовать TalkBack!

Если вы отметили my question и ответ на это, вы увидите событие, которое будет запущено, когда вы активируете функцию Touch to Explore TalkBack и сделаете касание вида onHoverEvent.

Это событие просто управляет одним указателем, и вы можете отслеживать его, используя MotionEvent.ACTION_HOVER_ENTER, MotionEvent.ACTION_HOVER_MOVE и MotionEvent.ACTION_HOVER_EXIT.

Нет другого указателя, такого как ACTION_HOVER_POINTER_EXIT.

Я надеюсь, что если у кого-то есть какие-то решения, чтобы поделиться с нами.

Смежные вопросы