0

我想播放两个声音。我正在使用此代码,但两种声音之间存在大约 2 秒的延迟。我想在第一个声音完成后直接播放第二个。我怎样才能做到这一点?

MediaPlayer mp = MediaPlayer.create(getApplicationContext(),R.raw.s83); 
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
    public void onCompletion(MediaPlayer mp2){   
        mp2 = MediaPlayer.create(getApplicationContext(),R.raw.ss); 
        mp2.start();
    }
});
4

2 回答 2

2

Android 4.1 (v16) 添加了MediaPlayer.setNextMediaPlayer以允许按照功能列表进行无缝播放。onCompletion在此之前,由于缓冲,在启动另一个 MediaPlayer 和启动另一个 MediaPlayer之间总是存在小的延迟。MediaPlayer在之前创建第二个onCompletion可能也会有所帮助(并且无论如何都需要使用setNextMediaPlayer)。

于 2013-06-20T23:37:07.933 回答
0

尝试这个:

mp2创建一个类字段,MediaPlayer然后使用以下代码:

mp2 = MediaPlayer.create(getApplicationContext(),R.raw.ss); 
MediaPlayer mp = MediaPlayer.create(getApplicationContext(),R.raw.s83); 
mp.start();

mp.setOnCompletionListener(new OnCompletionListener() {
    public void onCompletion(MediaPlayer mp){   
        YourActivityClass.this.mp2.start();
    }
});

它至少会在播放第一个声音之前创建第二个MediaPlayer对象prepare(),因此您可以在那里获得一些时间。

于 2013-06-20T23:37:32.063 回答