2017-02-20 124 views
0

我有一个应用程序与音乐播放器,我使用@override方法OnCompletionListener听音乐完成时,传递到下一首歌,波纹管代码工程,但在完成OncompletionListener不再调用时第二首歌曲和音乐停止时,如何连续传递到下一首歌曲?Android媒体播放器OncompletionListener播放下一首歌,但不是第二首歌

OnCompletionListener

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
          @Override 
          public void onCompletion(MediaPlayer mp) { 
           NextSong(); 
          } 
         }); 

NextSong方法

public void NextSong(){ 

    num = posicion++; 

    if (MainActivity.num <= MainActivity.listaArray.size() - 2) { 

     mediaPlayer.reset(); 
     uri = Uri.parse(String.valueOf(archivosMp3[num + 1])); 
     mmr.setDataSource(String.valueOf(archivosMp3[num + 1])); 

     mediaPlayer = mediaPlayer.create(Servicio_Reproductor.this, MainActivity.uri); 
     mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 

       mediaPlayer.start(); 
      } 
     }); 
+0

没有能够得到你的问题。第二首歌是什么意思? –

+0

我有一个播放列表,当我播放一首歌曲,当调用完onCompletionListener的歌曲并且播放列表的下一首歌曲开始播放时,但是当这首歌曲不会继续传递到下一首歌曲时。我认为Oncompletion监听器不会再次调用。 –

回答

1

试试这个,

public class MediaplayerActivity extends Activity implements OnCompletionListener 
    { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

     mMediaPlayer.setOnCompletionListener(this); 
     } 

     @Override 
     public void onCompletion(MediaPlayer mp) { 

     . 
     . 
     . 
     mediaPlayer = mediaPlayer.create(Servicio_Reproductor.this, MainActivity.uri); 
      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mp) { 
        mMediaPlayer.setOnCompletionListener(this); 
        mediaPlayer.start(); 
       } 
      }); 

     } 
    } 
+0

呀伙计!非常感谢,您的代码完美无瑕! :d –