MediaPlayer.SeekTo(int) が IllegalStateException をスローする
-
12-12-2019 - |
質問
時々、Mediaplayer.seekto(int)によってスローされたIllegalStateExceptionを取得します。Mediaplayerはサービスで実行され、このようなSeek(int)を呼び出します。
public void seekTo(int value)
{
if (mp != null && !(value <= -1)) {
mp.seekTo(value);
}
}
解決
IllegalStateException
呼び出しなどのプログラミング エラーを防ぐためにスローされます。 prepare()
, prepareAsync()
, 、または過負荷のいずれか setDataSource
メソッドが無効な状態です。
アン IllegalStateException
の場合にスローされます prepare()
または prepareAsync()
他の状態で呼び出されます。
非同期ですが、 seekTo(int)
呼び出しが正しく返されると、特にストリーミング中のオーディオ/ビデオの場合、実際のシーク操作が完了するまでに時間がかかる場合があります。実際のシーク操作が完了すると、内部プレーヤー エンジンはユーザーが指定した OnSeekComplete.onSeekComplete()
もし OnSeekCompleteListener
経由で事前に登録されています setOnSeekCompleteListener(OnSeekCompleteListener)
。その点に注意してください seekTo(int)
他の状態でも呼び出すことができます。 Prepared
, Paused
そして PlaybackCompleted
州。
このデータはすべてここでカバーされています。 http://developer.android.com/reference/android/media/MediaPlayer.html実は直接引用させていただきました。
発生したエラーは、 OnErrorListener()
.
詳細については、 OnErrorListener()
ここ:
http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html
エラー リスナーでは次のことを行います。
- エラーを受け取ります。
- エラーの種類を特定します。
- エラーを処理して、クラッシュせずに状況を修正します。