Desde el momento en que crea la instancia de MediaPlayer hasta el momento en que la cierra (vuelve a utilizar o elimina), esta instancia completa una serie de transiciones entre estados.
Algunas operaciones solo se permiten cuando el reproductor está en un estado concreto. Por ejemplo, no se permite llamar a play
en IDLE
. Puede llamar a este estado solo después de que el reproductor alcance el estado PREPARED
.
Para trabajar con estados:
Puede recuperar el estado actual del objeto MediaPlayer
con MediaPlayer.getStatus
.
PlayerState getStatus() throws IllegalStateException;
La lista de estados se define en MediaPlayer.PlayerState
.
Diagrama de transición de estado para el ciclo vital de una instancia MediaPlayer
:
En la tabla siguiente se proporcionan detalles adicionales:
MediaPlayer.PlayerState | Ocurre cuando |
---|---|
IDLE | La aplicación solicitó un nuevo reproductor de contenidos llamando a DefaultMediaPlayer.create . El reproductor recién creado está esperando a que especifique un elemento del reproductor de contenidos. Este es el estado inicial del reproductor de medios. |
INICIALIZACIÓN | La aplicación denominada MediaPlayer.replaceCurrentItem y se está cargando el reproductor de medios. |
INICIALIZADO | TVSDK estableció correctamente el elemento del reproductor de medios. |
PREPARACIÓN | La aplicación se llama MediaPlayer.prepareToPlay . El reproductor de contenidos está cargando el elemento del reproductor de contenidos y los recursos asociados. Sugerencia: Puede que se produzca algún almacenamiento en búfer del contenido principal. TVSDK está preparando el flujo de medios e intentando realizar la resolución de anuncios y la inserción de anuncios, (si está habilitada). Sugerencia: Para establecer el tiempo de inicio en un valor distinto de cero, llame a prepareToPlay(startTime) con el tiempo en milisegundos. |
PREPARADO | El contenido está preparado y se han insertado anuncios en la cronología, o el procedimiento de publicidad ha fallado. Puede comenzar el almacenamiento en búfer o la reproducción. |
REPRODUCCIÓN | La aplicación ha llamado play , por lo que TVSDK está intentando reproducir el vídeo. Puede que se produzca algún almacenamiento en búfer antes de que se reproduzca realmente el vídeo. |
EN PAUSA | A medida que la aplicación reproduce y pone en pausa el contenido, el reproductor de contenidos se mueve entre este estado y REPRODUCIENDO. |
SUSPENDIDO | La aplicación se alejó de la reproducción, apagó el dispositivo o cambió de aplicación mientras el reproductor se estaba reproduciendo o pausando. Se ha suspendido el reproductor de contenidos y se han liberado recursos. Para continuar, restaure el reproductor multimedia. |
COMPLETAR | El reproductor ha llegado al final de la emisión y la reproducción se ha detenido. |
PUBLICADO | La aplicación ha lanzado el reproductor de contenido, que también libera todos los recursos asociados. Ya no se puede usar esta instancia |
ERROR | Error durante el proceso. Un error también podría afectar a lo que puede hacer la aplicación a continuación. |
Puede utilizar el estado para proporcionar comentarios sobre el proceso (por ejemplo, un control de número mientras espera el siguiente cambio de estado) o para dar el siguiente paso en la reproducción del contenido, como esperar al estado adecuado antes de llamar al siguiente método.
Por ejemplo:
@Override
public void onStateChanged(MediaPlayer.PlayerState state,
MediaPlayerNotification notification) {
switch (state) {
// It is recommended that you call prepareToPlay() after receiving
// the INITIALIZED state.
case INITIALIZED:
_mediaPlayer.prepareToPlay();
break;
case PREPARING:
showBufferingSpinner();
break;
case PREPARED:
hideBufferingSpinner();
.....
}
}