2010-12-10 37 views
1

Y at-il un moyen que je peux détecter pendant combien de temps un bouton est appuyez ?? Je veux capturer l'heure pour laquelle un bouton est pressé et agir en conséquence. Donc, si un utilisateur continue à appuyer sur le bouton pendant 5 secondes, je veux détecter que 5 secondes sur Android.comment détecter la période pour laquelle un bouton est pressé dans android

S'il vous plaît laissez-moi savoir

Merci pranay

+0

comment accepter les réponses je ne sais pas pouvez-vous me dire –

Répondre

2

Donnez le bouton une View.OnTouchListener. La méthode onTouch que vous implémentez vous donnera accès à un MotionEvent. Ensuite, en utilisant getFlags(), vous saurez quand l'utilisateur commence à appuyer sur le bouton (ACTION_DOWN) et quand il s'arrête (ACTION_UP). Il suffit d'enregistrer l'heure du système lorsque cela se produit (ou comme suggéré dans une autre réponse, getDownTime() vous donnera le temps dont vous avez besoin, mais seulement lorsque vous avez l'indicateur ACTION_UP). Envisagez d'accepter les réponses si vous en voulez plus. Votre profil montre 0% accepter le taux.

3

Utilisation suivant pour déterminer le contact duration.You peut l'utiliser dans une instruction if: event.getEventTime() -> event.getDownTime() 5000 Il calcule en ms, ce qui signifie que pour votre 5 sec dont vous avez besoin ce nombre à 5000

nE pAS UTILISER: android.os.SystemClock.elapsedRealtime() - event.getDownTime() il peut travailler sur le simulateur, mais il ne fonctionnera pas sur l'appareil! Ne me demandez pas comment je le sais;)

0
private long timeElapsed = 0L; //make this a global variable 

    //tvTouches could be a TextView or Button or other views 
    tvTouches.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        timeElapsed = event.getDownTime(); 
        Log.d("setOnTouchListener", "ACTION_DOWN at>>>" + event.getDownTime()); 
        break; 
       case MotionEvent.ACTION_UP: 
        timeElapsed = event.getEventTime() - timeElapsed; 
        Log.d("setOnTouchListener", "ACTION_UP at>>>" + event.getEventTime()); 
        Log.d("setOnTouchListener", "Period of time the view is pressed>>>" + timeElapsed); 
        Toast.makeText(getApplicationContext(), "Period of time the view is pressed in milliseconds>>>" + timeElapsed, Toast.LENGTH_SHORT).show(); 
        timeElapsed = 0L; 
        //TODO do something when a certain period of time has passed 
        break; 
       default: 
        break; 
      } 
      return true; 
     } 
    });