2010-07-26 44 views
1

我在Android上有一個小測試應用程序,旨在測試跟蹤多點觸控輸入,但我只能在我的Evo上同時進行兩次觸控操作。有誰知道這是否是對Android或硬件的限制?限於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

我很確定這是一個Android的限制...它甚至沒有2點觸摸支持,直到最近半。 – Maximus 2010-07-27 06:11:44

回答

0

看來目前所有的HTC設備都只能2手指多點觸控,但Android SDK支持更多的手指。例如。 Galaxy S i9000支持更多http://www.youtube.com/watch?v=KRCDRXYJBCY

+0

酷視頻,謝謝! – CaseyB 2010-09-07 15:41:08

+0

測試了HTC g1,英雄和慾望。兩者都只支持2個按鈕。 – crazymaik 2010-09-08 11:55:44