Android 3手指触摸检测

时间:2011-05-05 06:06:21

标签: android multi-touch

我可以使用以下代码成功记录屏幕上触摸的两根手指的坐标:

case MotionEvent.ACTION_MOVE:
Log.d("TOUCH", "test ACTION MOVE" + event.getPointerCount());
Log.d("TOUCH", "test ACTION MOVE ID" + event.getPointerId(0) + " "+event.getPointerId(1));
if(event.getPointerCount()==3)
{

x0 = (int) event.getX(event.getPointerId(0));
y0 = (int) event.getY(event.getPointerId(0));
x1 = (int) event.getX(event.getPointerId(1));
y1 = (int) event.getY(event.getPointerId(1));
x2 = (int) event.getX(event.getPointerId(2));
y2 = (int) event.getY(event.getPointerId(2));

Log.d("TOUCH", "test ACTION DOWN " + " values = " + x0 + " " + y0 + " "
+ x1 + " " + y1+ " "+x2 + " " + y2);
}

但是在上面的代码中我无法在单个实例中检测到超过2个触摸点。甚至pointerCount()也永远不会超过2。

如何获得超过2个手指的触摸坐标?我在Android 2.2上运行此代码

4 个答案:

答案 0 :(得分:2)

这是前段时间的问题,但无论如何。答案是虽然android可以跟踪256个手指,但是当前的实现将此限制为2个手指。

我不确定蜂窝,但我猜它有同样的“问题”。

答案 1 :(得分:1)

我已经确认了一些Android 2.3.5设备的4次触摸,以及到目前为止我测试的每个3.x和4.x设备。似乎至少从API 8+开始,支持两个以上的触摸,但它依赖于设备。

答案 2 :(得分:0)

使用两个以上手指的多点触控只能在android 4.1.2版本或更高版本中执行,不同的公司也根据自己的需求和应用定制了Android版本,即在4.1.2版本中,Qmobile只支持五个版本但是伟大的三星公司使用超过11个手指

答案 3 :(得分:0)

     firstFingerX = MotionEventCompat.getX(ev, 0); firstFingerY = MotionEventCompat.getY(ev, 0);
 if (numberOfFingers == 2) {
     Log.e("mine", "Integer: " + String.valueOf((int)MotionEventCompat.getY(ev, 1)));
     secondFingerX = MotionEventCompat.getX(ev, 1); secondFingerY = MotionEventCompat.getY(ev, 1);
 }
 if (numberOfFingers == 3) {
     Log.e("mine", "Integer: " + String.valueOf((int)MotionEventCompat.getY(ev, 2)));
     thirdFingerX = MotionEventCompat.getX(ev, 2); thirdFingerY = MotionEventCompat.getY(ev, 2);

 }