I used the same exact code but with .wav files and it worked– for about 50 plays and then it crashed. I switched over to mp3 files and they won’t play at all.
The program itself works fine– I know the error occurs in this case below:
case R.id.playButton:
switch (korean.getIndex()){
case -1: break; // This is the case when the program first starts.
case 0: MediaPlayer.create(this, R.raw.c0).start(); break;
case 1: MediaPlayer.create(this, R.raw.c1).start(); break;
case 2: MediaPlayer.create(this, R.raw.c2).start(); break;
case 3: MediaPlayer.create(this, R.raw.c3).start(); break;
case 4: MediaPlayer.create(this, R.raw.c4).start(); break;
case 5: MediaPlayer.create(this, R.raw.c5).start(); break;
case 6: MediaPlayer.create(this, R.raw.c6).start(); break;
case 7: MediaPlayer.create(this, R.raw.c7).start(); break;
case 8: MediaPlayer.create(this, R.raw.c8).start(); break;
case 9: MediaPlayer.create(this, R.raw.c9).start(); break;
case 10: MediaPlayer.create(this, R.raw.c10).start(); break;
case 11: MediaPlayer.create(this, R.raw.c11).start(); break;
case 12: MediaPlayer.create(this, R.raw.c12).start(); break;
case 13: MediaPlayer.create(this, R.raw.c13).start(); break;
case 14: MediaPlayer.create(this, R.raw.v14).start(); break;
case 15: MediaPlayer.create(this, R.raw.v15).start(); break;
case 16: MediaPlayer.create(this, R.raw.v16).start(); break;
case 17: MediaPlayer.create(this, R.raw.v17).start(); break;
case 18: MediaPlayer.create(this, R.raw.v18).start(); break;
case 19: MediaPlayer.create(this, R.raw.v19).start(); break;
case 20: MediaPlayer.create(this, R.raw.v20).start(); break;
case 21: MediaPlayer.create(this, R.raw.v21).start(); break;
case 22: MediaPlayer.create(this, R.raw.v22).start(); break;
case 23: MediaPlayer.create(this, R.raw.v23).start(); break;
default: break;
}
I know that’s a lot– but those are static method calls, so it should be alright, right? Why would this crash?
You create MediaPlayer objects one after another and never release the resources, so you are probably running out of memory, consider:
Alternatively, you can set OnCompletionListener and call
releasethere.