我正在使用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;
}
这也不起作用。
答案 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中!在创建时,您可以检查此布尔值,并将按钮设置为正确的状态..