我想播放两种声音。我正在使用这段代码,但是这两个声音之间的滞后时间约为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();
}
});
答案 0 :(得分:1)
Android 4.1(v16)添加MediaPlayer.setNextMediaPlayer,根据feature list添加{{3}}以允许无间隙播放。在此之前,由于缓冲,onCompletion
和启动另一个MediaPlayer之间总会有一个小的延迟。在MediaPlayer
之前创建第二个onCompletion
也可能有所帮助(并且无论如何都需要使用setNextMediaPlayer
。)
答案 1 :(得分: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()
,所以你可以在那里获得一些时间。