But de l'application:MotionEvent événements tactiles multiples se mélangent et se influencent (voir la vidéo démo)
Une application simple qui dessine un cercle pour chaque touche reconnu à l'écran et suit les événements tactiles. Sur une «lecture haute pression» getPressure (int pointerIndex)
la couleur du cercle va changer et le rayon va augmenter. De plus, l'ID tactile avec getPointerId (int pointerIndex)
, les coordonnées x et y et la pression sont affichés à côté du doigt.
Après une snipplet de code de la part importante (s'il vous plaît pardonnez-moi ce n'est pas le code plus beau;) je sais)
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);
}
}
}
}
Le problème:
Un HTC Desire sous Android 2.1 est la plate-forme de test. L'application fonctionne bien et suit deux doigts sans problème. Mais il semble que les deux points de contact interfèrent l'un avec l'autre quand ils se rapprochent - il semble qu'ils tournent sur un axe x et y partagé. Parfois, ils échangent même les coordonnées d'entrée de l'autre événement tactile. Un autre problème est que même si getPressure (int pointerIndex)
se réfère à un PointerID, les deux événements tactiles ont la même lecture de pression.
Comme cela est un peu abstrait, trouver une vidéo ici: http://www.youtube.com/watch?v=bFxjFexrclU
Ma question:
- mon code tout simplement mal?
- Est-ce que Android 2.1 ne gère pas assez bien les événements tactiles?
- Est-ce un problème matériel et n'a rien à voir avec 1) et 2)?
Merci pour les réponses et/ou les liens vers d'autres threads (désolé pourrait trouver un qui résout ce problème).
Chris
J'ai certainement déjà vu ça. Je pense que c'est juste juste que ça ne marche pas bien avec le multitouch. Essayez votre code sur un téléphone 2.2 si vous le pouvez. – Falmarri
Merci pour ce Falmarri !!! Il semble que le matériel est également un problème. Cette vidéo compare le Google Nexus One et le Samsung Galaxy S et ce dernier n'a pas de problèmes avec l'application similaire à la mienne! http://www.youtube.com/watch?v=hVlsRCMltDg&feature=player_embedded – chriz