MediaPlayer.SeekTo(int) lanza IllegalStateException
-
12-12-2019 - |
Pregunta
A veces obtengo ilegalStateException lanzado por MediaPlayer.seekto (int) El MediaPlayer se ejecuta en un servicio, y una llamada The Seekto (int) como esta:
public void seekTo(int value)
{
if (mp != null && !(value <= -1)) {
mp.seekTo(value);
}
}
Solución
IllegalStateException
se lanza para evitar errores de programación como llamar prepare()
, prepareAsync()
, o uno de los sobrecargados setDataSource
métodos en un estado no válido.
Un IllegalStateException
se tira si prepare()
o prepareAsync()
se llama en cualquier otro estado.
Aunque el asincrónico seekTo(int)
Si la llamada regresa de la manera correcta, la operación de búsqueda real puede tardar un poco en finalizar, especialmente para la transmisión de audio/vídeo.Cuando se completa la operación de búsqueda real, el motor del reproductor interno llama a un usuario proporcionado OnSeekComplete.onSeekComplete()
Si una OnSeekCompleteListener
ha sido registrado previamente mediante setOnSeekCompleteListener(OnSeekCompleteListener)
.Tenga en cuenta que seekTo(int)
También se puede llamar en otros estados, como Prepared
, Paused
y PlaybackCompleted
estado.
Todos estos datos están cubiertos aquí: http://developer.android.com/reference/android/media/MediaPlayer.htmlDe hecho lo cité directamente.
Debería poder manejar cualquier error encontrado utilizando un OnErrorListener()
.
Puedes encontrar más sobre un OnErrorListener()
aquí:
http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html
En el detector de errores podrás:
- Recibe el error.
- Determinar el tipo de error.
- Maneje el error para rectificar la situación sin fallar.