检测iphone或android上的触控形状?

时间:2012-01-08 14:23:56

标签: android ios touch

是否有公共或私有API可以让应用程序获得触及的表面?我对Android和/或iOS很感兴趣。

换句话说,我对触摸屏幕的手指的形状感兴趣。

可以返回触摸矩形矩阵的解决方案也可以。

(我90%肯定没有这样的事情,但我希望有人可以证明我错了)

3 个答案:

答案 0 :(得分:3)

根据要求回答:
在Android上,我认为你能做的最好的就是使用MotionEvent.getSize(),它会返回手指的大小(尽管不是形状)。 API演示版TouchPaint使用此功能。

答案 1 :(得分:1)

此代码是关于如何获取触摸矩形的想法。对于触摸的每个新矩形,计数器将被添加1,因此更容易跟踪触摸移动(如果需要)。要获得更高的准确性,请更改常量ROWS和COLS

的值
#define ROWS 15
#define COLS ROWS

int matrix[ROWS][COLS];
int squareCounter;


- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];

    int col = floor((location.x * COLS) / self.view.frame.size.width);
    int row = floor((location.y * ROWS) / self.view.frame.size.height);
    if (matrix[col][row] == 0) matrix [col][row] = ++ squareCounter;

    [label setText:[NSString stringWithFormat:@"[%d][%d] -> %d", col, row, matrix[col][row]]];
}

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSString *matrixStr = @"";
    for (int i = 0; i < COLS; i++) {
        for (int j = 0; j < ROWS; j++) {
            matrixStr = [matrixStr stringByAppendingFormat:@"%d\t", matrix[j][i]];
        }
        matrixStr = [matrixStr stringByAppendingString:@"\n"];
    }

    NSLog(@"Matrix:\n%@", matrixStr);
}

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    squareCounter = 0;
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            matrix[i][j] = 0;
        }
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

必须将其放置在要查看其触摸形状的视图的视图控制器上。

答案 2 :(得分:1)

我找到了适用于Android的解决方案: https://stackoverflow.com/questions/8977510/motionevent-pointercoords-gettouchmajor-device-support。我仍然需要了解它的支持程度......

对于iPhone: Is there any way at all that I can tell how hard the screen is being pressed(见接受的答案)。 但是,似乎没有官方的方式。

但是,如果有人添加了一些官方或非官方/ hackish方法,我将不胜感激。