Bienvenidos sean a este post, hoy hablaremos sobre la clase MediaPlayer la cual es la encargada mayoritariamente de reproducir todos nuestros contenidos multimedia, la ventaja de esta clase es que nos permite tener varios estados de la misma y estos son:

Anuncios
  • initialized, iniciados sus recursos
  • preparing, preparando la reproduccion
  • prepared, preparada la reproduccion
  • started, reproduccion iniciada
  • paused, en pausa
  • stopped, parado
  • playback completed, reproduccion completada
  • end, finalizada
  • error, ocurrio un error

Como pueden ver tenemos una gran variedad de estados para poder manipular nuestro contenido multimedia, para utilizarlos y obtener una salida acorde de lo que deseamos seria de este estilo:

  • Si la clase esta inactiva, necesitariamos usar el setDataSource para pasar al estado initialized
  • Con el estado initialized, ejecutamos el metodo prepareAsync para pasar al estado preparing
  • Con el estado preparing y el metodo onPrepared pasaria al estado prepared
  • Con el estado prepared y el metodo start pasariamos al estado started y comenzaria la reproduccion

Esto es un simple ejemplo donde podemos ver algunos metodos que son sincronicos con el codigo como setDataSource, prepareAsync, start y luego tenemos unos asincronicos como onPrepared que solo esperan a que se cumpla un estado para pasar a otro en lugar a ayudar a lograr ese y dispararlo.
Una forma de poder reproducir un contenido multimedia se puede hacer de dos formas: o bien guardando el contenido como un recurso o yendo a una ubicacion para ejecutarlo, veamos el primer caso y este deberia hacerse de la siguiente forma:

  • Abrir algun proyecto o crearlo
  • Dentro de este proyecto crear una nueva carpeta dentro de los recursos res, en este caso llamado raw
  • Dentro de este recurso guardaremos un archivo, por ejemplo uno llamado audio.mp3
  • Luego agregamos la siguiente linea en nuestro proyecto: MediaPlayer mp = MediaPlayer.create(this,R,raw.audio);
  • Seguida de la linea: mp.start();
  • Esta ultima linea comenzara a reproducirlo, tal como hicimos al agregar musica a la app Asteroides
Anuncios

Este serian los pasos para reproducir un contenido dentro de nuestro proyecto, es decir dentro del archivo .apk pero si nosotros necesitamos reproducir un archivo externo deberemos usar un codigo similar a este:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource("Ruta al archivo");
mp.prepare();
mp.start();

Como pueden ver aca debemos decirle donde esta ubicado nuestro archivo, luego debemos usar el metodo prepare() para inicializar nuestra clase y por ultimo con start() comenzaremos, esto es debido a que el archivo al estar fuera de nuestra app primero debe estar seguro que el mismo existe y debe estar listo para ser reproducida, en cambio cuando esta dentro de la app ya conoce el estado del mismo y puede usarlo sin problema, esta es una gran ventaja pero cual es el inconveniente? Facil, esto incrementara el tamaño de nuestra app innecesariamente y tambien sobrecargando la memoria innecesariamente para un reproductor multimedia, no asi para un juego, en cambio con el otro metodo podremos tener mas variedad y dinamismo para hacerlo pero obviamente en un juego no funcionaria porque necesitariamos copiar mas archivos aparte del .apk, por eso cada uno de las formas tiene sus pros y contras.
Les voy a adjuntar un archivo con la tabla de los estados de entrada, el metodo y el estado de salida obtenido, en formato de Excel para que sea mas util:

Anuncios

En resumen, hoy hemos visto un poco como trabaja la clase MediaPlayer, sus estados, como pasar de un estado a otro, como puede ser utilizado dentro de nuestro proyecto como un recurso mas, como obtenerlo desde afuera para su reproduccion, espero les haya sido util sigueme en Twitter, Facebook o Google+ para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00