使用MediaPlayer的OnCompletion监听器

29

如何使用OnCompletion监听器播放音乐? 我想按下按钮进入另一个活动,播放一些音乐,然后在音乐播放完成后返回。 我已经编写了其他的代码,但我不知道如何使用OnCompletion监听器?

4个回答

60

你应该将在音乐播放完毕时需要运行的代码放在OnCompletionListener中,例如:

mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {
        finish(); // finish current activity
    }
});

8
mPlayer.setOnErrorListener(new OnErrorListener() {
public boolean onError(MediaPlayer paramMediaPlayer, int paramInt1,int paramInt2) {
// TODO Auto-generated method stub
//your code if any error occurs while playing even you can show an alert to user
return true;
}
});
mPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
//your code if the file was completely played either show an alert to user or start another activity or file.
//even you can finish you activity here
}                   
}); 

6
我发现上面的内容是正确的,但我在代码放置的位置上有些困难。 请看下面,我将这段代码放在我的开启音调的代码后面!
playButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    mediaPlayer.start();       //Next line is the beginning of where to place the code.
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
      @Override
      public void onCompletion(MediaPlayer mediaPlayer) {
      Toast.makeText(MainActivity.this, "I'm Finished", Toast.LENGTH_SHORT).show();
      }
    });
  }
});

1

这是 setOnCompletionListener 的 Kotlin 版本:

mediaPlayer.setOnCompletionListener(MediaPlayer.OnCompletionListener { it // this is MediaPlayer type
                Log.d(TAG,"setOnCompletionListener OnCompletionListener called")
                // do other task
            })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接