Comment faire pour déterminer un appui long sur android?

Je suis à la recherche d'un moyen pour que quand un utilisateur de longue touche une mapview (disons pour 1000ms) que je ne peux certains comment faire une certaine action.

Comment puis-je juger de combien de temps un utilisateur de longue touche un mapsview(ou opinion).

Il serait similaire à android application google maps, lorsque vous le touchez, il apporte un ballon de superposition élément.

Modifier ajouté

mapView.setOnLongClickListener(new View.OnLongClickListener() {

        public boolean onLongClick(View v) {

            Toast.makeText(mapView.getContext(), "Hello 123", 2000);
            return false;
        }
    });

le ci-dessus ne fonctionne pas... des idées pourquoi?

Modifier ajouté

C'est ce que j'essaie pour le moment, mais il ne semble pas fonctionner, même si je n'appuyez sur sur le téléphone, il dit que l'événement est une action_move,

je suis en utilisant un intérieur de classe dans mon MapActivity

    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 > 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

    }

}

et voici mon journal d'erreurs qui n'a aucun sens pour moi

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

la fin des temps doit être mis à zéro...mais il n'est pas...une idée de pourquoi?

Cela a parfaitement fonctionné! Ici C#/Xamarin version est quelqu'un doit: protected long _touchStartTime; public override bool OnTouchEvent(MotionEvent e){if (e.Action == MotionEventActions.Down) _touchStartTime = e.EventTime; if (e.Action == MotionEventActions.Up && e.EventTime - _touchStartTime > 1000) DoSomethingFun(); return base.OnTouchEvent(e);}
Bonjour, avez-vous comprendre comment faire de l'action si l'utilisateur a appuyé sur le bouton pendant quelques temps (disons 1000ms) ?

OriginalL'auteur molleman | 2011-06-29