Android:如何检测没有屏幕触摸的手势?

时间:2013-11-06 07:39:33

标签: android gesture detect direction

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

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

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

最诚挚的问候,Nessus。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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