繁体   English   中英

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

[英]App Crashing when playing sounds in succession in MediaPlayer

我在这里找到以下代码作为问题的答案: 在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();
        }
    }

更改此:

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();
        }
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM