2012-06-07 2 views
2

En fait, cette question extendsthis one.quantité Count bouton pressé

Je veux compter la quantité de mon bouton enfoncé de mon casque. Mais lorsque j'appuie sur le bouton, j'obtiens Toast "Pressed 1 time". Je comprends toujours, le système ne marche jamais dans d'autres if s.

Comment puis-je résoudre ce problème?

Merci

AJOUT travail ne peut toujours pas ça. Voici ce que je fais:

if(action == KeyEvent.ACTION_DOWN) 
    { 
     k++; 
     try 
     { 
      wait(1000); 
     } catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
     if(k == 1) 
      Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show(); 
     if(k == 2) 
      Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show(); 
     if(k == 3) 
      Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show(); 
     if(k>=4) 
     { 
      String a = Integer.toString(k); 
      Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show(); 
     } 
     k = 0; 
    abortBroadcast(); 
+0

Etes-vous sûr que les écouteurs multiclicking génèrent des événements clés "ACTION_MULTIPLE"? – Kheldar

+0

Non, je ne suis pas sûr du tout. J'espère qu'il génère :) Je veux contrôler le bouton. Pour l'instant, le clic sur le bouton exécute la fonction PLAY/STOP pour le lecteur, je veux qu'il passe à la piste suivante si j'appuie deux fois, ou si je passe à la précédente si je presse trois fois. Wonder, comment puis-je faire cela. – azizbekian

+0

Vous pouvez y parvenir en utilisant un simple compteur et l'incrémenter dans KeyEvent.ACTION_UP. –

Répondre

3

« plusieurs événements clés en double ont eu lieu dans une ligne » est la définition de ACTION_MULTIPLE, vous appuyant uniquement sur un seul bouton.

if(action == KeyEvent.ACTION_DOWN) 
{ 
    k++; 
    Toast.makeText(context, "Pressed " + Integer.toString(k) + " time(s).", Toast.LENGTH_SHORT).show(); 
} 

Edit:

Oh je vois que vous voulez à la piste suivante double ou en arrière sur les clics triple. Je suggère de mettre en place un fil. Dans votre KeyEvent.ACTION_DOWN, comptez les touches enfoncées. Dans votre thread, appelons un wait (500) et vérifiez combien de fois votre bouton a été pressé et agissez en conséquence et remettez le compteur à 0.

+0

Bon appel, c'est un problème de définition ACTION_MULTIPLE: D – Kheldar

+0

J'ai édité ma réponse en fonction de votre problème, vérifiez-la. –

+0

@ AntalHorváth, a édité la question. – azizbekian