2013-04-14 5 views
6

Ich habe Musik-Playlist für 5 Songs. Ich will nur, dass das Spiel und die Stopptasten funktionieren, solange ich in der App bin. Und dass ich Musik stoppen kann, wenn ich will und eine andere beginnen.Android Media Player wird nicht nach Stop abspielen

Wie das jetzt funktioniert ... Die Musik spielt auf PLAY-Taste, und wenn ich STOP-Taste klicke, stoppt es, aber dann möchte ich wieder ein anderes Lied oder dasselbe Lied spielen, passiert nichts. Bitte helfen Sie.

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(); 

          } 

         } 
        } 
       } 
      }; 
     } 
    } 

     );}} 

Antwort

7

Song spielen wieder Media-Player, Set-Datenquelle wieder zurückgesetzt und

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

ich bin sicher, dass dies richtig ist, aber das Zustandsdiagramm in der Dokumentation präsentiert scheint nicht diese Behauptung zu unterstützen. ich fühle mich wie der Mediaplayer-API schlecht im allgemeinen ausgelegt ist. – IcedDante

0

Wenn drücken Sie Play-Taste nach dem Stopp starten, dann Taste spielt nie funktioniert - für dieses Problem, das wir wieder Objekt erstellen in der Stopp-Taste. für eg; -stop.setOnClickListener (neu 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

Wenn das Spiel nicht funktionieren, nachdem Sie die Stopp-Taste getroffen ... nur Ihr Mediaplayer-Objekt als Objektarray machen, die es beheben sollten ..

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

Dies scheint eine wirklich seltsam Lösung Was sind die Vorteile eines Arrays von MediaPlayer-Objekten? – Seabass77

+0

Ich bin mir nicht sicher, wie das funktioniert .. Aber anywa y wir werden nur ein MediaPlayer-Objekt verwenden, dh .. mediaPlayer [0] @ Seabass77 –

+0

Nun, ich denke nicht, dass es jemals einen Fall gibt, wo Sie mehr als einen Media Player haben sollten ... aber wenn es funktioniert und Sie nicht Sehen Sie alle wichtigen Leistungsprobleme, dann ist alles gut. Edit: Was ich meine ist, dass Sie den gleichen Media Player anhalten und starten sollten, wenn Sie 2 verschiedene Songs spielen wollen – Seabass77