MediaPlayer continue playing in background even after mediap



我正在与MediaPlayer合作。我想制作一个在线流媒体广播。现在,我有这个媒体播放器对象(Mediaplayer的),在fragment 1中说,当我在fragment 1上时,它的效果很好,一旦我进入fragment 2然后,我尝试通过

按在image button上时将其停止
if(mediaPlayer != null && mediaPlayer.isPlaying()) {
    mediaPlayer.pause();
}

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

我也使用了

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

这也无法正常工作。

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

然后在ongreate中(捆绑savedinstancestate)..

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

然后在button.onclick()

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

尝试添加其他检查onclick

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

它看起来像一个状态问题。当您更改片段时,应将按钮的状态放入OnSaveInstantState()!当您返回原始片段时,如果不保存按钮的状态,该按钮的活动不知道按钮是否已经按了。您可以尝试使用布尔变量,以了解按钮是否被按下,并且将此变量保存到SaveInstantState中!而不是在创建中,您可以检查此布尔值的值并在正确的状态下设置按钮。

最新更新