-1

我都试过了,一切都停止工作......我试图从stackflow许多代码,仍然一无所获: MediaPlayer play songs serially Android app force closes when playing next song in array list 等等的MediaPlayer不播放下一首乐曲自动

我只是从媒体播放器需要自动播放下一首歌曲。 现在这是我的代码:

import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.Window; 
import android.widget.ImageButton; 
import android.widget.TextView; 
import java.io.IOException; 


public class MainActivity extends ActionBarActivity { 

final String songs_url[] = { 
     "http://www.aap.nl/images/stories/audio/am2012-10sec-bel.mp3", 
     "http://www.cse.org.uk/downloads/file/42187%20CSE%20-%20Free%20loft%20&%20Cavity%20Wall%20Insulation%20-%2010%20sec.mp3", 
     "http://soundsleepstudio.com/soundsleep/Sounds/washing-machine-10-sec.mp3" 
}; 

private TextView SongTitle; 
private int counter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    supportRequestWindowFeature(Window.FEATURE_NO_TITLE); //fullscreen 
    setContentView(R.layout.activity_main); 


    counter = 0; 
    final ImageButton btnPlay = (ImageButton) findViewById(R.id.playAndPauseButton); 
    SongTitle = (TextView) findViewById(R.id.textViewSongTitle); 

    final MediaPlayer mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

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

      SongTitle.setText(songs_url[counter]); 

      if (mediaPlayer.isPlaying()) { 
       btnPlay.setBackgroundResource(R.drawable.playbutton); 
       mediaPlayer.pause(); 
      } else { 
       btnPlay.setBackgroundResource(R.drawable.pausebutton); 
       try { 
        mediaPlayer.setDataSource(songs_url[0]); 
       } catch (IllegalArgumentException e) { 
        e.printStackTrace(); 
       } catch (SecurityException e) { 
        e.printStackTrace(); 
       } catch (IllegalStateException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       try { 
        mediaPlayer.prepare(); 
       } catch (IllegalStateException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       mediaPlayer.start(); 
      } 
     } 
    }); 

    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mediaPlayer) { 
      for (int i = 0; i < 10; i++) { 
       try { 
        mediaPlayer.setDataSource(songs_url[counter]); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       try { 
        mediaPlayer.prepare(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       mediaPlayer.start(); 
      } 
     } 

    }); 

} 
+0

您能更具体地了解它是如何失败的吗? – pquest 2014-10-08 19:15:26

+0

死机,当我点击播放,播放第一首歌曲然后停止播放第一首歌曲。 – 2014-10-08 19:17:59

回答

2

你不能只设置一个新的数据源的MediaPlayer的。您首先需要重置它,然后设置数据源。例如:

mediaPlayer.reset(); 
    mediaPlayer.setDataSource(songs_url[counter]); 
    mediaPlayer.prepare(); 
    mediaPlayer.start(); 
相关问题