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

问题描述 投票:1回答:3

我正在使用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;
}

那也没有用。

android android-fragments android-mediaplayer audio-streaming
3个回答
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();

0
投票

尝试添加额外检查onCLick

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.