打在继承的声音时,我发现下面的代码作为一个答案在这里的一个问题Playing multiple files in MediaPlayer one after other In android应用程序崩溃的MediaPlayer的
当我运行它,在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();
}
}
我认为这只是你的if语句的错误。在范围检查之后,您正在增加'currentTrack',导致超出范围的异常。 – Jack
我认为这个错误来自'arg0.setOnCompletionListener(this);'在你的onCompletion方法中尝试删除它,看它是否在第一首歌曲后没有抛出错误 –