我正在尝试连续播放音频,没有任何差距.我试过了, mediaplayer.setLooping(true); 但它在重复时间之间产生了差距.试过这个, mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override
mediaplayer.setLooping(true);
但它在重复时间之间产生了差距.试过这个,
mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mediaplayer.start(); } });
它也给出了一个差距.我试过不同的音频格式.但这两种方式都不适合我.在android中还有其他方法吗?
当播放结束时,播放器引擎将检查所有曲目是否完成,一旦完成,它将检查循环标志.基于循环标志,寻求0秒.作为搜索的一部分,播放器引擎将从特定位置读取数据并开始播放.延迟可能是由于搜索实现以及存储介质(如SD卡)引入的延迟,除了重新初始化所有轨道并重新启动它们之外.因此,当玩家恢复到起始位置时,存在明确的延迟.
底层循环实现可以在这个函数AwesomePlayer :: onStreamDone中找到,如下所示:http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/AwesomePlayer.cpp#834
编辑1:
要实现真正的无间隙播放,您还可以考虑setNextMediaPlayer()
功能.