Цель приложения:MotionEvent нескольких сенсорных событий перепутать и влияют друг на друга (см демонстрационное видео)
Простое приложение, которое рисует круг для каждого прикосновения признанного на экране и следует события прикосновения. При «показании высокого давления» getPressure (int pointerIndex)
цвет круга изменится, и радиус будет увеличиваться. Кроме того, рядом с пальцем отображается сенсорный идентификатор с getPointerId (int pointerIndex)
, координатами x и y и давлением.
После кода snipplet важной части (пожалуйста, простите меня, это не самый хороший код;) Я знаю)
protected void onDraw(Canvas canvas){
//draw circle only when finger(s) is on screen and moves
if(iTouchAction == (MotionEvent.ACTION_MOVE)){
int x,y;
float pressure;
//Draw circle for every touch
for (int i = 0; i < touchEvent.getPointerCount(); i++){
x = (int)touchEvent.getX(i);
y = (int)touchEvent.getY(i);
pressure = touchEvent.getPressure(i);
//High pressure
if (pressure > 0.25){
canvas.drawCircle(x, y, z+30, pressureColor);
canvas.drawText(""+touchEvent.getPointerId(i)+" | "+x+"/"+y, x+90, y-80, touchColor);
canvas.drawText(""+pressure, x+90, y-55, pressureColor);
}else{ //normal touch event
canvas.drawCircle(x, y, z, touchColor);
canvas.drawText(""+touchEvent.getPointerId(i)+" | "+x+"/"+y, x+60, y-50, touchColor);
canvas.drawText(""+pressure, x+60, y-25, pressureColor);
}
}
}
}
Проблема:
HTC Desire работает Android 2.1 тестовой платформы. Приложение работает отлично и отслеживает два пальца без проблем. Но кажется, что две точки касания мешают друг другу, когда они закрываются - похоже, что круги «привязаны» к общей оси x и y. Иногда они даже меняют координаты ввода другого события касания. Другая проблема заключается в том, что хотя getPressure (int pointerIndex)
ссылается на PointerID, оба события касания имеют одинаковое показание давления.
Поскольку это все немного абстрактно, найти видео здесь: http://www.youtube.com/watch?v=bFxjFexrclU
Мой вопрос:
- Является ли мой код просто так?
- Неужели Android 2.1 не справляется с событиями касания достаточно хорошо, чтобы вещи перепутались?
- Это аппаратная проблема и не имеет ничего общего с 1) и 2)?
Благодарим за ответы и/или переходим к другим темам (извините, может найти тот, который решает эту проблему).
Крис
Я определенно видел это раньше. Я думаю, что это, наверное, всего лишь 2.1, не очень хорошо играющий с мультитач. Попробуйте код на телефоне 2.2, если сможете. – Falmarri
Спасибо за это Falmarri !!! Похоже, что аппаратное обеспечение также является проблемой. Это видео сравнивает Google Nexus One и Samsung Galaxy S, и у последнего нет никаких проблем с похожим приложением к моему! http://www.youtube.com/watch?v=hVlsRCMltDg&feature=player_embedded – chriz