两个声音“Mediaplayer”android之间的滞后

时间:2013-06-20 23:19:40

标签: android audio media-player lag

我想播放两种声音。我正在使用这段代码,但是这两个声音之间的滞后时间约为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();
    }
});

2 个答案:

答案 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(),所以你可以在那里获得一些时间。