安卓3指触摸检测

8
我能成功记录两个手指在屏幕上触摸时的坐标,使用以下代码实现:
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上运行此代码。


嗨,我不确定这是否有帮助,但是http://getandroidstuff.com/familiar-android-platform-android-3rd-edition-download-book/的第220页,多点触控一章。 - Pasha
4个回答

2

这个问题之前已经有人问过,但是无论如何,答案是尽管安卓可以跟踪256个手指,但当前的实现将其限制为2个手指。

我不确定蜂巢系统是否也存在同样的问题。


这太糟糕了!!!:( 如果我们无法真正使用支持,那么有什么意义呢? - Kshitij Aggarwal
我同意,这很糟糕,特别是因为竞争对手非常好地支持了三指手势。支持是这样完成的,以便在某个时候OMA(开放移动联盟)可以推出对超过2个手指的支持,而不会破坏向后兼容性。 - Augusto
我知道这可能会给Android工程团队带来额外的工作,但为什么我们现在不能拥有它呢?谁知道OMA何时会提供支持?!!! - Kshitij Aggarwal

1

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


0

多点触控需要使用两个以上的手指,只能在Android 4.1.2版本或更高版本上执行。此外,不同的公司根据其需求和应用程序定制了Android版本。例如,在4.1.2版本中,Qmobile仅支持五个手指,而伟大的三星公司则使用超过11个手指。


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);

 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接