我正在尝试使用切换按钮在按钮“开启”时播放声音,并在按钮“关闭”时停止声音。
这似乎仅在我第一次在开/关按钮之间切换时才起作用。
ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton1);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
sound1.start();
} else {
// The toggle is disabled
sound1.stop();
}
}
});
答案 0 :(得分:3)
因为你调用了方法stop()。 有方法的描述:
调用stop()停止播放并使处于Started,Paused,Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。 一旦处于Stopped状态,在调用prepare()或prepareAsync()以再次将MediaPlayer对象设置为Prepared状态之前,无法开始播放。 调用stop()对已处于Stopped状态的MediaPlayer对象没有影响。
如何正确发挥,你只需要访问这个谷歌的网站。 click me.
答案 1 :(得分:0)
所以你可以做的最好的事情是使用类常量来检查标志是否已经设置。在onPause / onStop / OnDestroy时,您需要将它保存到savedCacheInstance,然后重新加载它。类似的东西:
boolean isMusicPlaying = false;
如果你在onCreate&中使用savedInstanceCache保存它。 onStop / onDestroy,您可以控制旋转和启动/退出之间的播放。 class属性也在侦听器的类范围内,因此您执行的任何操作都应更新类属性。识别任何问题的最佳方法当然是使用调试器。这样你就可以控制播放功能,看看哪个功能正在破坏。