Android Media Player Release不会停止播放

时间:2014-07-31 19:16:22

标签: android android-mediaplayer

这是我的情景:

我有一个从20秒倒计时的计时器。 13秒后,声音开始播放。在0秒时,我停止当前声音,加载新声音并播放新声音。一旦声音结束,我加载前一个声音,将其设置为循环,然后启动它。

这是命中0秒的逻辑:

mp.stop();
mp = MediaPlayer.create(mActivity, R.raw.second_sound);
mp.start();

mp.setOnCompletionListener(new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {
        mp = MediaPlayer.create(mActivity, R.raw.first_sound);
        mp.setLooping(true);
        mp.start();
    }
});

一旦最后一个声音开始播放,调用mp.release()并不会停止播放器。关于如何阻止玩家的任何想法?

注意:mp.release()在我第一次开始播放时和第二次声音期间有效,但在循环播放期间不起作用。

解决方案:我的全球MediaPlayer也被命名为" mp"。糟糕。

2 个答案:

答案 0 :(得分:1)

您将mp MediaPlayer个对象混淆了一点。如果在mp.release()方法之外调用onCompletion(),则不是指在那里创建的循环实例。更改onCompletion()中的标识符以引用"外部" mp。例如,如果您的代码位于MainActivity

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {
        @Override
        public void onCompletion(MediaPlayer mp)
        {
            MainActivity.this.mp = MediaPlayer.create(MainActivity.this, R.raw.chirp);
            MainActivity.this.mp.setLooping(true);
            MainActivity.this.mp.start();
        }
    }
);

答案 1 :(得分:0)

为什么每次创建新的媒体播放器而不是在onCompltion上发布旧的媒体播放器?你试过setDataSource吗?