MediaPlayer.setDataSource (String) no funciona con archivos locales
Puedo reproducir un mp3 local si uso el método estático MediaPlayer.create (contexto, id) pero no funciona si uso el método no estático MediaPlayer.setDataSource (String). Lo que sucede es que obtengo una excepción síncrona cuando llamo a MediaPlayer.prepare ():
prepare exceptionjava.io.IOException: Prepare failed.: status=0x1
Aquí está mi código (registro omitido):
String filename = "android.resource://" + this.getPackageName() + "/raw/test0";
mp = new MediaPlayer();
try { mp.setDataSource(filename); } catch (Exception e) {}
try { mp.prepare(); } catch (Exception e) {}
mp.start();
Tenga en cuenta que no recibo errores sobre el archivo no encontrado ni nada. El nombre completo del archivo es test0.mp3 y lo coloco en el directorio / res / raw / en Eclipse.
Supongo que estoy configurando la ruta de forma incorrecta, pero todos los ejemplos que encuentro en línea usan la versión FileDescriptor de setDataPath en lugar de la versión String de setDataPath.
EDITAR: También puedo reproducir un mp3 local si uso el método MediaPlayer.setDataSource (FileDescriptor) y coloco los archivos en el directorio / assets / en Eclipse.
EDITAR # 2: acepté la respuesta de que esto no es posible, pero luego me di cuenta de que la biblioteca que estoy usando (openFrameworks) en realidad usa el método String para cargar un archivo. Mira aquí: