我可以触摸(一次)和关闭(一次)切换按钮,但是如果我第三次触摸它,它会打开但从不播放音乐。从那里,当我再次触摸它以将其关闭时它会崩溃。
public class Main extends Activity {
MediaPlayer mp;
Button startButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
mp = MediaPlayer.create(getBaseContext(), R.raw.songthing);
ToggleButton toggle = (ToggleButton) findViewById(R.id.ToggleButton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
mp.start();
} else {
mp.stop();
}
}
});
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
我不确定我是否应该在onCreate方法中使用它...我试图移动它但是我对所有括号感到非常困惑并且它无法解决。
关于我的代码的更多信息...我试图让媒体播放器在切换按钮打开时播放一首歌并在关闭时停止播放。
编辑:Logcat说了java.lang.IllegalStateException
XML:
<ToggleButton
android:id="@+id/ToggleButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:textOff="Start"
android:textOn="Stop" />
答案 0 :(得分:2)
您可以阅读一些有关MediaPlayer
州here的信息
如果您致电stop()
,则必须再次prepare()
播放器才能start()
。
一旦处于Stopped状态,在调用prepare()或prepareAsync()将MediaPlayer对象再次设置为Prepared状态之前,无法开始播放。
如果准备播放器的时间过长,请考虑使用pause()
,然后使用seekTo(0);
替代。