【发布时间】:2011-11-25 21:03:11
【问题描述】:
我花了很多时间试图弄清楚这一点:
第一次加载并启动 MediaPlayer 时,会调用其 OnCompletion。这是一个问题,因为我有一些代码会在上一首曲目完成后跳到下一首曲目。
我已经在 OnCompletion 监听器中使用了一个标志来解决它,但是为什么会这样呢?
这个 sn-p 来自我服务中的 play() 方法:
mp.setDataSource(mCurrentMediaFile);
mp.prepare();
mDuration = mp.getDuration();
int seek = mDuration * position / 1000;
mp.seekTo(seek);
mp.start();
出于某种原因,在从 play() 方法返回后立即调用 onCompletion,即使它是在服务创建后播放的第一首曲目。
【问题讨论】:
-
嗨,你发现这里有什么问题了吗?我有类似的问题。 OnComletion 在 mp.reset() 之后调用
-
@vandzi:不,不是真的。我在 onCompletion 处理程序中使用带有标志的解决方法。您还可以检查时间,以便如果在启动(或重置)后 500 毫秒内调用处理程序,则将跳过代码。
标签: android media-player