Android мультитач помощь - PullRequest
0 голосов
/ 27 июля 2011

Итак, я занимаюсь разработкой приложения, и мне нужно одновременно нажать две кнопки. Мне нужно, чтобы при нажатии кнопки запускались события (которые тоже одновременно).

Представь себе машину - я ушел, направо, вперед и назад. Мне нужно нажать EG. вперед и вправо, чтобы повернуть направо.

Вот мой метод, но по какой-то причине, когда я нажимаю обе кнопки, срабатывает только та, которая нажата первой ... Есть идеи?

    // Handle touches of the navigation arrows
    public boolean onTouch(View v, MotionEvent theMotion) {
        switch (theMotion.getAction()) {
        // A button was PRESSED
        case MotionEvent.ACTION_DOWN:
            switch (v.getId()) { // Which button?
            case R.id.freestyle_upArrow: // The upArrow
                bt.sendNXTcommand(MOTOR_B_FORWARD, 720);
                break;
            case R.id.freestyle_downArrow: // The downArrow
                bt.sendNXTcommand(MOTOR_B_BACKWARD, 720);
                break;
            case R.id.freestyle_leftArrow: // The leftArrow
                bt.sendNXTcommand(MOTOR_A_LEFT, 720);
                break;
            case R.id.freestyle_rightArrow: // The rightArrow
                bt.sendNXTcommand(MOTOR_A_RIGHT, 720);
                break;
            }
            break;
        // A button was RELEASED
        case MotionEvent.ACTION_UP:
            switch (v.getId()) { // Which button?
            case R.id.freestyle_upArrow: // The upArrow
                bt.sendNXTcommand(MOTOR_B_STOP, 0);
                break;
            case R.id.freestyle_downArrow: // The downArrow
                bt.sendNXTcommand(MOTOR_B_STOP, 0);
                break;
            case R.id.freestyle_leftArrow: // The leftArrow
                break;
            case R.id.freestyle_rightArrow: // The rightArrow
                break;
            }
            break;
        }
        return true;
    }

Так, у кого есть идеи? Это как-то связано с количеством точек, разрешенных на моем экране?

ОСОБЕННОСТИ ТЕЛЕФОНА: Samsung Galaxy Ace под управлением ОС Android на прошивке 2.2.1

С уважением,

Рич.

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Использование

switch (event.getAction() & MotionEvent.ACTION_MASK)

Вы хотите посмотреть

MotionEvent.ACTION_POINTER_UP
MotionEvent.ACTION_POINTER_DOWN

Для второго пальца. Имейте в виду, что вы получите ACTION_POINTER_UP независимо от того, какой палец поднят первым

0 голосов
/ 27 июля 2011

для этого у вас есть проверка, ACTION_DOWN (одно касание) и ACTION_POINTER_DOWN (мультитач) на основе этого создают вашу логику. примечание: ACTION_POINTER означает само мультитач

...