Android:一个接一个播放两种声音

RDX*_*RDX 1 android media-player android-mediaplayer

我正在尝试播放两个声音项目,一个接一个

MediaPlayer mp        = null;

 protected void produceErrorSound(int index) {
        if (mp != null) {
            mp.reset();
            mp.release();
        }


        mp = MediaPlayer.create(this, index);

        mp.start();
    }


public void correctAnswerAndNext(){
    produceErrorSound(R.raw.right1) ;
    produceErrorSound(R.raw.right1) ;
}
Run Code Online (Sandbox Code Playgroud)

但只产生第二个声音。有什么替代方法吗?

Mic*_*ael 5

我在您的代码中看不到任何等待机制。

当您的第一个 MediaPlayer 完成播放时,您可以使用onCompletionListener接收回调。此时您可以启动第二个 MediaPlayer。

Jellybean(及更高版本)中的另一种方法是使用音频链接功能(即setNextMediaPlayer)在当前媒体播放器播放完毕后立即自动启动另一个媒体播放器。像这样的东西(setDataSource为简洁起见,我省略了对etc的调用):

mediaPlayer1.prepare();
mediaPlayer2.prepare();   
mediaPlayer1.start();
mediaPlayer1.setNextMediaPlayer(mediaPlayer2);
Run Code Online (Sandbox Code Playgroud)