我花了很多时间试图解决这个问题:MediaPlayer OnCompletion为何第一次播放媒体?
当MediaPlayer第一次被加载并启动时,它的OnCompletion被调用。这是一个问题,因为我有一些代码在上一个轨道完成时跳到下一个轨道。
我已经在OnCompletion监听器中使用了一个标志来解决它,但为什么会这样呢?
这个片段是在我服务的play()方法:
mp.setDataSource(mCurrentMediaFile);
mp.prepare();
mDuration = mp.getDuration();
int seek = mDuration * position/1000;
mp.seekTo(seek);
mp.start();
出于某种原因,onCompletion从播放()返回即使它是后正在播放的第一首曲目方法后立即叫服务已创建。
嗨,你发现这里有什么问题吗?我有类似的问题。 OnComletion在mp.reset()之后调用 – vandzi
@vandzi:不,不是。我在onCompletion处理程序中使用了一个解决方法。您也可以检查时间,以便如果在启动(或重置)后500毫秒内调用处理程序,则代码将被跳过。 – marlar