[英]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.