是否可以缩短使用MediaPlayer播放的音轨之间的时间间隔?

时间:2013-08-21 14:25:58

标签: android android-mediaplayer

我需要按顺序播放许多音轨。我使用MediaPlayer' OnCompletionListener如下:

public void OnCompletion(MediaPlayer mp)
{
    _completed++;
    mp.Reset();

    if (_completed < _tracks.Length)
    {
        try
        {
            AssetFileDescriptor afd = _context.Resources.OpenRawResourceFd(_tracks[_completed]);

            if (afd != null)
            {
                mp.SetDataSource(afd.FileDescriptor, afd.StartOffset, afd.Length);
                afd.Close();
                mp.Prepare();
                mp.Start();    
            }


        }
        catch (Exception ex)
        {

            throw;
        }
    }
}

这有效,但曲目之间有明显的延迟。我希望将这段时间缩短到尽可能接近零。这可能吗?

2 个答案:

答案 0 :(得分:1)

MediaPlayer“chaining”添加了API级别16(Jellybean)。您感兴趣的方法是setNextMediaPlayer(MediaPlayer next)

  

MediaPlayer设置为在此MediaPlayer完成播放时启动(即到达流的末尾)。媒体框架将尝试尽可能无缝地从该播放器转换到下一个播放器。下一个玩家可以在完成之前随时设置。下一个玩家必须由应用程序准备,应用程序不应该在其上调用start()

答案 1 :(得分:0)

虽然有很多请求要添加无间隙播放,但不是标准的Android播放器 - https://code.google.com/p/android/issues/detail?id=3461

您可以尝试创建并准备第二个MediaPlayer实例,并在OnCompletion回调中快速切换它们。