Я пишу приложение со слепой поддержкой. Мне нужно обнаружить прикосновение двух пальцев. Когда людей с ограниченными возможностями выключены я пытаюсь использовать 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 "";
}
и я получаю
- D/MainActivity: onTouch: Указатель вниз 2
- D/MainActivity: onTouch: указатель вниз 3
- Д/MainActivity: onTouch: Указатель до 3
- Д/MainActivity: onTouch: Указатель до 2
Все в порядке. Но когда я включаю TalkBack, я получаю мультитач-событие очень редко. Это означает, что мне нужно повторить один и тот же жест несколько раз, но я получаю журнал только один раз.
Может кто-нибудь предоставить мне какие-либо намеки. Большое спасибо.
P.S. Это может быть полезно. Есть жесты, которые мне нужно реализовать - коснитесь двумя пальцами, дважды постучите пальцами, длинным касанием двумя пальцами и двумя пальцами. Но swipes отлично работает, потому что они по умолчанию перезаписаны в TalkBack.
Вы нашли для этого какой-либо ответ? Пожалуйста, поделитесь им с нами, потому что у меня такая же проблема. Благодаря! – Mohammad