Domanda

il mio problema è semplice. Voglio riprodurre un suono in loop solo quando si preme un tasto. Di seguito sono l'istruzione switch e se gli altri approcci che ho provato. nella migliore delle ipotesi, posso giocare il suono, ma non voglio mettere in pausa quando il pulsante non è premuto.

    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;
   }
È stato utile?

Soluzione

Prova ritorno true invece false alla fine del onTouch.

Da (probabilmente) accadendo in questo momento è che si ottiene un evento ACTION_DOWN che inizia il suono. Restituendo false dite al quadro che si non ha fatto consumare l'azione, che ci vuole per dire che non si consumerà le azioni future, sia. Esso, quindi, interrompere l'invio di eventi di tocco al vostro punto di vista.

Android-sviluppatori :

  

Quando si arriva l'evento ACTION_DOWN,   stai restituendo vero? In caso contrario, questo   è probabilmente il problema. il quadro   consegnerà solo i futuri eventi di tocco   (ACTION_MOVEs e l'ACTION_UP) a   Tale tesi, se il suo tocco ascoltatore o   onTouchEvent restituisce true.

Altri suggerimenti

Sposta il mp di fuori del 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();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top