Question

mon problème est simple. Je veux jouer un son en boucle que lorsqu'une touche est enfoncée. les éléments suivants sont l'instruction switch et si d'autre approche que j'ai essayé. au mieux, je peux jouer le son, mais ce ne sera pas une pause lorsque le bouton n'est plus pressé.

    public boolean onTouch(View v, MotionEvent event) {
 MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.clash);

 if (v.getId() == R.id.clash && event.getAction() == MotionEvent.ACTION_DOWN){
  mp.setLooping(true);
  mp.start();

 }else if (v.getId() == R.id.clash && event.getAction() == MotionEvent.ACTION_UP)
 {mp.pause();

 }
}

    public boolean onTouch(View v, MotionEvent event) {
    MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.clash);

     switch (event.getAction()){

     case MotionEvent.ACTION_DOWN:
      mp.setLooping(true);
      mp.start();

     case MotionEvent.ACTION_UP:
      mp.pause();
    }


    return false;
   }
Était-ce utile?

La solution

Essayez de revenir true au lieu de false à la fin de onTouch.

Quelle est (probablement) passe en ce moment est que vous obtenez un événement ACTION_DOWN qui commence son. En retournant false vous dites le cadre que vous n'a pas consomment l'action, qu'il faut pour dire que vous ne consommerez pas des actions futures, que ce soit. Ainsi, il cesse d'envoyer des événements tactiles à votre vue.

android-développeurs:

  

Lorsque vous obtenez l'événement ACTION_DOWN,   Retournez-vous vrai? Dans le cas contraire, cette   est probablement la question. le cadre   ne livrera les événements tactiles futurs   (ACTION_MOVEs et le ACTION_UP) à   que Voir si son écoute tactile ou   onTouchEvent renvoie true.

Autres conseils

Passez votre mp en dehors du OnTouch Handler!

MediaPlayer mp;
public boolean onTouch(View v, MotionEvent event) {
mp = MediaPlayer.create(getBaseContext(), R.raw.clash);

 switch (event.getAction()){

 case MotionEvent.ACTION_DOWN:
  mp.setLooping(true);
  mp.start();

 case MotionEvent.ACTION_UP:
  mp.pause();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top