我的应用程序中有4个ToggleButtons。所有这些都是用于在应用程序中循环声音。所以,这意味着当我想点击第一个ToggleButoon并且其状态将打开时,音乐开始播放并保持循环直到其状态为 ON 。与ToggleButtons的其余部分相同。他们可能同时 ON (所有这些),所以我打算让4个媒体播放器循环播放。
这是我第一次使用TogglleButton的代码,即使只有一个人也没有运气......
public MediaPlayer resourcePlayer;
Context appContext = getApplicationContext();
resourcePlayer = MediaPlayer.create(appContext,R.raw.loop1);
.....
.....
public void onClick (View v){
switch (v.getId()) {
case R.id.toggleButton1:
boolean on = ((ToggleButton) v).isChecked();
if (on) {
resourcePlayer.start();
resourcePlayer.setLooping(true)
}
else {
resourcePlayer.stop();
}
break;
}
当我点击ToggleButton时没有任何反应,只有状态正在改变,因为我可以看到,LogCat也清除。谢谢)
UPD1:现在它正在循环,但是当我改变状态时它不会停止并保持循环
UPD2:resourcePlayer是主要活动中的公共
UPD3:我已经将MediaPlayer变量取出来onCreate menthod,所以不要复制。它播放和停止,但仅在Logcat提供错误消息后第一次
MediaPlayer start called in state 0
....
....
MediaPlayer stop called in state 0
答案 0 :(得分:1)
你需要使用resourcePlayer.setLooping(true);或者是假的
你的UPD3:
因为你正在停止resourcePlayer,所以需要重新分配声源,但在你的情况下它只分配oncreate方法,它只是第一次调用。因此,每次你想停止播放后都需要重新初始化它。
答案 1 :(得分:1)
我认为这是因为您不断创建媒体播放器的新实例。因此,您始终将停止命令发送到新创建的媒体播放器对象,而不是当前播放的对象。