应用程序在MediaPlayer中连续播放声音时崩溃

我发现以下代码作为一个问题的答案在这里一个接一个地在MediaPlayer中播放多个文件在android中

当我运行它时,播放了3个声音但随后应用程序关闭并显示消息

不幸的是,申请已经停止。

onCompletion方法中是否缺少某些内容?

 public class MainActivity extends Activity implements MediaPlayer.OnCompletionListener { int[] tracks = new int[3]; int currentTrack = 0; private MediaPlayer mediaPlayer = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tracks[0] = R.raw.p46; tracks[1] = R.raw.p52; tracks[2] = R.raw.p55; mediaPlayer = MediaPlayer.create(getApplicationContext(), tracks[currentTrack]); mediaPlayer.setOnCompletionListener(this); mediaPlayer.start(); } public void onCompletion(MediaPlayer arg0) { arg0.release(); if (currentTrack < tracks.length) { currentTrack++; arg0 = MediaPlayer.create(getApplicationContext(), tracks[currentTrack]); arg0.setOnCompletionListener(this); arg0.start(); } } 

改变这个:

 public void onCompletion(MediaPlayer arg0) { arg0.release(); if (currentTrack < tracks.length) { currentTrack++; arg0 = MediaPlayer.create(getApplicationContext(), tracks[currentTrack]); arg0.setOnCompletionListener(this); arg0.start(); } } 

至 :

 public void onCompletion(MediaPlayer arg0) { arg0.release(); currentTrack++; if (currentTrack < tracks.length) { arg0 = MediaPlayer.create(getApplicationContext(), tracks[currentTrack]); arg0.setOnCompletionListener(this); arg0.start(); } } 

基本上你得到一个ArrayIndexOutofBoundException becoz最后currentTrack是3并且索引3没有项目即第4项