2017-02-20 153 views
0

私はミュージックプレーヤーでアプリケーションを持っています。音楽が完成し次の曲に渡すときに@overrideメソッドOnCompletionListenerを使用しています。しかし、2番目の曲では、OncompletionListenerの終了時にAgainを呼び出していません。終了したら音楽が停止して、次の曲にどのように連続して渡されますか?Android Media Player OncompletionListener次の曲を再生しますが、2番目の曲は再生しません。

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

ことができない、これを試してみてください。 2曲目はどういう意味ですか? –

+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 –

関連する問題