title: Android detecting double tap without single tap first
body: <p>i would like to detect a double tap BUT without triggering a single tap first. i've tried double click listeners but you always get a onSingleTapUp before the double is detected, which is reasonable i guess. but in my app, i really don't want the single click callback when there is a double click on the way.</p>
  
  <p>i realize no app can predict the future (or i would be really rich) but i was thinking, just launch a timer on the single click and if there is no double click within some time out, then do the single click. but that doesn't seem to work because once i start the timer and the timer is running, the second tap never generates an event. here's my code using an aync task, i also tried it with a timer.</p>
  
  <pre><code>mGD = new GestureDetector(getContext(), new SimpleOnGestureListener() {
  
              @Override
              public boolean onSingleTapUp(MotionEvent ev) {
                  //Log.d("KitView", "onSingleTapUp "+ev.toString());
  
                  class DblTapTask extends AsyncTask&lt;Void, Void, Void&gt; {
  
                      @Override
                      protected void onPreExecute() {
                          Log.d("KitView", "onPreExecute");
                      }
  
                      protected Void doInBackground(Void... args) {
                          Log.d("KitView", "doInBackground");
                          try {
                              Thread.sleep(1000);
                          } catch (InterruptedException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          }
                          return null;
                      }
  
                      protected void onPostExecute(Void result) {
                          Log.d("KitView", "onPostExecute");
                                              doSigleTapAction();
                          mDblTapTask=null;
                      }
                  };
  
                  if(mDblTapTask==null) {
                      Log.d("KitView", "START TASK");
                      mDblTapTask = new DblTapTask();
                      mDblTapTask.execute();
                  } else {
                      Log.d("KitView", "TASK RUNNING");
                                      doDoubleTapAction();
                  }
  
  
                  Log.d("KitView", "onSingleTapUp DONE");
                  return true;
              }   // end onSingleTapUp
  
          });     // end new GestureDetector
  </code></pre>
  
  <p>in this example, i get onSingleTapUp just fine on the first tap. my timeout is 1 sec for testing in the doInBackground so i have lots of time to do the second tap. note that Log.d("KitView", "onSingleTapUp DONE"); runs immediately i do the first tap, so onSingleTapUp  is not hanging.</p>
  
  <p>the problem is, taping again within the 1sec does nothing. there is no call to onSingleTapUp until after the sleep has finished and onPostExecute has run. so Log.d("KitView", "TASK RUNNING"); never happens which is where i would detect double click vs. single click of course.</p>
  
  <p>i'm not sure why aynctask is blocking events, any ideas? thanks</p>