我的程序处理多点触控。我应该区分我的右手和左手。
要保存数组中的x,y触摸点
public boolean onTouchEvent(MotionEvent event)
{
int pointerCount = event.getPointerCount();
if (pointerCount > MAX_TOUCHPOINTS)
{
pointerCount = MAX_TOUCHPOINTS;
}
xval = new int[pointerCount];
yval = new int[pointerCount];
for (int i = 0; i < pointerCount; i++)
{
xval[i]= (int) event.getX(i);
yval[i]= (int) event.getY(i);
}
Canvas c = getHolder().lockCanvas();
.....
.....
}
确定我有左手和右手
private String DetermineTouch()
{
String message="" ;
int xcount1=0,ycount=0,xcount2=0;
int ylargest=yval[0];
int xlargest=xval[0];
int xlowest=xval[0];
// The thumb has the highest y
for(int i=0;i<yval.length;i++)
{
if(yval[i]> ylargest)
{
ylargest=yval[i];
ycount=i;
}
// if the thumb is of my left hand x is the largest among the points
for(int j=0;j<xval.length;j++)
{
if(xval[j]> xlargest)
{
xlargest=xval[j];
xcount1=j;
}
}
// X is the smallest if the thumb is of my right hand
for(int k=0;k<xval.length;k++)
{
if(xval[k]< xlowest)
{
xlowest=xval[k];
xcount2=k;
}
}
//determining left or right hand
if(xval[ycount]==xval[xcount1]){
message="left";
}
else if (xval[ycount]==xval[xcount2]){
message="right";
}
}
return message;
}
如果我将手正常放在屏幕上(所有五个手指),这都有效。但如果我尝试将手放在任何角度,程序就会失败。 (示例我的手向右倾斜或向左倾斜更多)是否有更好的方法来检测左手和右手?
感谢任何帮助
答案 0 :(得分:0)
我没有真正得到你将使用该片段的地方,但我只是得到X1,Y1和X2,Y2并检查X1&gt; X2与否;然后采取相应行动。
请记住,Android不会使用正常的笛卡尔轴和屏幕中心的0,0。
编辑:检查手指的大小? Android: Measure/detect covered area by a finger touch on screen (NOT only touch coordinates)
我不知道你的应用程序应该做什么,但我要求用户“保存”左手和右手的手部配置并保存每个手指的大小;然后,每当他触摸屏幕时,您可以轻松地(通过大小和顺序)告诉您手和什么手指。