Either disable double tap or detect second tap location
<p>I have a GLSurfaceView with a GestureDetector and an extended SimpleOnGestureListener.  I need to be able to select multiple items on the surface view by tapping them quickly.  I overrode onSingleTapUp to detect the touches quickly since onSingleTapConfirmed was too slow.  The problem now is that if two items on the surface view are close to one another and the user taps one and then the other quickly, then the onSingleTapUp method is called for the first item, but not for the second.  The second one calls the onDoubleTap method whether it's overridden or not.</p>

<p>To resolve this I tried to simply not override the onDoubleTap method and I also tried to do nothing in the overridden onDoubleTap and return false.  Neither solves the problem.  The onSingleTapUp method will still not get called for the second tap.</p>

<p>I decided to try detecting the second tap in the onDoubleTap method and select the item from there.  The problem with that is the motion event returned from onDoubleTap contains "The down motion event of the first tap of the double-tap." - <a href="http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html" rel="nofollow">http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html</a></p>

<p>Is there any way to either disable double taps, change the double tap time so it will never fire, change the double tap radius to something very small, or get the first tap location in the onDoubleTap method?</p>

<p>Here's my SimpleOnGestureListener:</p>

<pre><code>public class ViewGestureListener extends
    GestureDetector.SimpleOnGestureListener {

    private ViewRenderer renderer;
    private GLSurfaceView surfaceView;

    public ViewGestureListener(GLSurfaceView surfaceView,
        ViewRenderer renderer) {
        this.renderer = renderer;
        this.surfaceView = surfaceView;
    }

    // Pan
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
        float distanceY) {
        renderer.pan(distanceX, distanceY);
        surfaceView.requestRender();
        return true;
    }

    // Double touch and release
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        // Note: e.getX() doesn't return the second tap's location!
        renderer.singleTouch(e.getX(), e.getY());
        surfaceView.requestRender();
        return true;
    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        renderer.singleTouch(e.getX(), e.getY());
        surfaceView.requestRender();
        return true;
    }
}
</code></pre>

<p>Thanks,
Matt</p>
