MediaPlayer.SeekTo(int)抛出IllegalStateException

时间:2012-10-02 01:25:06

标签: android service media-player illegalstateexception

有时我会被MediaPlayer抛出IllegalStateException.SeekTo(int) MediaPlayer在Service中运行,并调用SeekTo(int),如下所示:

public void seekTo(int value)
{
if (mp != null && !(value <= -1)) {
mp.seekTo(value);
}
}

1 个答案:

答案 0 :(得分:1)

IllegalStateException用于防止编程错误,例如调用prepare()prepareAsync()或其中一个处于无效状态的重载setDataSource方法。

如果在任何其他州调用IllegalStateExceptionprepare(),则会引发prepareAsync()

尽管异步seekTo(int)调用以正确的方式返回,但实际的搜索操作可能需要一段时间才能完成,尤其是对于流式传输的音频/视频。当实际搜索操作完成时,如果事先通过OnSeekComplete.onSeekComplete()注册了OnSeekCompleteListener,则内部玩家引擎会调用提供的setOnSeekCompleteListener(OnSeekCompleteListener)用户。 请注意,seekTo(int)也可以在其他州调用,例如PreparedPausedPlaybackCompleted州。

此数据全部包含在此处:http://developer.android.com/reference/android/media/MediaPlayer.html 事实上我直接引用了它。

您应该能够使用OnErrorListener()处理遇到的任何错误。

您可以在此处找到有关OnErrorListener()的更多信息:

http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html

在错误监听器中,您将:

  1. 收到错误。
  2. 确定错误类型。
  3. 处理错误以纠正错误而不会崩溃。