2010-07-26 6 views
1

J'ai une petite application de test sur Android qui est destinée à tester le suivi de la saisie multitouch, mais je reçois seulement deux fois en même temps sur mon Evo. Est-ce que quelqu'un sait si c'est une limitation à Android ou au matériel? En passant, voici ma classe de test pour que vous puissiez l'essayer vous-même.Limiter au nombre de touches sur Android?

import java.util.HashMap; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Paint.Style; 
import android.view.MotionEvent; 
import android.view.View; 

public class PressureView extends View 
{ 
    private HashMap<Integer, Spot> mSpots = new HashMap<Integer, Spot>(); 
    private final int[] mColors; 
    private final Paint mPaint; 

    public PressureView(Context context) 
    { 
     super(context); 
     mPaint = new Paint(); 
     mPaint.setStyle(Style.FILL); 
     mColors = new int[]{Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, Color.MAGENTA}; 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     super.onDraw(canvas); 

     canvas.drawColor(Color.WHITE); 
     for(int id : mSpots.keySet()) 
     { 
      Spot spot = mSpots.get(id); 
      mPaint.setColor(spot.Color); 
      canvas.drawCircle(spot.X, spot.Y, spot.Pressure*500, mPaint); 
     } 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) 
    { 
     System.out.println("************************** " + event.getPointerCount() + " Pointers"); 

     for(int i = 0; i < event.getPointerCount(); i++) 
     { 
      int id = event.getPointerId(i); 

      Spot spot = null; 
      if(mSpots.containsKey(id)) 
      { 
       spot = mSpots.get(id); 
      } 
      else 
      { 
       spot = new Spot(); 
       spot.Color = mColors[mSpots.size()]; 
      } 

      if(event.getAction() == MotionEvent.ACTION_UP) spot.Pressure = 0; 
      else spot.Pressure = event.getPressure(id); 

      spot.X = event.getX(id); 
      spot.Y = event.getY(id); 

      mSpots.put(id, spot); 
     } 

     invalidate(); 

     return true; 
    } 

    private class Spot 
    { 
     public float X, Y, Pressure; 
     public int Color; 
    } 
} 
+0

Je suis assez sûr que c'est une limitation Android ... il n'a même pas eu de support tactile 2 jusqu'à ce que semi-récemment. – Maximus

Répondre

0

Il semble que actuellement tous les appareils HTC ne peuvent que 2 doigts multi-touch, mais le SDK Android prend en charge plus de doigts. Par exemple. le Galaxy S i9000 a le soutien pour plus http://www.youtube.com/watch?v=KRCDRXYJBCY.

+0

Cool vidéo, merci! – CaseyB

+0

testé htc g1, héros et désir. les deux ne supportent que 2 boutons. – crazymaik

Questions connexes