PDA

Ver la Versión Completa : [ CONSULTA ] Obtener URI de recursos en Raw


vzk91
20/04/13, 14:20:07
Hola,

Vereis tengo un problema que no se como afrontarlo y por mas que busco solo encuentro cosas confusas.... Yo tengo en mi aplicación una carpeta /res/raw/ donde almaceno una serie de sonidos en mp3. Estos sonidos los intento reproducir de esta manera, por ejemplo:

MediaPlayer mp = MediaPlayer.create(Ficha.this, R.raw.Sonido1);El problema es que el archivo que quiero reproducir necesito pasarselo por una variable, para que la misma función pueda reproducir varios archivos. viendolo en el codigo seria algo asi:

reproductor("Sonido1");
//reproductor("Sonido2");
//reproductor("Sonido3");

public void reproductor(String nombreSonido){
MediaPlayer mp = MediaPlayer.create(Ficha.this, nombreSonido);
mp.start();
}Algo asi seria lo que quiero hacer, pero MediaPlayer.create solo acepta como segundo parametro una URI y no se como obtener la uri del archivo que quiera para pasarsela.

un saludo

mocelet
20/04/13, 14:23:38
En el ejemplo que dices no es una URI, es un int http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context, int)

vzk91
20/04/13, 14:48:41
En el ejemplo que dices no es una URI, es un int http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context, int)

Si te fijas, justo debajo del metodo que me has citado, esta la otra forma de usarlo que es la que trato de usar:

public static MediaPlayer (http://developer.android.com/reference/android/media/MediaPlayer.html) create (Context (http://developer.android.com/reference/android/content/Context.html) context, Uri (http://developer.android.com/reference/android/net/Uri.html) uri)

mocelet
20/04/13, 14:55:20
Ya, un mismo método puede tener varios parámetros aceptados. La pregunta es para qué quieres usar la Uri si tus sonidos están en el directorio raw y tienes que usar el identificador en cualquier caso.

En vez de String usa int, y te defines unas cuantas variables del tipo:

final static int SONIDO_FULANITO = R.raw.loquesea
final static int SONIDO_PEPITO = R.raw.otro

y así solo tienes que llamar a reproductor(SONIDO_FULANITO)

vzk91
20/04/13, 15:02:06
Ya, un mismo método puede tener varios parámetros aceptados. La pregunta es para qué quieres usar la Uri si tus sonidos están en el directorio raw y tienes que usar el identificador en cualquier caso.

En vez de String usa int, y te defines unas cuantas variables del tipo:

final static int SONIDO_FULANITO = R.raw.loquesea
final static int SONIDO_PEPITO = R.raw.otro

y así solo tienes que llamar a reproductor(SONIDO_FULANITO)


Perfectisimo, ya he logrado solucionarlo de esa manera.... la verdad que unicamente trataba de usar las Uri porque era de lo único que habia encontrado una documentación viable, no habia pensado en usar el resid.

En fin, tema solucionado !! Muchas gracias por la ayuda.

Un saludo