2013-04-14 13 views
6

Ho una playlist di musica per 5 canzoni. Voglio solo che i pulsanti play e stop funzionino finché sono nell'app. E posso interrompere la musica quando voglio e avviarne un'altra.Il lettore multimediale Android non riproduce dopo l'arresto

Come funziona ora ... La musica viene riprodotta sul pulsante PLAY, e quando faccio clic sul pulsante STOP si arresta, ma poi voglio riprodurre un'altra canzone, o la stessa canzone, non succede nulla. Per favore aiuto.

public class glavna extends Activity{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main); 



    final MediaPlayer MPRadio1 = MediaPlayer.create(this, R.raw.pj1); 
    final MediaPlayer MPRadio2 = MediaPlayer.create(this, R.raw.pj2); 
    final MediaPlayer MPRadio3 = MediaPlayer.create(this, R.raw.pj3); 
    final MediaPlayer MPRadio4 = MediaPlayer.create(this, R.raw.pj4); 
    final MediaPlayer MPRadio5 = MediaPlayer.create(this, R.raw.pj5); 

    final RadioButton rb1, rb2, rb3, rb4, rb5;  

    rb1 = (RadioButton) findViewById(R.id.radio1); 
    rb2 = (RadioButton) findViewById(R.id.radio2); 
    rb3 = (RadioButton) findViewById(R.id.radio3); 
    rb4 = (RadioButton) findViewById(R.id.radio4); 
    rb5 = (RadioButton) findViewById(R.id.radio5); 


    Button btn = (Button) findViewById(R.id.buttonplay); 
    Button btnStop = (Button) findViewById(R.id.buttonStop); 

    btnStop.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View b){ 

     MPRadio1.stop(); 
     MPRadio2.stop(); 
     MPRadio3.stop(); 
     MPRadio4.stop(); 
     MPRadio5.stop(); 


    }; 
    }); 


    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 



      if(rb1.isChecked()) 
      {  

      MPRadio1.start(); 

      } 
     else 
      { 
      if(rb2.isChecked()) 
      { 

       MPRadio2.start(); 
      } 
       else 
       { 
        if(rb3.isChecked()) 
        { 
        MPRadio3.start(); 

       } 
        else 
        { 
         if(rb4.isChecked()) 
         { 
         MPRadio4.start(); 

        } 
         else 
         { 
          if(rb5.isChecked()) 
          { 
          MPRadio5.start(); 

          } 

         } 
        } 
       } 
      }; 
     } 
    } 

     );}} 

risposta

7

per giocare canzone di nuovo ripristinare il lettore multimediale, impostare origine dati di nuovo e iniziare

mp.reset(); 
mp.setDataSource(MEDIA_PATH); 
mp.prepare(); 
mp.start(); 
+0

sono sicuro che questo è corretto, ma il diagramma di stato presentato nella documentazione non sembra supportare questa affermazione. mi sento come l'API MediaPlayer è progettato male in generale. – IcedDante

0

Quando premere il pulsante di riproduzione dopo l'arresto, quindi il pulsante non funziona mai giocare - per questo problema possiamo creare di nuovo oggetto nel pulsante di arresto. per esempio; -stop.setOnClickListener (nuova OnClickListener() {

 @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if(mPlayer.isPlaying()) 
      mPlayer.stop(); 
      mPlayer = MediaPlayer.create(mediaplayeractivity.this, R.raw.adidas); 
     } 
    });} 
0

Quando il gioco non funzionerà dopo si preme il pulsante di arresto ... basta fare il vostro oggetto MediaPlayer come una matrice di oggetti che dovrebbe risolvere il problema ..

final MediaPlayer[] mediaPlayer = {MediaPlayer.create(getApplicationContext(), R.raw.song_name)}; 

stop.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      mediaPlayer[0].stop(); 

      mediaPlayer[0] = MediaPlayer.create(getApplicationContext(),R.raw.song_name); 
     } 
    }); 
+0

questo mi sembra un davvero strano soluzione Quali sono i vantaggi di avere una serie di oggetti MediaPlayer? – Seabass77

+0

Non sono sicuro di come funzioni .. Ma anywa y useremo solo un oggetto MediaPlayer, ad esempio .. mediaPlayer [0] @ Seabass77 –

+0

Beh, non penso ci sia mai un'istanza in cui dovresti avere più di un lettore multimediale ... ma se funziona e tu no vedere eventuali problemi significativi delle prestazioni, allora immagina che tutto vada bene. Modifica: Ciò che intendo è che dovresti mettere in pausa e avviare lo stesso lettore multimediale se vuoi riprodurre 2 brani diversi – Seabass77

Problemi correlati