0

我想检测用户在没有触摸屏的情况下完成的手势,即用户只需将手在 Android 设备的屏幕上从扬声器滑到麦克风(例如,距离屏幕 3 厘米)。我尝试了传感器类型 TYPE_PROXIMITY,通过它设备似乎知道用户只需将手放在设备附近然后离开它。但我想知道手势的方向,即用户是从扬声器向麦克风滑动手掌,还是相反。我应该尝试其他传感器类型吗?或者我需要结合多种类型的传感器来实现吗?

简而言之,我想知道: 1.如何检测用户在屏幕上滑动?2.如何检测滑动的方向?

PS:这不是屏幕触摸的手势检测,我可以通过实现GestureDetector来处理。

最亲切的问候,内苏斯。

4

2 回答 2

1

从用户的角度来看,将手指悬停在屏幕上方 1 厘米比将手指放在屏幕上非常不方便。具有小光圈的前置摄像头看到的滑动将被运动模糊污染,以获得合理的滑动速度。

几年前,我通过考虑滑动的运动模糊最终如何遮挡背景上的图像来解决了这个问题。特别是,如果背景有一些渐变,它会被移动手的运动模糊擦除。因此,如果您绘制垂直梯度直方图,您将在滑动时看到一个穿过直方图的孔,并且该孔的运动方向就是您的滑动方向。

另外两个提示:如果背景上没有太多渐变,可以简单地降低图像分辨率并使用在较低分辨率下受运动模糊影响较小的手的渐变图像。当相机本身移动时,边缘直方图将全局平移,而不是通过直方图移动孔。最后,可以通过嵌入式陀螺仪检测极端的手机旋转以避免误报。

于 2014-02-26T06:13:07.503 回答
0

您无法使用接近传感器检测运动矢量。但通常有一个更智能的传感器可以实现更高的精度:前置摄像头。用相机读取手势更复杂,但你绝对可以用 OpenCV 来做到这一点,例如。

于 2013-11-06T07:44:23.023 回答