La clase MediaPlayer
La reproducción multimedia en Android se lleva a cabo principalmente por medio de la claseMediaPlayer. Veremos a continuación las características más importantes de esta clase y cómo podemos sacarle provecho.
Un objeto MediaPlayer va a poder pasar por gran variedad de estados: inicializados sus recursos (initialized), preparando la reproducción (preparing), preparado para reproducir (prepared), reproduciendo (started), en pausa (paused), parado (stopped), reproducción completada (playback completed), finalizado (end) y con error (error). Resulta importante conocer en qué estado se encuentra dado que muchos de los métodos solo pueden ser llamados desde ciertos estados. Por ejemplo, no podemos ponerlo en reproducción (método start()) sino está en estado preparado. O no podremos ponerlo en pausa (pause()), si está parado. Si llamamos a un método no admitido para un determinado estado se producirá un error de ejecución.
La siguiente tabla permite conocer los métodos que podemos invocar desde cada uno de los estados y cuál es el nuevo estado al que iremos tras invocarlo. Existen dos tipos de métodos, los que no están subrayados representan métodos llamados de forma síncrona desde nuestro código, mientras que los que están subrayados representan métodos llamados de forma asíncrona por el sistema.
Estado salida |
Estado entrada |
|||||||
Idle |
Initialized |
Preparing |
Prepared |
Started |
Paused |
Stopped |
Playback Completed |
|
Initialized |
setDataSource |
|
|
|
|
|
|
|
Preparing |
|
prepareAsync |
|
|
|
|
prepareAsync |
|
Prepared |
|
prepare |
onPrepared |
seekTo |
|
|
prepare |
|
Started |
|
|
|
start |
seekTo |
start |
|
start |
Paused |
|
|
|
|
pause |
seekTo |
|
|
Stopped |
|
|
|
stop |
stop |
stop |
stop |
stop |
Playback Completed |
|
|
|
|
onCompletion |
|
|
seekTo |
End |
Release |
release |
release |
release |
release |
release |
release |
release |
Error |
onError |
onError |
onError |
onError |
onError |
onError |
onError |
onError |
Tabla 6: Transiciones entre estados de la clase MediaPlayer