Problemas con MediaPlayer, recursos en bruto, detener e iniciar

Soy nuevo en el desarrollo de Android y tengo una pregunta / problema.

Estoy jugando con la clase MediaPlayer para reproducir algunos sonidos / música. Estoy jugando recursos en bruto (res/raw) y parece un poco fácil.

Para reproducir un recurso sin procesar, el MediaPlayer debe inicializarse así:


MediaPlayer mp = MediaPlayer.create(appContext, R.raw.song);
mp.start();

Hasta aquí no hay problema. Se reproduce el sonido y todo funciona bien. Mi problema aparece cuando quiero agregar más opciones a mi aplicación. Específicamente cuando agrego el botón / opción "Detener".

Básicamente, lo que quiero hacer es ... cuando presiono "Stop", la música se detiene. Y cuando presiono "Inicio", la canción / sonido comienza de nuevo. (Bastante básico!)

Para detener el reproductor multimedia, solo tiene que llamarstop(). Pero para reproducir el sonido nuevamente, el reproductor multimedia debe reiniciarse y prepararse.


mp.reset();
mp.setDataSource(params);
mp.prepare();

El problema es que el métodosetDataSource() solo acepta como parámetros una ruta de archivo, URI de proveedor de contenido, ruta de URL de medios de transmisión o descriptor de archivo.

Entonces, dado que este método no acepta un identificador de recurso, no sé cómo configurar la fuente de datos para llamarprepare(). Además, no entiendo por qué no puede usar un identificador de recursos para establecer la fuente de datos, pero puede usar un identificador de recursos al inicializar MediaPlayer.

Supongo que me falta algo. Me pregunto si estoy mezclando conceptos y el método.stop() no tiene que ser llamado en el botón "Parar". ¿Alguna ayuda?

¡¡¡Gracias por adelantado!!!

Respuestas a la pregunta(6)

Su respuesta a la pregunta