即使在mediaplayer.pause()之后,MediaPlayer也会继续在后台播放

时间:2017-12-15 10:53:28

标签: android android-fragments android-mediaplayer audio-streaming

我正在使用MediaPlayer。我想制作一个在线流媒体广播。现在我有了这个mediaPlayer对象(MediaPlayer),比如在片段1中,当我在片段1上时播放正常,一旦我转到片段2,它仍在播放但问题是当我再次回到片段1时然后我尝试通过

按下ImageButton时停止它
if(mediaPlayer != null && mediaPlayer.isPlaying()) {
    mediaPlayer.pause();
}

但它不会停止并继续在后台播放,当我点击播放该音频时,我会听到两个音频,即新音频和前一个在后台播放。

我也用过

if(mediaPlayer != null && mediaPlayer.isPlaying()) {
    mediaPlayer.stop();
    mediaPlayer.release();
    mediaPlayer = null;
}

这也不起作用。

3 个答案:

答案 0 :(得分:1)

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putBoolean("media_player_state", isStarted);
    super.onSaveInstanceState(outState);
}

然后在onCreate(Bundle savedInstanceState)..

if(savedInstanceState!=null && savedInstanceState.containsKey("media_player_state")){
        isStarted = savedInstanceState.getBoolean("media_player_state");
    }
    else {
        isStarted = false;
    }

然后在按钮中。单击()

if(isStarted == true) mediaPlayer.stop();
else mediPlayer.play();

答案 1 :(得分:0)

尝试添加额外检查onCLick

if(mediaPlayer.isPlaying()) {
    mediaPlayer.stop();
    mediaPlayer.release();
    mediaPlayer = null;
}

答案 2 :(得分:0)

它看起来像一个状态问题..当你改变片段时,你应该把按钮的状态放在onSaveInstantState()中!当你回到原始片段时没有保存按钮的状态,按钮的活动无法知道按钮之前是否已经按下.. 您可以尝试使用布尔变量来了解按钮是否被按下,而不是将此变量保存到saveInstantState中!在创建时,您可以检查此布尔值,并将按钮设置为正确的状态..