【问题标题】:Android Media Player Release won't stop playingAndroid Media Player Release 不会停止播放
【发布时间】:2014-08-01 03:52:40
【问题描述】:

这是我的场景:

我有一个从 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”。糟糕。

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案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();
            }
        }
    );
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多