2012-10-02 2 views
0
가끔 IllegalStateException이 MediaPlayer.SeekTo (int)를 던져

MediaPlayer를이 서비스 및 호출이 같은 SeekTo (INT)에서 실행 :MediaPlayer.SeekTo (INT)는 IllegalStateException이를 던졌습니다

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

왜 첫째로'! (value <= -1)'를 사용하겠습니까? 기본적으로'(value> = 0) '과 같습니다 - 죄송 합니다만, 이것은 매우 이상한 일을하는 것처럼 보입니다. 둘째,'MediaPlayer'와'seekTo (...)'메소드에 대한 문서를 확인 했습니까? Idle, Initialized, Stopped 또는 Error 상태 인 경우 예외가 발생합니다. http://developer.android.com/reference/android/media/MediaPlayer.html#Valid_and_Invalid_States – Squonk

답변

1

IllegalStateExceptionprepare(), prepareAsync() 또는 오버로드 된 setDataSource 메서드 중 하나를 잘못된 상태로 호출하는 등의 프로그래밍 오류를 방지하기 위해 throw됩니다.

다른 상태로 prepare() 또는 prepareAsync()이 호출되면 IllegalStateException이 발생합니다.

seekTo(int) 호출이 올바른 방법으로 반환되지만 실제 검색 작업이 완료 될 때까지, 특히 오디오/비디오가 스트리밍되는 데 시간이 오래 걸릴 수 있습니다. 실제 검색 작업이 완료되면 OnSeekCompleteListener이 사전에 setOnSeekCompleteListener(OnSeekCompleteListener)을 통해 등록 된 경우 내부 플레이어 엔진이 OnSeekComplete.onSeekComplete() 사용자에게 호출합니다. Prepared, PausedPlaybackCompleted과 같은 다른 주에서도 seekTo(int)을 호출 할 수 있습니다.

이 데이터는 모두 여기에서 다룹니다. http://developer.android.com/reference/android/media/MediaPlayer.html 사실 직접 인용했습니다.

OnErrorListener()을 사용하여 발생한 오류를 처리 할 수 ​​있어야합니다.

당신은 여기 OnErrorListener()에 대한 자세한 내용을 확인할 수 있습니다

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

당신 것 오류 리스너에서 :

  1. 오류를받습니다.
  2. 오류 유형을 결정하십시오.
  3. 충돌을 일으키지 않고 상황을 바로 잡기 위해 오류를 처리하십시오.