![](/img/trans.png)
[英]Android: Playing sound infinitely in SoundPool doesn't play for the second time after stop
[英]Android:Sound doesn't play after 24th click
因此,我是一名编程初学者,在制作带有8个按钮的简单音板应用程序时,遇到一个奇怪的问题,即在按下24个按钮后它停止播放声音。这是Java代码:
public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer;
int i = 0;
public void playSound(View view){
switch(view.getId())
{
case R.id.button1:
mediaPlayer = MediaPlayer.create(this, R.raw.doyouspeakenglish);
break;
case R.id.button2:
mediaPlayer = MediaPlayer.create(this, R.raw.goodevening);
break;
case R.id.button3:
mediaPlayer = MediaPlayer.create(this, R.raw.hello);
break;
case R.id.button4:
mediaPlayer = MediaPlayer.create(this, R.raw.howareyou);
break;
case R.id.button5:
mediaPlayer = MediaPlayer.create(this, R.raw.ilivein);
break;
case R.id.button6:
mediaPlayer = MediaPlayer.create(this, R.raw.mynameis);
break;
case R.id.button7:
mediaPlayer = MediaPlayer.create(this, R.raw.please);
break;
case R.id.button8:
mediaPlayer = MediaPlayer.create(this, R.raw.welcome);
break;
default:
throw new RuntimeException("Unknown button ID");
}
i++;
Log.i("klik", Integer.toString(i));
mediaPlayer.start();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这是错误消息,我不允许以新用户身份发布图像,因此这是一个链接
您没有释放媒体播放器资源,因此也需要关闭并释放它们。
public void playSound(View view){
if (null != mediaPlayer) {
mediaPlayer.stop();
mediaPlayer.release();
}
switch(view.getId())
{
case R.id.button1:
mediaPlayer = MediaPlayer.create(this, R.raw.doyouspeakenglish);
break;
case R.id.button2:
mediaPlayer = MediaPlayer.create(this, R.raw.goodevening);
break;
case R.id.button3:
mediaPlayer = MediaPlayer.create(this, R.raw.hello);
break;
case R.id.button4:
mediaPlayer = MediaPlayer.create(this, R.raw.howareyou);
break;
case R.id.button5:
mediaPlayer = MediaPlayer.create(this, R.raw.ilivein);
break;
case R.id.button6:
mediaPlayer = MediaPlayer.create(this, R.raw.mynameis);
break;
case R.id.button7:
mediaPlayer = MediaPlayer.create(this, R.raw.please);
break;
case R.id.button8:
mediaPlayer = MediaPlayer.create(this, R.raw.welcome);
break;
default:
throw new RuntimeException("Unknown button ID");
}
i++;
Log.i("klik", Integer.toString(i));
mediaPlayer.start();
}
请阅读媒体播放器上的注释:
使用MediaPlayer完成后,应调用release()释放资源。 如果未发布,那么太多MediaPlayer实例将导致异常。
因此,在再次调用MediaPlayer.create之前,只需调用
mediaPlayer.stop();
mediaPlayer.release();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.