title: How to determine a long touch on android?
body: <p>I am looking for a way for when a user long touches a mapview (lets say for 1000ms) that i can some how do a certain action. </p>
  
  <p>How would i go about judging how long a user long touches a mapsview(or any view).</p>
  
  <p>It would be similar to android google maps app, when you long touch, it brings up a balloon overlay item.</p>
  
  <p>Edit added</p>
  
  <pre><code>mapView.setOnLongClickListener(new View.OnLongClickListener() {
  
          public boolean onLongClick(View v) {
  
              Toast.makeText(mapView.getContext(), "Hello 123", 2000);
              return false;
          }
      });
  </code></pre>
  
  <p>the above does not work... any ideas why?</p>
  
  <h1>Edit added</h1>
  
  <p>This is what i am trying at the moment, but it does not seem to work, even if i only press on the phone, it says the event is an action_move, </p>
  
  <p>i am using an inner class in my MapActivity</p>
  
  <pre><code>    private long startTime=0;
  private long endTime=0;
  
  class MapOverlay extends Overlay {
  
  
  
      @Override
      public boolean onTouchEvent(MotionEvent ev, MapView mapView) {
  
          if(ev.getAction() == MotionEvent.ACTION_DOWN){
               //record the start time
               startTime = ev.getEventTime();
  
               Log.d("LC", "IN DOWN");
            }else if(ev.getAction() == MotionEvent.ACTION_UP){
               //record the end time
               endTime = ev.getEventTime();
               Log.d("LC", "IN UP");
            }else if(ev.getAction() == MotionEvent.ACTION_MOVE){
                Log.d("LC", "IN move");
                endTime=0;
            }
  
            //verify
            if(endTime - startTime &gt; 1000){
               //we have a 1000ms duration touch
               //propagate your own event
                Log.d("LC", "time touched greater than 1000ms");
                Toast.makeText(getBaseContext(), "Hello 123", Toast.LENGTH_SHORT).show();
                startTime=0; 
                endTime=0;
               return true; //notify that you handled this event (do not propagate)
            }
  
          return false;//propogate to enable drag
  
      }
  
  }
  </code></pre>
  
  <p>and here is my error log that does not make any sense to me</p>
  
  <pre><code>06-29 14:29:55.509: DEBUG/LC(7693): IN move
  06-29 14:29:56.149: DEBUG/LC(7693): IN UP
  06-29 14:29:56.149: DEBUG/LC(7693): 6346707 6349261
  06-29 14:29:56.149: DEBUG/LC(7693): time touched greater than 1000ms
  </code></pre>
  
  <p>the end time should be set to zero...but it is not...any idea why?</p>