Android 切换按钮可使mediaplayer同时播放两次
我有一个mediaplayer,可以在下面的活动中播放音乐。问题是,音乐会转移到所有其他活动中,这很好。但当我开始播放音乐时,转到另一个活动,然后再回到下面的活动,切换按钮已从打开变为关闭。因此,如果我单击togglebutton,即使音乐仍在播放,音乐仍会再次启动,因此现在音乐一次播放两次!如何让togglebutton知道音乐正在播放,以便当我返回活动时,togglebutton从一开始就处于打开状态?默认情况下是关闭的Android 切换按钮可使mediaplayer同时播放两次,android,android-activity,android-mediaplayer,android-button,Android,Android Activity,Android Mediaplayer,Android Button,我有一个mediaplayer,可以在下面的活动中播放音乐。问题是,音乐会转移到所有其他活动中,这很好。但当我开始播放音乐时,转到另一个活动,然后再回到下面的活动,切换按钮已从打开变为关闭。因此,如果我单击togglebutton,即使音乐仍在播放,音乐仍会再次启动,因此现在音乐一次播放两次!如何让togglebutton知道音乐正在播放,以便当我返回活动时,togglebutton从一开始就处于打开状态?默认情况下是关闭的 public class SpelaActivity extends
public class SpelaActivity extends Activity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spela);
final MediaPlayer mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.ljudfil);
ToggleButton musikknapp = (ToggleButton) findViewById(R.id.togglemusik);
musikknapp.setOnCheckedChangeListener (new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
mediaPlayer.start();
} else {
mediaPlayer.pause();
}
}
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
}
});
}
}
您需要保存ToggleButton状态。 请尝试以下代码:
public class MainActivity extends Activity {
private ToggleButton toggleButton;
private static Bundle bundle = new Bundle();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toggleButton = (ToggleButton)findViewById(R.id.toggleButton1);
}
@Override
public void onPause() {
super.onPause();
bundle.putBoolean("ToggleButtonState", toggleButton.isChecked());
}
@Override
public void onResume() {
super.onResume();
toggleButton.setChecked(bundle.getBoolean("ToggleButtonState",false));
}
如果需要,请添加这些条件!mediaPlayer.isplay
成功使mediaplayer在单击“后退”按钮时停止:
final ToggleButton togglemusik = (ToggleButton) findViewById(R.id.togglemusik);
mp = MediaPlayer.create(this, R.raw.ljudfil);
togglemusik.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (togglemusik.isChecked()) {
mp.start();
} else {
mp.pause();
}
}
});
}
@Override
public void onPause() {
super.onPause();
if (mp !=null) {
mp.release();
mp = null;
}
}
在切换到另一个活动后,当我返回到该活动时,它会将togglebutton设置为打开,但它也会使音乐在我未单击togglebutton的情况下启动!?所以我还是无法控制音乐是开还是关?或者我应该把这个代码放在主活动中吗?验证mediaplayer正在播放:mp.isPlayingHow是什么意思?我试图在if-else语句中将ischeck改为mediaPlayer.isPlaying,但没有成功。和以前一样,在我进行特定活动时,togglebutton执行它应该执行的操作。一旦我离开它回来,当麻烦开始发生的时候。是否有某种方法可以隔离mediaplayer,以便在该活动中仅播放音乐?您的意思是如果!mediaPlayer.isPlaying{?我尝试了你的两种备选解决方案,但不幸的是没有解决问题。检查这些链接有media player的代码:谢谢,我会检查的!
final ToggleButton togglemusik = (ToggleButton) findViewById(R.id.togglemusik);
mp = MediaPlayer.create(this, R.raw.ljudfil);
togglemusik.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (togglemusik.isChecked()) {
mp.start();
} else {
mp.pause();
}
}
});
}
@Override
public void onPause() {
super.onPause();
if (mp !=null) {
mp.release();
mp = null;
}
}